Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Renat:
Цитата из статьи: "При потере подключения к торговому серверу терминал периодически предпринимает попытки восстановить связь".
С какой частотой осуществляются попытки восстановить связь?
Раз в 5 секунд
Ещё вопрос на эту же тему. А как работает функция TerminalInfoInteger(TERMINAL_CONNECTED): осуществляет ли она незамедлительно попытку достучаться до сервера при её вызове, или же берёт данные о наличии/отсутствии подключения из окружения mql5-программы, обновляемого раз в 5 секунд?
Иными словами, можно ли при потере подключения рассчитывать на то, что вызов функции TerminalInfoInteger(TERMINAL_CONNECTED) возвратит актуальные сведения о текущем реальном состоянии соединения, независимо от того, что сам терминал в такой ситуации проверяет связь только раз в 5 секунд?
Функция возвращает текущее состояние соединения без каких-либо попыток поднять коннект. Реконнекты работают автоматически и независимо.
Понял так, что при потере подключения функция TerminalInfoInteger(TERMINAL_CONNECTED) вернёт те данные, которые сформировались после последнего 5-секундного реконнекта. Спасибо!
Нет. Функция покажет текущее сиюсекундное состояние коннекта. Никакие 5 сек тут не причем.
Ох, что-то тяжко сегодня наука постигается..
Получается, что в случае потери подключения функция TerminalInfoInteger(TERMINAL_CONNECTED) покажет текущее реальное состояние соединения, но при этом не будет пытаться восстановить связь. ОК, для моих целей это очень удобно. Спс!
Скажите пожалуйста, если функция OrderSend вернула true и result.order иметь тикет ордера (result.order!=0), гарантирует ли это что ордер принят брокером и он находится во вкладке торговля или на этом этапе запрос принят только сервером брокера но не биржей?
И второй вопрос, может ли быть ситуация когда OrderSend вернула true, а result.order==0 ?
Скажите пожалуйста, если функция OrderSend вернула true и result.order иметь тикет ордера (result.order!=0), гарантирует ли это что ордер принят брокером и он находится во вкладке торговля или на этом этапе запрос принят только сервером брокера но не биржей?
Гарантирует.
И второй вопрос, может ли быть ситуация когда OrderSend вернула true, а result.order==0 ?
Нет.
Гарантирует.
Нет.
Только на днях добавили уточнение для функции OrderSend, посмотрите онлайн справку.
Только на днях добавили уточнение для функции OrderSend, посмотрите онлайн справку.
Разве это касается маркет-ордеров?
Каждый принятый ордер хранится на торговом сервере в ожидании обработки до тех пор, пока не наступит одно из условий для его исполнения:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Типичные ошибки и способы их устранения при работе с торговым окружением
fxsaber, 2018.02.20 12:23
Условная схема реализации штатной OrderSend (без таймаута)Из этой схемы хорошо видно, что при выставлении маркет-ордера через OrderSendAsync на том же MetaQuotes-Demo невозможно гарантированно поймать событие выставления соответствующего ордера до момента, пока ордер не будет исполнен или отклонен. Т.е. в MT5 нет никаких простых механизмов оценивания промежуточных результатов своего OrderSendAsync.
OrderSend выполняется до тех пор, пока в OnTradeTransaction не придет Result.request_id равный этом же значению у OrderSendAsync. Либо же завершается аварийно по таймауту. Поэтому результат OrderSend зависит только от типа сообщения в OnTradeTransaction с соответствующим request_id.
Было бы полезно услышать про формирование самого request_id. Если правильно понимаю, то это счетчик отправленных на торговый сервер приказов с момента запуска/коннекта Терминала/Счета. Сам Терминал анализирует приходы сообщений от торгового сервера и либо только одному присваивает нужный request_id (что сомнительно), либо обнуляет request_id до определенного сообщения (вероятнее всего). Такое поведение позволило некоторое время назад добиться соответствия Истории торгов с выходом из OrderSend. Но из-за того, что только одно сообщение в OnTradeTransaction видно с нужным request_id, возникает неприятная ситуация в асинхронном режиме, приведенная в цитате выше.
Доброе время суток, обнаружил несоответствия для MqlTradeResult.deal и MqlTradeResult.order
1) Описание (Справочник MQL5)
2) Торговля в реальном времени
Ставлю рыночные ордера (TRADE_ACTION_DEAL). Вывожу функцией Print значения MqlTradeResult:
при этом в журнале deal фигурирует:
Пробовал "засыпать" функцией Sleep на пару секунд и выводить данные снова (когда сделка уже точно совершена и позиция открыта), номер сделки не появлялся.
3) Тестер Стратегий
Здесь заполняются все поля:
Чем вызваны такие различия?