Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода) - страница 30
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Странно на Фортсе получилось. Вот основная часть закрытия позиции.
Вот выдержка из журнала эксперта, т.е. попал в секцию, где deal (тикет сделки) равен нулю после 20 итераций проверки ResultDeal():
JL 0 10:08:04.462 e-MultiPattern-0.15 (RTS-9.21,M5) cStoploss::sortSL12 Дистанция контртренд=0 BID=172690.0, закроем Short
JM 0 10:08:06.695 e-MultiPattern-0.15 (RTS-9.21,M5) ** 333-cMyTrade::ClosePosition. После закрытия позиции № сделки=0, Order=16868286 state=ORDER_STATE_FILLED
Вот выдержка из журнала терминала:
IG 0 10:08:04.465 Trades '733618': exchange buy 2 RTS-9.21 at market
KN 0 10:08:04.480 Trades '733618': accepted exchange buy 2 RTS-9.21 at market
OQ 0 10:08:04.481 Trades '733618': exchange buy 2 RTS-9.21 at market placed for execution
FG 0 10:08:04.517 Trades '733618': order #16868286 buy 2 / 2 RTS-9.21 at market done in 52.326 ms
JN 0 10:08:04.517 Trades '733618': deal #3413752 buy 2 RTS-9.21 at 172780 done (based on order #16868286)
Подскажите, кто хорошо разбирается в работе СБ и торговой логике МТ5. В журнале терминала размещение ордера и создание сделки произошло в один момент - 04.517 секунд.
А советник в цикле while так и не увидел тикет сделки и вышел по истечении 20 итераций в 06.695 секунд. Почему структура имеет тикет ордера, а тикет сделки не имеет?
Как гарантированно получить тикет сделки, особенно если используешь частичное закрытие?
Странно на Фортсе получилось. Вот основная часть закрытия позиции.
Вот выдержка из журнала эксперта, т.е. попал в секцию, где deal (тикет сделки) равен нулю после 20 итераций проверки ResultDeal():+
Если ResultDeal равен нулю, то он будет и через миллион итераций в цикле равен нулю, т.к. это неизменный параметр.
Вот выдержка из журнала терминала:
Подскажите, кто хорошо разбирается в работе СБ и торговой логике МТ5. В журнале терминала размещение ордера и создание сделки произошло в один момент - 04.517 секунд.
В Терминале есть событийный сервис, в котором пашет свой OnTradeTransaction. Как только туда приходит событие, там идет распечатка в лог. Событийная модель не подразумевает реал-тайм, поэтому не надо верить времени в логах на 100%.
Почему структура имеет тикет ордера, а тикет сделки не имеет?
Потому что выставленный маркет-ордер - это и есть результат OrderSend.
Как гарантированно получить тикет сделки, особенно если используешь частичное закрытие?
Этого не объяснить запросто, т.к. там подводных камней очень много. Написал решение, которое позволяет пользователям работать без каких-либо проблем. Но разбор внутренней реализации - это для особых ценителей.
И ведь на полном серьезе?..
Ветка "Юмор" здесь
Совместимость снизу-вверх одно из базовых требований к программному обеспечению. Код предыдущей версии должен адекватно восприниматься последующей. В противном случае, разработчик просто выкидывает предыдущую разработку и представляет новую. Путь в никуда.
Совершенно согласен, что необходим (прежде всего, разработчикам) компилятор кода MQL4 в код MQL5.
Сделать нормальный тестер для мт4 и через пару лет мт5 забудут все
Баскаков, а дочка MT5 использует, зараза...
Если ResultDeal равен нулю, то он будет и через миллион итераций в цикле равен нулю, т.к. это неизменный параметр.
Потому что выставленный маркет-ордер - это и есть результат OrderSend.
Не совсем понятно. В справке по структуре MqlTradeResult написано
Если закрытие вернуло тикет ордера, но нет тикета сделки - это произошел тип операции TRADE_ACTION_PENDING ?
Или TRADE_ACTION_DEAL, а тикет сделки может "опоздать" и не попасть в структуру?
Т.е. это лучше тогда по ордеру через HistorySelect-функции проводить поиск сделки?
И еще, простите, наболело. Разработчикам: прекратите нести безумные и ничем не оправданные затраты на сопровождение MT4, у вас уже этим половина высококлассных специалистов занимается.
Сделайте один раз компилятор MQL4-MQL5 и сконцентрируйтесь на главном. Добейтесь стабильного первого места финальной версии среди конкурентов.
Не совсем понятно. В справке по структуре MqlTradeResult написано
Если закрытие вернуло тикет ордера, но нет тикета сделки - это произошел тип операции TRADE_ACTION_PENDING ?
Или TRADE_ACTION_DEAL, а тикет сделки может "опоздать" и не попасть в структуру?
Т.е. это лучше тогда по ордеру через HistorySelect-функции проводить поиск сделки?
Хотя метод PositionClose(Symbol) в СБ присваивает тип операции TRADE_ACTION_DEAL.
Получается тикет сделки должен быть, но его часто нет.