Ошибки, баги, вопросы - страница 2106
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В СД нужно писать. Иначе так и будете после каждого OrderSend по три минуты ожидать таймаута, получая соответствующие торговые риски.
так и сделал.
эта ошибка случается 1 из 1000, и пока только на VPS от MQL такое было...соответственно советник получает ошибку 10012 и пытается еще раз выставить ордер.
Я бы за такой код в Маркете лишал бы статуса Продавца на год
я первый раз столкнулся с такой ошибкой.
у меня нет в коде обработки такой ошибки. нет тикета - значит сделка не открылась. значит советник снова пытается открыть сделку.проблема в принципе решаема, после получения ошибки таймаута запускать функцию перебора новых тикетов в истории.
История не при чем. OrderSend отправляет приказ, и он СРАЗУ повляется в Терминале с состоянием ORDER_STATE_STARTED.
Но это не обозначает, что OrderSend завершил выполнение. OrderSend будет выполняться до тех пор, пока статус ордера не изменится.
Поэтому если Вы видите таймаут, это на 99% обозначает, что статус ордера ORDER_STATE_STARTED (вижу placed, но не ясно, когда скрин сделал.).
Более того, такой же таймаут может случиться без Вашего OrderSend - когда MT5-сервер делает сам OrderSend (TP/SL/MC/Expiration). Но Вы его не увидите в Терминале.
у меня нет в коде обработки такой ошибки. нет тикета - значит сделка не открылась. значит советник снова пытается открыть сделку.
Это неправильная логика. После неудачного и удачного OrderSend должно быть заново полностью считано текущее торговое окружение. Это правило должно действовать всегда.
Насчет кодов возврата. В своих советниках никак не анализирую их. По-моему, торговая логика не должна от них зависеть.
Это неправильная логика. После неудачного и удачного OrderSend должно быть заново полностью считано текущее торговое окружение. Это правило должно действовать всегда.
согласен. надо менять.
согласен. надо менять.
По этому правилу ветка есть.
По этому правилу ветка есть.
да я читал отрывками про функцию доступа к истории только при изменении окружения, и встречал ваши ссылки в других темах.
как раз в точку, ошибка появилась после прочтения вашего вариант.
Это неправильная логика. После неудачного и удачного OrderSend должно быть заново полностью считано текущее торговое окружение. Это правило должно действовать всегда.
Насчет кодов возврата. В своих советниках никак не анализирую их. По-моему, торговая логика не должна от них зависеть.
Теоретически, тайм-аут может случиться во время потери связи с сервером брокера.
В этом случае лучше вообще ничего не делать до ее восстановления и до полной синхронизации торгового окружения с сервером.
Как не попасть в такую ситуацию, не анализируя код возврата?
Ошибка компиляции.
Файл Test.mqh
Основной код
Получается, что повторный инклуд игнорируется. Но в данной сиуации это неправильно!
Нужна такая конструкция для следующего. Советник содержится в mqh-файле. Но мне нужно иметь возможно его запустить и на реале (первый инклуд) и в своем тестере (второй инклуд).