Ошибки, баги, вопросы - страница 2127
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Из Агента через фрейм нужно вытащить всю необходимую инфу для анализа.
Вся череда событий OnTradeTransaction идет после завершения OrderSend.
Советник
Руками отправляем торговый приказ.
Лог
2018.02.14 09:41:46.671 '8854170': instant sell 1.00 EURUSD at 1.23673 2018.02.14 09:41:46.853 '8854170': accepted instant sell 1.00 EURUSD at 1.23673 2018.02.14 09:41:46.853 '8854170': deal #192088422 sell 1.00 EURUSD at 1.23673 done (based on order #208541700) 2018.02.14 09:41:46.853 '8854170': order #208541700 sell 1.00 / 1.00 EURUSD at 1.23673 done in 190.608 msРезультат советника
Отлично видно и по столбцу времени и по числовым показателям советника, что длительность выполнения торгового приказа никак не сказывается на череде событий OnTradeTransaction. Вся асинхронность летит к чертям! Умудрились же так напортачить. Build 1755.
Символ имеет Digits == 3
при этом в логе гораздо больше цифр выводится
Запускаем на MQ-Demo на каком-нибудь медленно двигающемся символе. Например, EURHUF.
Скрипт открывает BUY-позицию с TP = Bid. Т.е. позиция должна сразу закрыться. Но TP будет проверяться на соответствие условию акцептирования только на следующем тике!
Никакого мгновенного закрытия позиции не произойдет, пока не придет новый тик. Более того, если следующий у следующего тика будет Bid < TP, то TP так и останется без акцепта.
Это же касается и лимитных ордеров (закомментированная строка). В Тестере - аналогичная ситуация.
Гадкий баг не Терминала, а Платформы MT5
Запускаем на MQ-Demo на каком-нибудь медленно двигающемся символе. Например, EURHUF.
Скрипт открывает BUY-позицию с TP = Bid. Т.е. позиция должна сразу закрыться. Но TP будет проверяться на соответствие условию акцептирования только на следующем тике!
Никакого мгновенного закрытия позиции не произойдет, пока не придет новый тик. Более того, если следующий у следующего тика будет Bid < TP, то TP так и останется без акцепта.
Это же касается и лимитных ордеров (закомментированная строка). В Тестере - аналогичная ситуация.
Пожалуйста в вопросах по MQL5 прикладывайте чистый MQL5 код.
Надоело видеть Вашу НАСТЫРНУЮ рекламу по поводу и без.Пожалуйста в вопросах по MQL5 прикладывайте чистый MQL5 код.
Баг не касается MQL5.
Надоело видеть Вашу НАСТЫРНУЮ рекламу по поводу и без.
рекламу чего?
Открываю руками BUY-позицию на двух торговых демо-серверах
RoboForex-MetaTrader 5
FXOpen-MT5
Строки одного цвета обозначают одно и то же. Однако, хорошо видно, что они идут в разных очередностях. У Робо сообщение о выполнении приказа приходит после выполнения сделки. А у опенов - ДО! По этой причине OrderSend возвращает удачу, но сделки еще нет. Т.е. получаем несинхронизированность OrderSend с историей, что есть баг. В чем причина?
Если ордер отправдяется во внешнюю торговую систему, то торговый сервер MetaTrader 5 не ждет ответа от неё и сразу возвращает результат запроса как "ордер размещен". По этой причине OrderSend всегда вернет deal=0, так как информации о совершенной сделке еще нет. Ловите её в OnTrade или OnTradeTransaction.
Пример слушателя торговых событий дан в статье С чего начать при создании торгового робота для Московской биржи MOEX - TradeTransactionListener.mq5