Вопрос по функции подсчета ордеров

 

В общем такая ситуация.

советник работая на 12 парах на каждом тике проверяет наличие-отсутствие сигналов, и если сигналы есть выставляет отложенные ордера.

Перед каждым выставление отложенника вызывается OrdersTotal() и проверяется чтобы значение было не более 12.

Если 12 то ордер не ставиться.

На тестере все работает замечательно. А вот на демо-счете советник может выставить целый табун ордеров (16-20 штук).

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

Прав ли я в своих предположениях? Возможна ли такая ситуация?

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
arnautov:

В общем такая ситуация.

советник работая на 12 парах на каждом тике проверяет наличие-отсутствие сигналов, и если сигналы есть выставляет отложенные ордера.

Перед каждым выставление отложенника вызывается OrdersTotal() и проверяется чтобы значение было не более 12.

Если 12 то ордер не ставиться.

На тестере все работает замечательно. А вот на демо-счете советник может выставить целый табун ордеров (16-20 штук).

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

Прав ли я в своих предположениях? Возможна ли такая ситуация?

А что возвращает OrderSend при установке?
 
arnautov:

В общем такая ситуация.

советник работая на 12 парах на каждом тике проверяет наличие-отсутствие сигналов, и если сигналы есть выставляет отложенные ордера.

Перед каждым выставление отложенника вызывается OrdersTotal() и проверяется чтобы значение было не более 12.

Если 12 то ордер не ставиться.

На тестере все работает замечательно. А вот на демо-счете советник может выставить целый табун ордеров (16-20 штук).

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

Прав ли я в своих предположениях? Возможна ли такая ситуация?

Проверьте что в структуре MqlTradeResult, код ответа от сервера.
А так, OrderSend() синхронная функция, пока все не сделает, не отдаст управление (на сколько я понял).
 
mrProF:
Проверьте что в структуре MqlTradeResult, код ответа от сервера.
А так, OrderSend() синхронная функция, пока все не сделает, не отдаст управление (на сколько я понял).
Ну да, анализировать нужно именно MqlTradeResult. Все остальное второстепенно...
 
Конкретная ошибка находится в коде. И без кода все предположения - гадание на кофейной гуще.

 
arnautov:

На тестере все работает замечательно. А вот на демо-счете советник может выставить целый табун ордеров (16-20 штук).

с демо - дело намного проще. запускайте в дебаге. ставьте брейкпоинты и рассматривайте пошагово.

 
sergeev:

с демо - дело намного проще. запускайте в дебаге. ставьте брейкпоинты и рассматривайте пошагово.

Я бы посоветовал все шаги (сколько ордеров, коды ответа и т.п.) в записать лог или лог-файл, с дебагом можно просидеть в поисках нужной ситуации довольно долго :)
 
mrProF:
Я бы посоветовал все шаги (сколько ордеров, коды ответа и т.п.) в записать лог или лог-файл, с дебагом можно просидеть в поисках нужной ситуации довольно долго :)
К сожалению сейчас выходные, не демо ни дебагер не пашут. В пондельник можно любым способом проверить будет...
 
Interesting:
К сожалению сейчас выходные, не демо ни дебагер не пашут. В пондельник можно любым способом проверить будет...
Ага, я помню чуть с ума не сошел когда разбирался из-за чего мой эксперт не торгует, оказались выходные :D
 
sergeev:

с демо - дело намного проще. запускайте в дебаге. ставьте брейкпоинты и рассматривайте пошагово.

Есть подозрение что в этом случае все будет прекрасно работать. Пока буду лупиться на на дебаг все будет выствлено
 
mrProF:
Я бы посоветовал все шаги (сколько ордеров, коды ответа и т.п.) в записать лог или лог-файл, с дебагом можно просидеть в поисках нужной ситуации довольно долго :)

Пожалуй да.

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

Причина обращения: