Советник пропускает сигналы при работе на реальном счете - нужен совет от профи

 

Нужен совет от профи, пишущих советники для реальных счетов. Сама пишу советников в основном для тестирования стратегий, для реала пока мало опыта.

Столкнулась  с такой ситуацией. Советник, генирирующий сигналы на основе различных индикаторов, работает отлично в тестере и на демо, но на рельном счету( на VPS) иногда пропускает сигналы.  В чем может быть причина? Можно ли ее исправить программно, в смысле, исправить код, если это из-за кода? 

 

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

Чтобы ответить конкретно, нужно больше информации. В идеале нужен код блока, генерирующего торговые сигналы.

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

 

Если вызываемые индикаторы используют не основной ТФ, то лучше организовать подкачку этих ТФ из таймера ЕА - обычно раз в 20-30 сек. достаточно или эти индикаторы должны вывываться каждый тик при работе на реале - тогда будует подкачиваться история других ТФ, но никак не по открытию бара

Ну и пишем в лог ошибки отправки ордера на сервер, бывают уровни стоплевел изменяются или реквоты или ...., а если советник по открытию бара работает, то неудачную попытку отправки ордера нужно  производить на следующем тике, а не новом баре

 
Ihor Herasko:

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

Чтобы ответить конкретно, нужно больше информации. В идеале нужен код блока, генерирующего торговые сигналы.

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

Спасибо. Перерывы на выходные и праздники вы имеете ввиду?  А как это может повлиять на работу советника?  Переключения ТФ не было, но это со слов закзчика советника. Советник изначально заказывался для тестера, но сейчас он его поставил на реал, использует VPS. На VPS вроде как советник должен работать без перерывов. 

И ошибка не в открытии ордеров, так как вариант, который просто отправляет алерты (без открытия ордеров), тоже у него иногда пропускает сигналы на реале, В основном, как я поняла на открытии американской сессии.

Да, я поняла, что надо самой проверять на реальном счету, просто хотела сначала понять более вероятные причины

 

Не видя кода, конечно, можно много сказать...

Обычно, когда случается такая проблема, используется функция isNewBar() и не проверяются результаты выполнения торговых действий. В итоге весь код функции OnTick() выполняется один раз на бар без повтора попыток. 

 
Elena Baranova:

Спасибо. Перерывы на выходные и праздники вы имеете ввиду?  А как это может повлиять на работу советника?  

Ещё есть такое как котировочная сессия и торговая, советник может генерировать сигнал и даже отправлять ордер но брокер его не принимает. Для начала распечатайте ошибку 

 
Igor Makanu:

Если вызываемые индикаторы используют не основной ТФ, то лучше организовать подкачку этих ТФ из таймера ЕА - обычно раз в 20-30 сек. достаточно или эти индикаторы должны вывываться каждый тик при работе на реале - тогда будует подкачиваться история других ТФ, но никак не по открытию бара

Ну и пишем в лог ошибки отправки ордера на сервер, бывают уровни стоплевел изменяются или реквоты или ...., а если советник по открытию бара работает, то неудачную попытку отправки ордера нужно  производить на следующем тике, а не новом баре

Спасибо за полезные советы.

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

Сигнал формируется на основном ТФ, остальные ТФ используюся как дополнительные фильтры. Там достаточно сложный алгоритм рассчета и идет запрос большого числа значений индикаторов, но это вроде просто должно вызывать задержку, а не пропуск. 

<а если советник по открытию бара работает, то неудачную попытку отправки ордера нужно  производить на следующем тике, а не новом баре >

У меня в обработке ордера предусмотрено 10 попыток с задержкой в 1 сек, по идеи несколько тиков должно охватить

Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 
VVT:

Ещё есть такое как котировочная сессия и торговая, советник может генерировать сигнал и даже отправлять ордер но брокер его не принимает. Для начала распечатайте ошибку 

Нет дело не в ошибке отправки ордера, там сам сигнал не верно рассчитывается иногда, но только на реальном счет

 
Dmitry Fedoseev:

Не видя кода, конечно, можно много сказать...

Обычно, когда случается такая проблема, используется функция isNewBar() и не проверяются результаты выполнения торговых действий. В итоге весь код функции OnTick() выполняется один раз на бар без повтора попыток. 

Ошибка не в торговых операциях, просто алерт тоже не формируется...ошибка видимо в получении данных от индикаторов

 
Elena Baranova:

У меня в обработке ордера предусмотрено 10 попыток с задержкой в 1 сек, по идеи несколько тиков должно охватить

это не решает проблемы, скорее всего Вы используете "КИМовские функции", там такой алгорит

у Вас может просто по открытию бара пропасть связь, и шлите хоть 100 секунд свои запросы, потом история будет подгружена и синхронизирована, визуально это не определишь


нужно isNewBar() нужно дополнить функцией сброса при возникновении ошибки....хотя такие вещи нужно самостоятельно проверять илии найти другого брокера  

 
Igor Makanu:

Если вызываемые индикаторы используют не основной ТФ, то лучше организовать подкачку этих ТФ из таймера ЕА - обычно раз в 20-30 сек. достаточно или эти индикаторы должны вывываться каждый тик при работе на реале - тогда будует подкачиваться история других ТФ, но никак не по открытию бара

Ну и пишем в лог ошибки отправки ордера на сервер, бывают уровни стоплевел изменяются или реквоты или ...., а если советник по открытию бара работает, то неудачную попытку отправки ордера нужно  производить на следующем тике, а не новом баре

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

И я правильно поняла, что для подкачки данных достаточно просто 1 раз в 20-30 сек раз вызывать каждый индикатор из таймера EA? Если для рассчета используюся разные значения параметра Shift в индикаторе, то будет ли достаточно вызова индикатора только с одним значением shift?