Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1233

Добавлено: Геннадий » 09 мар 2016, 15:37

Тема: Re: Робот не закрывает позицию по времени.

Текст сообщения:

Вы оказались совершенно правы насчет добавки условия проверки позиции. В моем варианте всё заработало чётко.
Но вот ваше второе предложение дало неоднозначный результат. При тестировании я взял участок графика, показанный ранее. Слева на графике результаты по вашему предложению, справа - мой старый вариант, но с добавлением предложенного вами условия проверки позиции. В вашем варианте (слева) стоп сработал раньше, чем -300. В моем варианте (справа) стоп не сработал (движение было по условию меньше -300) и получен профит +1000. Таким образом левый вариант "не добирает" стоп и профит, чаще открывает позиции. Почему так, не знаю.
Мой окончательный вариант:

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

/**Стратегия основана на определении моментов  пересечения сглаженной линии D SO и сигнальной линии SO (система "SO"). Особенности:
- сигнал на продажу выдается, если сглаженная линия D индикатора SO пересекает сигнальную линию SO сверху вниз;
- сигнал на закрытие шорта выдается при профите 1000, и при стопе -300;
- при тестировании цена сделки фиксируется как цена закрытия бара, на котором появился сигнал.
- в роботе заявка выставляется после закрытия бара, на котором появился сигнал.
Developed by GenGal;
Algorithm = ОСЦИЛЛЯТОР;**/

function Initialize()
{
   StrategyName = "GenGal_SQ_test3";
   AddParameter("PK", 37, "", 1);
   AddParameter("PD", 31, "", 1);
   AddParameter("Psig", 10, "", 1);
   AddInput("Input1", Inputs.Candle, 30, true, "SiH6=ФОРТС");
   LongLimit = 1;
   ShortLimit = -1;
}

function OnUpdate()
{
   /// ПРАВИЛО 1
   if ( (SO(Input1, PK, PD, Psig).GetValue("D", 0) < SO(Input1, PK, PD, Psig).GetValue("Signal", 0))&& CurrentPosition() == 0 )
   {
      EnterShort();
   }
/// ПРАВИЛО 2
   if ( ((Input1.Close  < (AverPrice()-1000)) && AverPrice() > 0))
   {
      CloseShort();
   }
/// ПРАВИЛО 3
   if ( ((Input1.Close  > (AverPrice()+300)) && AverPrice() > 0))
   {
      CloseShort();
   }
 }
Вложения
Ashampoo_Snap_2016.03.09_22h34m28s_001_.png