Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Согласен. Но, к сожалению, в MT5, в отличие от MT4, торговое окружение может не соответствовать реальности. Например, при исполнении отложенного ордера на несколько миллисекунд его может нигде не быть. И здесь даже OnTradeTransaction не поможет.
Может OnTrade, я так понимаю он генерируется в самом терминале уже на основе транзакций.
Или Вы хотите сказать что при срабатывании отложки в обработчике OnTrade можно не обнаружить новую открытую позицию?
Может OnTrade, я так понимаю он генерируется в самом терминале уже на основе транзакций.
Или Вы хотите сказать что при срабатывании отложки в обработчике OnTrade можно не обнаружить новую открытую позицию?
В любой On-функции. В этом смысле в MT5 дыра. Вряд ли будут латать ее.
В любой On-функции. В этом смысле в MT5 дыра. Вряд ли будут латать ее.
Если так то печально. Теряется практически смысл OnTrade. Надо будет попроверять. В идеале при сработке отложки OnTrade должен вызваться примерно сколько раз:
для стопов:
- создан и отправлен рыночный ордер
- отложенный ордер перемещен в историю
- ордер выполнен записана сделка
- рыночный ордер перемещен в историю
- создана позиция
для лимитников:
- активирован лимитник записана сделка
- отложенный ордер перемещен в историю
- создана позиция
Если предположить, то на последней то всяко должна уже быть позиция, а не предыдущих логично что не должна, а?
Я в OnTrade вызывал функции проверки всех торговых состояний - сделок, позиций, ордеров. Вроде все ок пока работает, но у меня слишком сложных торговых операций не было.
Если так то печально. Теряется практически смысл OnTrade. Надо будет попроверять.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2019.11.19 07:26
Ветка большая, ниже список постов, представляющих интерес.
https://www.mql5.com/ru/forum/93352/page11#comment_4071950
ЗЫ
ой-йой, зачем я залез на форум, тут столько проблем нерешённых))
Спасибо , ознакомлюсь. Пока прочитал выделенную, по моему это не проблема, а особенность. В Базах данных , да и вообще, понятие транзакции и означает, что ВСЕ
действия, необходимые для выполнения запроса И ПОДДЕРЖАНИЯ КОРРЕКТНОСТИ БД выполнены, и после транзакции можно работать с БД, ошибок не будет.
Если какое либо из действий (а чтобы даже записать строку в любую таблицу их тоже бывает надо сделать не одно и убедиться что предыдущие выполнены успешно)
неуспешно, изменения откатываются и транзакция не состоялась. К чему я это, наверное к тому, что ждать от МТ уровня СУБД не стоит :)
Тут все промежуточные операции надо смотреть и проверять, опять же где-то это даёт большую гибкость.
Но по моему всё логично - сервер сначала сообщает что ордер выполнен, терминал его удаляет в архив, потом (позже) сервер сообщает что открыл позицию, а может ведь и не открыть по какой-то ошибке, тогда и должно быть ноль-ноль.
Проверю отпишу подробнее о результатах.
Но по моему всё логично - сервер сначала сообщает что ордер выполнен, терминал его удаляет в архив, потом (позже) сервер сообщает что открыл позицию
Ордера нет в истории и среди текущих. И позиции нет. Т.е нет ничего.
Но по моему всё логично - сервер сначала сообщает что ордер выполнен, терминал его удаляет в архив, потом (позже) сервер сообщает что открыл позицию, а может ведь и не открыть по какой-то ошибке, тогда и должно быть ноль-ноль.
не скажу на этом форуме или еще где читал посты админа Рената (возможно форум квик), но он кажется писал, что единственная проверка которую проходит ордер на сервере - это обеспечение маржинальных требований, дальше ордер "улетает" через коннектор на биржу, тогда ситуация с неопределенностью исполнения ордера, в принципе и возможна, сервер же, то же не знает по какой цене исполнен ордер
кроме примера, который fxsaber привёл, на практике встречается ещё случай когда тикет есть и среди отложек, и среди открытых позиций. ситуация продолжается также несколько миллисекунд (в последних билдах, правда, не проверял). механизм проверки должен быть другой, готовьтесь заранее :)
Такую ситуацию обрабатываю так, что для MT4-советников все остается в MT5 так же, как в MT4. А вот с фантомными ордерами - нужно дописывать.
на "нормальных" роботах, случай который я описал, вообще не замечал; но в одном меня попросили сделать систему безопасности: условие было, что позиции всегда локированы (либо реальными позициями, либо отложенным ордером), т.е. количество лотов на покупку равно количеству лотов на продажу. Вот этот случай и познакомил меня с нюансами подсчета ордеров/позиций/сделок в пятёрке.
разница, как я объяснил это самому себе, :) в том, что четвёрка получая ответ от брокера сначала синхронизирует свои "таблицы" с открытыми ордерами и историей, а потом сообщает пользователю об ответе брокера. пятёрка сразу транслирует нам этот ответ, и параллельно правит свои "таблицы" (а все mql программы читают данные из этих "таблиц"). Именно этот момент мы ловим на миллисекундном таймере. Но тогда, почему в тестере мы на это не напарываемся?
А вообще, я смирился...