Ошибки, баги, вопросы - страница 3203
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как и предполагалось, сделки не было. Ордер отправлен, его тикет есть. Но по какой цене он реально исполнится, еще не известно.
Хочешь трушный синхронный ордерсенд — запили его сам с помощью предложенного бесконечного цикла.
Тогда почему код ответа 10009 а не
10008
TRADE_RETCODE_PLACED
Ордер размещен
В качестве предложения разработчикам, с учетом обсуждения, добавить OrderSendSync() :
| зона ответственности Биржи || зона ответственности Брокера || интернет || клиент |
[биржа (MOEX)] <==> [шлюз Plaza2] <===> [шлюз в MOEX] <=> [MT5 торговый сервер] <=> [Точка доступа] <================> [Терминал] - > true OrderSendSync()
[биржа (MOEX)] <==> [шлюз Plaza2] <===> [шлюз в MOEX] <=> [MT5 торговый сервер] <=> [Точка доступа] <================> [Терминал] - > true OrderSend()
[биржа ( MOEX)] <==> [шлюз Plaza2] <===> [шлюз в MOEX] <=> [MT5 торговый сервер] <=> [Точка доступа] <================> [Терминал] - > true OrderSendAsync()
Надо?
В качестве предложения разработчикам, с учетом обсуждения, добавить OrderSendSync()
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода)
fxsaber, 2021.06.03 06:10
Пожалуй, на данный момент это самая сложная задача из всех легко формулируемых задач в этой ветке.
Очень сильная проверка владения торговой частью MQL5.
Там в ветке значительно конструктивнее было обсуждение различных вариантов поведения MT5.
В качестве предложения разработчикам, с учетом обсуждения, добавить OrderSendSync() :
Надо?
наверное, да, как компромисс, что бы не ломать имеющееся, было бы целесообразно ввести полностью синхронную функцию. либо новую, либо качественно обёрнутую разработчиками OrderSend ().
надо.
Всё это происходит от того, что существуют 2 базы данных. Один на сервере брокера, другой у вас.
И между ними стоят МТ5. Если обмен данными происходит через интернет, или сервера работают медленно, то всякое может произойти.
У меня раньше из-за OrderSend были и двойные сделки, и обратные сделки.
И поэтому сейчас уже как 4 года использую Стандартную библиотеку CTrade.
Например: CTrade trade;
trade.Sell(), trade.Buy(), trade.PositionModify() и trade.PositionClose()
Они не требуют задать или проверить тип исполнения, политика заполнения и не надо заполнить какие-то структуры;
Это очень просто и работают прекрасно :)
Есть даже стресс-тест, который трушный синхронный OrderSend не пройдет.
Потому что в MT5 асинхронность повсюду:
По пункту 3:
В момент срабатывания BuyLimit1 появляется маркет-ордер. Если память мне не изменяет - с тем же тикетом (могу ошибаться из-за давности проверок этой логики).
По нему можно понять, что сработал BuyLimit1: нету BuyLimit1, нету Buy1, но есть BuyMarket1, который и породит сделку.
Если ошибаюсь - поправьте.
По пункту 3:
В момент срабатывания BuyLimit1 появляется маркет-ордер. Если память мне не изменяет - с тем же тикетом (могу ошибаться из-за давности проверок этой логики).
По нему можно понять, что сработал BuyLimit1: нету BuyLimit1, нету Buy1, но есть BuyMarket1, который и породит сделку.
Если ошибаюсь - поправьте.
Уже говорил, и ещё раз скажу.
Возможно возникновение ситуаций
когда ордера уже нет в выставленных (отправлен в историю) и ещё нет в истории
при открытии позиции: когда ордера уже нет в выставленных, а позиции ещё нет
при закрытии позиции: когда ордера уже нет в выставленных, а позиция ещё есть
Использование CTrade тут не помогает (не помогало, когда пытался использовать, году в 2014) от задвоения позиций и подобных эффектов.
А при использовании асинхронной отправки - и когда ордер отправлен, но его ещё нет, и возможно, не будет.Не знаю как на FX (может зависить от брокера)- а на бирже никакого маркет-ордера здесь быть НЕ МОЖЕТ!!!
Не кричите - здесь нет глухих. Любой отложенный ордер при его срабатывании становится маркет-ордером. И уже маркет-ордер порождает сделку при его исполнении.
Любой отложенный ордер при его срабатывании становится маркет-ордером. И уже маркет-ордер порождает сделку при его исполнении.
Тип ордера никогда не меняется. Поэтому утверждение неверно.