Каналы > PriceChannel – ценовой канал или Канал Дончяна

Orange2000
Сообщения: 47
Зарегистрирован: 13 мар 2019, 00:45
Благодарил (а): 37 раз
Поблагодарили: 1 раз

Re: PriceChannel – ценовой канал или Канал Дончяна

Непрочитанное сообщение Orange2000 » 24 апр 2019, 10:08

Плюс еще рекомендации от Дмитрия Еремина (у меня было не так в коде):

1. Правила на открытие позиции должны стоять первыми

2. Правила закрытия позиции желательно добавить проверку на наличие позиции

abelok
Сообщения: 23
Зарегистрирован: 20 ноя 2016, 07:43
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: PriceChannel – ценовой канал или Канал Дончяна

Непрочитанное сообщение abelok » 27 апр 2019, 14:55

Попробовал откатить.
Но! В файлохранилище вместо версии 1224 фактически грузится 1226.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: PriceChannel – ценовой канал или Канал Дончяна

Непрочитанное сообщение evge » 27 апр 2019, 16:42

abelok писал(а):Попробовал откатить.
Но! В файлохранилище вместо версии 1224 фактически грузится 1226.


спасибо, переименовал файл.
никогда такого не было и вот опять

Orange2000
Сообщения: 47
Зарегистрирован: 13 мар 2019, 00:45
Благодарил (а): 37 раз
Поблагодарили: 1 раз

Re: PriceChannel – ценовой канал или Канал Дончяна

Непрочитанное сообщение Orange2000 » 03 май 2019, 13:18

Код: Выделить всё

function Initialize()
{
   StrategyName = "don2";
   AddParameter("P1", 15, "", 1);
   AddInput("Input1", Inputs.Candle, 10, true, "");
   LongLimit = 0;
   ShortLimit = 0;
   UseClosedBar = false;
   LiveBarTimeout = 1; // Вызывать не чаще чем раз в 10 секунд
}
 
function OnUpdate()
{
 
   /// ПРАВИЛО 1
   if ( (Input1.High[0] > MY.don(Input1, P1).GetValue("Upper", 0)) )
   {
      EnterLong();
   }
 
   /// ПРАВИЛО 3
   if ( (Input1.Low[0] < MY.don(Input1, P1).GetValue("Lower", 0)) )
   {
      EnterShort();
   }
 
   /// ПРАВИЛО 2
   if ( (Input1.Low[0] < MY.don(Input1, P1).GetValue("Midl", 0)) && CurrentPosition() > 0 )
   {
      CloseLong();
   }
 
 
   /// ПРАВИЛО 4
   if ( (Input1.High[0] > MY.don(Input1, P1).GetValue("Midl", 0)) && CurrentPosition() < 0)
   {
      CloseShort();
   }
 
   if ( ( RealizedPL() + CurrentPL() ) < -9000.0 )
   {
      Stop();
   }
 
ShowMessage(string.Format("close={0} high={1} low={2}", Input1.Close[0], Input1.High[0], Input1.Low[0]));
 
 
}


вот код который работает внутри бара.
Но нужно доработать код.
Начинаем с одного лота. После 2 подряд сделок в минус, открываем уже 2 лота, если третья в минус, то 4ая сделка уже 3 лота. Если опять минус, то так же 3 лота на 5ой сделке. После чего сброс на 1 лот при любом раскладе.
Заранее благодарен


Вернуться в «Каналы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей