Плюс еще рекомендации от Дмитрия Еремина (у меня было не так в коде):
1.       Правила на открытие позиции должны стоять первыми
2.       Правила закрытия позиции желательно добавить проверку на наличие позиции
			
									
						Каналы > PriceChannel – ценовой канал или Канал Дончяна
- 
				Orange2000
- Сообщения: 47
- Зарегистрирован: 13 мар 2019, 00:45
- Благодарил (а): 37 раз
- Поблагодарили: 1 раз
- 
				abelok
- Сообщения: 23
- Зарегистрирован: 20 ноя 2016, 07:43
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
Re: PriceChannel – ценовой канал или Канал Дончяна
Попробовал откатить.
Но! В файлохранилище вместо версии 1224 фактически грузится 1226.
			
									
						Но! В файлохранилище вместо версии 1224 фактически грузится 1226.
- evge
- Администратор
- Сообщения: 1817
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 375 раз
- Контактная информация:
Re: PriceChannel – ценовой канал или Канал Дончяна
abelok писал(а):Попробовал откатить.
Но! В файлохранилище вместо версии 1224 фактически грузится 1226.
спасибо, переименовал файл.
никогда такого не было и вот опять
						- 
				Orange2000
- Сообщения: 47
- Зарегистрирован: 13 мар 2019, 00:45
- Благодарил (а): 37 раз
- Поблагодарили: 1 раз
Re: PriceChannel – ценовой канал или Канал Дончяна
Код: Выделить всё
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 гостей
