Стратегии и роботы > Несколько входных рядов в стратегиях

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

Re: Несколько входных рядов в стратегиях

Непрочитанное сообщение evge » 22 апр 2021, 06:26

В новой версии АД4 (АИ) 4.0.3032.1724, по информации из обновления, некорректный ПУ исправили. Пока не проверял.
никогда такого не было и вот опять

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

Re: Несколько входных рядов в стратегиях

Непрочитанное сообщение evge » 22 апр 2021, 10:42

С номером версии в истории явно какой-то баг, старая версия выше новой:

History-01.png
History-01.png (10.99 КБ) 10729 просмотров
никогда такого не было и вот опять

Jude_Masson
Сообщения: 30
Зарегистрирован: 03 окт 2020, 22:38
Благодарил (а): 12 раз
Поблагодарили: 7 раз

Re: Несколько входных рядов в стратегиях

Непрочитанное сообщение Jude_Masson » 05 май 2021, 11:34

Здравствуйте.
Если будет где то опечатка и не точность, простите мою не внимательность. Постараюсь без ошибок.
Теперь к делу, вроде бы да как нашёл новый баг, забегая на перёд проблема с CurrentPLper.
У меня есть робот, он пишет в файл лог свои действия (для анализа потом удобно) щас правда информации пока мало, но потом добавлю.
4 мая 2021 года SI инструмент таймфрейм 5 минут.
Stop Loss Enter Long 75416,0 75355,0 1 57,00 0,08 4 май 21 18:36 4 май 21 17:40
Это из файла операций в экселе. тут мы видим во сколько времени зашли, по какой цене.
В роботе у меня есть фиксация прибыли (поджимаем стопы) и происходит при 0.3 CurrentPLper до 0.08 что в принципе и произошло.
04.05.2021 0:00:00;18:10:00;75336;75593;75329;75575;TSL1 - строчка логов.

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

if (CurrentPosition() > 0 && (CurrentPLper() > Zero1)  && (LTRt < ((int)(AverPrice() + ((AverPrice()/100) * Stop1)))) )
{CancelStopLoss();   LTRt = (int) (AverPrice() + ((AverPrice()/100) * Stop1));   StopLoss(LTRt, SignalPriceType.Price);
WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "TSL1"));   
}

В этой свече и следующей цены закрытия с нужным CurrentPLper а именно 0.3 нету
От цены открытия 75355 + 0,3 процента = 75581 пункт цена закрытия была 75575 чего мало, а цена максимальная 75593.
Ну что ж, пусть будет так и теперь CurrentPLper будет считаться внутри свечи, а не по закрытию. Но при тестировании этого момента, тем же самым роботом. Стоп не передвигается.
Stop Loss Enter Long 75 325,00 75 357,00 1 -36,00 -0,05 4 май 21 23:05 4 май 21 17:40
Даже принимая во внимание, что в тестировании вход произошёл по другой цене .
От цены открытия 75357 + 0,3 процента = 75583 пункт.

Итог в тестированиях CurrentPLper считается от цены закрытия как и раньше, в жизни теперь внутри свечи.

п.с. В шапке робота точно нету UseClosedBar, может теперь надо его писать с true.

BugsDigger
Сообщения: 533
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 91 раз

Re: Несколько входных рядов в стратегиях

Непрочитанное сообщение BugsDigger » 05 май 2021, 13:42

В тестировании всегда все действия только по закрытой свечке: промежуточные данные просто неоткуда взять.

Вы не сказали, какие (разные) ТФ вы используете в роботе. Похоже, что вы как раз наткнулись на то, что в реале используются данные незакрытой "живой" свечи вспомогательного (неторгового) ТФ, а в тестировании такая свеча вообще недоступна.

Jude_Masson
Сообщения: 30
Зарегистрирован: 03 окт 2020, 22:38
Благодарил (а): 12 раз
Поблагодарили: 7 раз

Re: Несколько входных рядов в стратегиях

Непрочитанное сообщение Jude_Masson » 05 май 2021, 15:42

У меня только один инструмент с одним ТФ. Второго входного ряда нету, всё по старинке.

п.с. В шапке робота точно нету UseClosedBar, может теперь надо его писать с true. <---- повторю.

Jude_Masson
Сообщения: 30
Зарегистрирован: 03 окт 2020, 22:38
Благодарил (а): 12 раз
Поблагодарили: 7 раз

Re: Несколько входных рядов в стратегиях

Непрочитанное сообщение Jude_Masson » 05 май 2021, 16:12

Написал такого робота, протестировал советником, роботом. Ошибка не повторилась. Остаётся только принять что это была разовая акция и ошибка не повторяется и не тестируется.

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

/**

**/

function Initialize()
{
   StrategyName = "MyMTS65";
   AddParameter("P1", 0, "", 1);
   AddInput("Input1", Inputs.Candle, 5, true, "SiM1=ФОРТС");
   LongLimit = 1;
   ShortLimit = -1;
}

function OnUpdate()
{
var I1 = Input1;
if (CurrentPosition() > 0 && (CurrentPLper() > 0.06) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.06", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.08) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.08", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.1) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.1", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.12) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.12", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.14) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.14", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.16) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.16", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.18) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.18", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.2) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.2", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.22) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.22", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.24) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.24", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.26) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.26", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.28) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.28", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.3) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.3", CurrentPLper()));   
   }
if (CurrentPosition() > 0 && (CurrentPLper() > 0.32) )
   {
   WriteLine("C:\\TEMP\\VRat1.txt", String.Format("{0};{1};{2};{3};{4};{5};{6};{7}", I1.BarDate(), I1.BarTime(), I1.Open[0], I1.High[0], I1.Low[0], I1.Close[0], "0.32", CurrentPLper()));   
   }

}



Вернуться в «Стратегии и роботы»

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

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