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

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

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

Непрочитанное сообщение BugsDigger » 10 апр 2021, 16:24

Но опять же - это только тест, в реале м.б. по-другому.

Насчет повышения скорости реакции на длинном ТФ - а кто же мещает торговым сделать короткий, а принимать решение, посчитав при его срабатывании нужный длинный? Все же я бы сказал, что логичнее период срабатывания делать по торговому ТФ, т.е. в соответствии с явно выраженным желанием и ожиданиями пользователя.

Хорошо бы oxi покомментировал ...

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

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

Непрочитанное сообщение Jude_Masson » 10 апр 2021, 19:14

Заметил странное поведение CurrentPLper()

Вот код, вроде ничего сложного.
Открываем позицию. Ставим стоп 1 процент. Если выручка стала больше .4 процентов переставляем стоп AverPrice()+100.

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

function Initialize()
{
   StrategyName = "Inputs02";
   AddInput("Input1", Inputs.Candle, 5, true, "SiM1=ФОРТС");
   AddInput("Input2", Inputs.Candle, 1, false, "SiM1=ФОРТС");
}

function OnUpdate()
{
   var I1 = Input1;
   var I2 = Input2;

   if ((I1.Close[0] > I1.High[1]) && (CurrentPosition() == 0))
      {
      EnterLong();

      WriteLine("c:\\temp\\inputs.txt", String.Format("BUY: Input1: BarDate:{0} BarTime:{1}",  Input1.BarDate(), Input1.BarTime()));     
      StopLoss(1, SignalPriceType.DeltaInPercentFromAveragePrice);
   }

   if ( (CurrentPLper() > 0.4) && (CurrentPosition() > 0) )
   {
      CancelStopLoss();
      StopLoss(AverPrice()+100, SignalPriceType.Price);
      WriteLine("c:\\temp\\inputs.txt", String.Format("BUY: Input2: BarDate:{0} BarTime:{1};{2};{3};{4}",  Input2.BarDate(), Input2.BarTime(), CurrentPLper(), AverPrice(), Input1.Close[0]));
   }

}

И теперь в файле логе видим такую картину.
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:35:00;0,5719;77640;77617
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:15:00
Где полпроцента прибыли теперь хотя открытие и цена одинаковые. В результате чего срабатывает правило и переставляется стоп +100.
Подскажите это я что то не понимаю или тут какая то ошибка?
п.с. Если закомментировать второй инструмент, то лог такой:
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:05:00;0,4019;77640;77952
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:10:00;0,5023;77640;78030
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:15:00;0,4946;77640;78024
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:20:00;0,4521;77640;77991
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:25:00;0,4341;77640;77977
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:30:00;0,4031;77640;77953
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:35:00;0,4521;77640;77991
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:40:00;0,4894;77640;78020
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:45:00;0,4122;77640;77960
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:11:50:00;0,4392;77640;77981
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:13:55:00;0,4199;77640;77966
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:15:05:00

То есть всё работает корректно.

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

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

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

Что-то перепутано. В коде видно Input2 вывод (BUY: Input2: BarDate:), в логах ниже везде Input1
В строчке, в коде, в тексте Input2 а передаются значения от Input2 и Input1.Close (последний):

Input2.BarDate(), Input2.BarTime(), CurrentPLper(), AverPrice(), Input1.Close[0]

Что-то логи не соответствуют коду.

Ну а по поводу правила второго (по перестановке стопа).

В том и дело что не сработает, т.к. ТФ не торговый (M5) а минутный будет пытаться отправить (до 5 раз). Он кидает в очередь и выполняет только по торговому инструменту когда придёт бар. Если 5 раз (в данном случае) послать ему CanceStopLoss(); StopLoss(); , то как я понимаю, исполнится только последняя, а остальные проигнорируются.
никогда такого не было и вот опять

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

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

Непрочитанное сообщение Jude_Masson » 10 апр 2021, 20:12

Извините на путал, но вот как задумывал.

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

function Initialize()
{
   StrategyName = "Inputs01";
   AddInput("Input1", Inputs.Candle, 5, true, "SiM1=ФОРТС");
  AddInput("Input2", Inputs.Candle, 1, false, "SiM1=ФОРТС");
}

function OnUpdate()
{
   var I1 = Input1;
 var I2 = Input2;

   if ((I1.Close[0] > I1.High[1]) && (CurrentPosition() == 0))
      {
      EnterLong();

      WriteLine("c:\\temp\\inputs.txt", String.Format("BUY: Input1: BarDate:{0} BarTime:{1}",  Input1.BarDate(), Input1.BarTime()));     
      StopLoss(1, SignalPriceType.DeltaInPercentFromAveragePrice);
   }

   if ( (CurrentPLper() > 0.4) && (CurrentPosition() > 0) )
   {
      CancelStopLoss();
      StopLoss(AverPrice()+100, SignalPriceType.Price);
      WriteLine("c:\\temp\\inputs.txt", String.Format("BUY: Input1: BarDate:{0} BarTime:{1};{2};{3};{4}",  Input1.BarDate(), Input1.BarTime(), CurrentPLper(), AverPrice(), Input1.Close[0]));
   }

}


Везде используется 5 минут, минута просто есть.

BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:35:00;0,5719;77640;77617
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:15:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:15:00;0,6769;77559;77563
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:15:00;0,6769;77559;77563
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:15:00;0,6769;77559;77563
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:15:00;0,6769;77559;77563
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:20:00;0,6769;77559;77582
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:20:00

Меняем Input2 на 15 минутный таймфрейм

BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:35:00;0,5719;77640;77617
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:15:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:20:00;0,6769;77559;77582
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:25:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:08:30:00;0,6017;77617;77580
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:09:15:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:09:20:00;0,7276;77520;77542
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:09:25:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:09:30:00;0,6535;77577;77598
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:09:35:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:09:40:00;0,5253;77676;77786
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:10:20:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:10:25:00;0,59;77626;77706
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:10:30:00

Файл лог изменился, хотя ни 1 минутый ни 15 минутый в код не используется. И при цене открытия сделки 77640 а цена закрытия 77617 прибыль показывает 0,57 хотя 0,57 это 442,548 пунктов.

То есть надо исполнять на новом баре ряда 1
В том и дело что не сработает, т.к. ТФ не торговый (M5) а минутный будет пытаться отправить (до 5 раз). Он кидает в очередь и выполняет только по торговому инструменту когда придёт бар. Если 5 раз (в данном случае) послать ему CanceStopLoss(); StopLoss(); , то как я понимаю, исполнится только последняя, а остальные проигнорируются.


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

   if ( Input1.NewBar && (CurrentPLper() > 0.4) && (CurrentPosition() > 0) )

Попробовал вот так ну явно, что то я наглупил.

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

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

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

Jude_Masson писал(а):Меняем Input2 на 15 минутный таймфрейм

...

Файл лог изменился, хотя ни 1 минутый ни 15 минутый в код не используется. И при цене открытия сделки 77640 а цена закрытия 77617 прибыль показывает 0,57 хотя 0,57 это 442,548 пунктов.



похоже берет, как ранее я писал, минимальный ТФ и по нему OnUpdate() приходят.
никогда такого не было и вот опять

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

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

Непрочитанное сообщение Jude_Masson » 10 апр 2021, 21:23

Да это мы уже выяснили на первой странице, я удивляюсь странным значением currentPLper вы ведь писали в данной теме ищем баги.
viewtopic.php?f=5&t=1101&p=6094#p6094
И вот похоже первый нашли или я что то не так понимаю.

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

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

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

Да, с CurrentPLper() какие-то странности, там даже если на H-L свечи смотреть то нет столько, там:

77649 - 77457 = 192

Inputs-05.png
Inputs-05.png (20.23 КБ) 12894 просмотра
никогда такого не было и вот опять

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

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

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

Попробовал код выше, в лог пишет только одну строку

BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00

если тест делать только за 8

если с 8 по 9 то выдает те же значения

BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:35:00;0,5719;77640;77640

добавил вывод CurrentPL() за CurrentPLper() и получил следующее:

BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;2220;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;2220;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;2220;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;2220;77640;77640
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:35:00;0,5719;2220;77640;77640
никогда такого не было и вот опять

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

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

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

Спасибо, теперь я точно уверен, что проблема не во мне.

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

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

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

Добавил вывод Input2.Close в конце и разницу между Input2.Close и Input1.Close

BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;2220;77640;77640;77599;-41
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;2220;77640;77640;77639;-1
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;2220;77640;77640;77606;-34
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:30:00;0,5719;2220;77640;77640;77609;-31
BUY: Input1: BarDate:08.04.2021 0:00:00 BarTime:07:35:00;0,5719;2220;77640;77617;77617;0

нет там 2220 и 0,5719%

как будто перемножило несколько раз, но непонятно что.

вот 2220 можно вычислить, это

%0.5719 от 77640 (AverPrice()) = 444,02316 * 5 = 2220,1158 :)

красиво!

откуда взялся 0.5719 не понял.
никогда такого не было и вот опять


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

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

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