Trabalho concluído
![](https://c.mql5.com/i/avatar/avatar_na2.png)
![](https://c.mql5.com/i/avatar/avatar_na2.png)
Termos de Referência
Нужно исправить ошибки советника: поменять характеристики открытия у него отложенных ордеров и их закрытия по ТП.
Приношу заранее свои извинения за то, что мне придется долго описывать возникшие проблемы. Когда я буду готовить ТЗ на эту работу, то его текст, по отношению к этому, я существенно сокращу.
Я уже не в первый раз обращаюсь к Вам по поводу исправления этого советника, то таковы реальности, которые требуют его очередной правки.
Напоминаю, что мой советник - ночной, т.е. его торговая сессия каждый день начинается поздно вечером текущего дня (например, в 22:45 или 23:00) и заканчивается рано утром следующего дня (например, в 2:45,3:00). При переходе суток с 23:55 текущего дня до 1:00 (терминального времени следующего дня) резко возрастает спред всех валютных пар и реквоты (проскальзывание) при открытии (закрытии) сделок, а к 1:00 следующего дня спреды становятся более менее нормальными. Тестирование эти проблемы не отражает.
Используя данный советник на реальной торговле даже после его модификаций с вашей помощью, выясняются все новые его проблемы. Это вызвано тем, что 2 используемые мною для торговли пары резко в настоящее время увеличили свою волатильность в период с 0:00 до 1:00 следующего дня и эти проблемы проявились только сейчас, чего раньше не было.
Из-за высокой волатильности у меня уже несколько раз открывались ордера в период с 0:00 до 1:00 с огромным спредом и реальная цена такого открытия резко отличалась от того, что должен был по спецификации открыть советник. Также и при закрытии ордеров в период от 00:00 до 1:00 по ТП стала проявляться та же проблема – советник дает команду закрыть сделку по ТП, а из-за большого среда она закрывается не по тому ТП, что обозначен в спецификации сделки (т.е. с доходом) , а с большим убытком.
Т.е. подводя итог: чтобы исключить вышеуказанные проблемы надо запретить советнику открывать ордера и закрывать их по ТП в период с 00:00 до1:00 следующего дня.
В советнике есть функция «Время удержания отложенных ордеров торговой сессии».
При тестировании я, чтобы исключить открытие ордеров в период с 00:00 по 1:00 , для пары, которая открывает торговую сессию в 23:00, проставил «время удержания отложенных ордеров» 0:57 (в это время спред у валютных пар не сильно увеличен) и думал, что хоть проблема с неправильным открытием первого блока отложенных ордеров уйдет, но не тут-то было: советник, закрывая все отложенные ордера первого блока ордеров в 0:57 в это же время (т.е. в 0:57 повторно открывает блок отложенных ордеров на 57 минут, т.е. до 0:54 мин следующего дня ( т.е. дублирует блок отложенных ордеров, хотя в настройках у меня стоит, что советник может открывать только один блок отложенных ордеров).
Для справки: если время удержания отложенных ордеров переходит на следующий день, например, для если пары, которая открывается в 23:00, поставить время закрытия отложенных ордеров не в 0:57, а в 1:05, то никакого дублирования блока отложенных ордеров после закрытия первого блока отложенных ордеров не происходит.
Все это легко увидеть на тестировании – параметры тестирования для пары GBPCHF для таймфрейма М5 и спреда в настойках 20 я Вам привожу. Период тестирования возьмите с 2021.04.01 по 2021.02.26.
А. 1-я проблема, которую надо решить:
Нужно программно ликвидировать повторное открытие блока отложенных ордеров после закрытия первого блока отложенных ордеров, если в настройках стоит время закрытия первого блока отложенных ордеров в 23:57(по терминальному времени), т. е. в день начала торговой сессии.
Б. 2-я проблема, которую надо решить.
При закрытии ордеров по ТП в период с 00:00 по 1:00 следующего дня вместо закрытия их по ценам, прописанным в спецификации ордеров, из-за огромного спреда ордера закрываются не с доходом, а с огромным убытком.
Т.е. чтобы этого избежать, надо программо во временной период с 23:57(по терминальному времени) (для советника, который открывается в 23:00 это время будет прописано 0:57) до 1:00 (терминального времени) следующего дня отключить ТП у всех открытых ордеров. А в 1:00 по терминальному времени следующего дня советник должен будет снова прописать для данной валютной пары в колонке ТП те ТП для всех открытых ордеров, которые были прописаны при открытии торговой сессии.
Эту функцию надо прописать также, как сейчас в советнике прописана функция «время удержания отложенных ордеров торговой сессии», а именно: отсчет времени до временного выключения ТП и его повторного включения должен идти от момента начала текущей торговой сессии для конкретной валютной пары.
Например:
Если время включения советника текущей торговой сессии для конкретной валютной пары – 23:00, то время выключения всех ТП для открытых ордеров для нее должно быть прописано в интерфейсе как 0:57 (что будет соответствовать терминальному времени 23:57). Повторное включение ТП для всех открытых ордеров этой валютной пары надо прописать - 2:00, что будет соответствовать терминальному времени 1:00.
Я, как пользователь, должен буду увидеть, что для валютной пары, которая включается в 23:00, в 0:57 (что будет соответствовать 23:57 (по терминальному времени) в открытом терминале у всех открытых ордеров в колонке ТП должны появиться нули, а в 2:00 (что будет соответствовать терминальному времени 1:00) в колонке ТП открытых ордеров снова появиться такие-же величины ТП, как при включении советника в начале торговой сессии в 23:00.
В интерфейсе советника надо ввести 2 дополнительные заполняемые строки:
Время отключения ТП: (время должно отражаться по принципу 0:57)
Время повторного включения ТП: (время должно отражаться по принципу 2:00).