Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пользуйся функцией вставки контента из Кармана. Это удобно!
Владислав
646
Владислав 2010.09.03 22:09 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А что возвращает OrderSend при установке?
Дмитрий Александрович
1705
Дмитрий Александрович 2010.09.03 23:16  
arnautov:

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

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

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

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

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

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

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

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

o_o
Модератор
23693
o_o 2010.09.04 00:46  
arnautov:

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

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

Дмитрий Александрович
1705
Дмитрий Александрович 2010.09.04 10:58  
sergeev:

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

Я бы посоветовал все шаги (сколько ордеров, коды ответа и т.п.) в записать лог или лог-файл, с дебагом можно просидеть в поисках нужной ситуации довольно долго :)
Vladimir Batrudinov
4926
Vladimir Batrudinov 2010.09.04 11:54  
mrProF:
Я бы посоветовал все шаги (сколько ордеров, коды ответа и т.п.) в записать лог или лог-файл, с дебагом можно просидеть в поисках нужной ситуации довольно долго :)
К сожалению сейчас выходные, не демо ни дебагер не пашут. В пондельник можно любым способом проверить будет...
Дмитрий Александрович
1705
Дмитрий Александрович 2010.09.04 12:34  
Interesting:
К сожалению сейчас выходные, не демо ни дебагер не пашут. В пондельник можно любым способом проверить будет...
Ага, я помню чуть с ума не сошел когда разбирался из-за чего мой эксперт не торгует, оказались выходные :D
Владислав
646
Владислав 2010.09.04 21:25  
sergeev:

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

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

Пожалуй да.

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий