Стратегии и роботы > Несколько входных рядов в стратегиях
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: Несколько входных рядов в стратегиях
В новой версии АД4 (АИ) 4.0.3032.1724, по информации из обновления, некорректный ПУ исправили. Пока не проверял.
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: Несколько входных рядов в стратегиях
С номером версии в истории явно какой-то баг, старая версия выше новой:
никогда такого не было и вот опять
-
- Сообщения: 30
- Зарегистрирован: 03 окт 2020, 22:38
- Благодарил (а): 12 раз
- Поблагодарили: 7 раз
Re: Несколько входных рядов в стратегиях
Здравствуйте.
Если будет где то опечатка и не точность, простите мою не внимательность. Постараюсь без ошибок.
Теперь к делу, вроде бы да как нашёл новый баг, забегая на перёд проблема с 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 - строчка логов.
В этой свече и следующей цены закрытия с нужным 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.
Если будет где то опечатка и не точность, простите мою не внимательность. Постараюсь без ошибок.
Теперь к делу, вроде бы да как нашёл новый баг, забегая на перёд проблема с 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.
-
- Сообщения: 535
- Зарегистрирован: 11 ноя 2018, 17:11
- Благодарил (а): 21 раз
- Поблагодарили: 92 раза
Re: Несколько входных рядов в стратегиях
В тестировании всегда все действия только по закрытой свечке: промежуточные данные просто неоткуда взять.
Вы не сказали, какие (разные) ТФ вы используете в роботе. Похоже, что вы как раз наткнулись на то, что в реале используются данные незакрытой "живой" свечи вспомогательного (неторгового) ТФ, а в тестировании такая свеча вообще недоступна.
Вы не сказали, какие (разные) ТФ вы используете в роботе. Похоже, что вы как раз наткнулись на то, что в реале используются данные незакрытой "живой" свечи вспомогательного (неторгового) ТФ, а в тестировании такая свеча вообще недоступна.
-
- Сообщения: 30
- Зарегистрирован: 03 окт 2020, 22:38
- Благодарил (а): 12 раз
- Поблагодарили: 7 раз
Re: Несколько входных рядов в стратегиях
У меня только один инструмент с одним ТФ. Второго входного ряда нету, всё по старинке.
п.с. В шапке робота точно нету UseClosedBar, может теперь надо его писать с true. <---- повторю.
п.с. В шапке робота точно нету UseClosedBar, может теперь надо его писать с true. <---- повторю.
-
- Сообщения: 30
- Зарегистрирован: 03 окт 2020, 22:38
- Благодарил (а): 12 раз
- Поблагодарили: 7 раз
Re: Несколько входных рядов в стратегиях
Написал такого робота, протестировал советником, роботом. Ошибка не повторилась. Остаётся только принять что это была разовая акция и ошибка не повторяется и не тестируется.
Код: Выделить всё
/**
**/
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()));
}
}
Вернуться в «Стратегии и роботы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей