В общем такая ситуация.
советник работая на 12 парах на каждом тике проверяет наличие-отсутствие сигналов, и если сигналы есть выставляет отложенные ордера.
Перед каждым выставление отложенника вызывается OrdersTotal() и проверяется чтобы значение было не более 12.
Если 12 то ордер не ставиться.
На тестере все работает замечательно. А вот на демо-счете советник может выставить целый табун ордеров (16-20 штук).
Такое впечатление что советник не дожидается результата выполнения OrderSend, и на следующем тике, убедившись что ордера все еще нет, дает еще одну команду на установку.
Прав ли я в своих предположениях? Возможна ли такая ситуация?
В общем такая ситуация.
советник работая на 12 парах на каждом тике проверяет наличие-отсутствие сигналов, и если сигналы есть выставляет отложенные ордера.
Перед каждым выставление отложенника вызывается OrdersTotal() и проверяется чтобы значение было не более 12.
Если 12 то ордер не ставиться.
На тестере все работает замечательно. А вот на демо-счете советник может выставить целый табун ордеров (16-20 штук).
Такое впечатление что советник не дожидается результата выполнения OrderSend, и на следующем тике, убедившись что ордера все еще нет, дает еще одну команду на установку.
Прав ли я в своих предположениях? Возможна ли такая ситуация?
А так, OrderSend() синхронная функция, пока все не сделает, не отдаст управление (на сколько я понял).
Проверьте что в структуре MqlTradeResult, код ответа от сервера.
А так, OrderSend() синхронная функция, пока все не сделает, не отдаст управление (на сколько я понял).
На тестере все работает замечательно. А вот на демо-счете советник может выставить целый табун ордеров (16-20 штук).
с демо - дело намного проще. запускайте в дебаге. ставьте брейкпоинты и рассматривайте пошагово.
с демо - дело намного проще. запускайте в дебаге. ставьте брейкпоинты и рассматривайте пошагово.
Я бы посоветовал все шаги (сколько ордеров, коды ответа и т.п.) в записать лог или лог-файл, с дебагом можно просидеть в поисках нужной ситуации довольно долго :)
К сожалению сейчас выходные, не демо ни дебагер не пашут. В пондельник можно любым способом проверить будет...
с демо - дело намного проще. запускайте в дебаге. ставьте брейкпоинты и рассматривайте пошагово.
Я бы посоветовал все шаги (сколько ордеров, коды ответа и т.п.) в записать лог или лог-файл, с дебагом можно просидеть в поисках нужной ситуации довольно долго :)
Пожалуй да.
Спасибо за совет.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В общем такая ситуация.
советник работая на 12 парах на каждом тике проверяет наличие-отсутствие сигналов, и если сигналы есть выставляет отложенные ордера.
Перед каждым выставление отложенника вызывается OrdersTotal() и проверяется чтобы значение было не более 12.
Если 12 то ордер не ставиться.
На тестере все работает замечательно. А вот на демо-счете советник может выставить целый табун ордеров (16-20 штук).
Такое впечатление что советник не дожидается результата выполнения OrderSend, и на следующем тике, убедившись что ордера все еще нет, дает еще одну команду на установку.
Прав ли я в своих предположениях? Возможна ли такая ситуация?