Новая версия платформы MetaTrader 5 build 6230: больше возможностей AI - страница 15

Aleksei Kuznetsov #:

Еще раз - меня смущают наличие объемов в Ask/Bid тиках без флага Volume, а не buy/sell тиков.

Да, так и понял сразу. Не будет путаницы, когда у buy/sell-тиков ненулевые bid/ask?


Сейчас единственный способ идентифицировать тип тика (котировочный/сделка) - это проверка флага.

На бирже тик всегда либо котировочный, либо сделочный. Но в MQ-истории, технически возможен их симбиоз. Это надо проверять историю.

fxsaber #:
Да, так и понял сразу. Не будет путаницы, когда у buy/sell-тиков ненулевые bid/ask?
Думаю нет - это последние известные bid|ask или только что измененные. Например выкупили уровень из стакана и обновили Ask. Крайние уровни в стакане есть всегда, в том числе в моменты сделок с Last.
fxsaber #:

Но в MQ-истории, технически возможен их симбиоз. Это надо проверять историю.

Не вижу проблемы - цены Ask/Bid всегда есть, Last иногда.

Вот Buy и Sell в один тик замешивать не стоит, но кажется так и происходит. Либо бай, либо селл.
Aleksei Kuznetsov #:

Не вижу проблемы - цены Ask/Bid всегда есть, Last иногда.

Я про другое.

(Tick.flags & (TICK_FLAG_BUY | TICK_FLAG_SELL)) && (Tick.flags & (TICK_FLAG_ASK | TICK_FLAG_BID)) // true
fxsaber #:

Я про другое.

Я так и понял.  Добавлю в озвученную мысль:
Не вижу проблемы - цены Ask/Bid всегда есть, Last иногда вместе с Ask и/или Bid.

В Документации, конечно, полное несоответствие.

Чтобы узнать, какие именно данные изменились с текущим тиком, анализируйте его флаги:

  • TICK_FLAG_BID – тик изменил цену бид
  • TICK_FLAG_ASK  – тик изменил цену аск
  • TICK_FLAG_LAST – тик изменил цену последней сделки
  • TICK_FLAG_VOLUME – тик изменил объем
  • TICK_FLAG_BUY – тик возник в результате сделки на покупку
  • TICK_FLAG_SELL – тик возник в результате сделки на продажу
Идут подряд полностью идентичные тики, вплоть до флагов.
Документация по MQL5: Структура для получения текущих цен / Константы, перечисления и структуры
Документация по MQL5: Структура для получения текущих цен / Константы, перечисления и структуры
  • www.mql5.com
Структура для хранения последних цен по символу. Предназначена для быстрого получения наиболее востребованной информации о текущих ценах...
И кстати можно было бы в Last тиках оставлять не последние Ask/Bid, а сразу подставлять актуальные и добавлять флаг их изменений.
Aleksei Kuznetsov #:
И кстати можно было бы в Last тиках оставлять не Ask/Bid не последние, а сразу подставлять актуальные и добавлять флаг их изменений.
Это виртуальные котировочные цены, потому что по ним нельзя акцептироваться. Можно только по последней в серии last-сделок.
fxsaber #:

В Документации, конечно, полное несоответствие.

Идут подряд полностью идентичные тики, вплоть до флагов.
Как читал про криптобиржу - это исполнение отдельных заявок. На вашем скриншоте сработали 4 ордера по 30 лотов, возможно от разных людей. Но скорее какой-то робот разделил большой объем на несколько сделок.
fxsaber #:
Это виртуальные котировочные цены, потому что по ним нельзя акцептироваться. Можно только по последней в серии last-сделок.
Тут https://www.mql5.com/ru/forum/516827/page13#comment_60586671 показал сделки на продажу выше и Bid и Ask и возможную причину этого.

Скопирую:

Рассмотрим результат работы -slippage.set

Здесь триггером так же является Last тик и применяется цена от старого Bid/Ask тика. 
Проскальзывание видим отрицательное: -0.10. 
Цена старого Bid = 97.87, Ask = 97.88. Но триггером SL стал Last Sell тик 97.97, который выше и Bid и Ask. На форуме писали, что если выставить лимитный Sell ордер выше Ask, то он исполняется об лимитный ордер Buy, который уже есть в стакане - видимо это и случилось. Возможно есть другие причины, почему  Last Sell тики идут выше и Bid и Ask. 
Если бы триггером были бы Ask/Bid тики, то SL сработал бы намного раньше, когда Bid первый раз стал ниже 97.97. 

Таким образом нашли вторую причину неправильности применения Last тиков для триггера SL (и других Stop ордеров) - она заключается в том, что SL не срабатывает по реальным заявкам в стакане когда Bid первый раз станет ниже SL. И может сработать позже на несколько секунд или минут, когда кто-то случайно отправил Buy Limit ордер выше Ask в стакане. Или позже на часы, пока цена снова не вернется и не появится новый Last тик по цене <= SL.

Доступ к счету для тестов отправлю Alain, его можно передать и сотрудникам MQ для исправления тестера. Надеюсь месяца хватит. Потом поменяю пароль, ну или позже, если попросят.

Ошибка в тестере MT5 из-за использования старых цен Ask/Bid для SL.
Ошибка в тестере MT5 из-за использования старых цен Ask/Bid для SL.
  • 2026.10.18
  • www.mql5.com
Ошибка в тестере MT5 заключается в использовании старых цен Ask/Bid для срабатывания стоп-лоссов, что приводит к положительным проскальзываниям. Пользователь предоставил доказательства и скриншоты, подтверждающие проблему, и просит исправить тестер, чтобы он использовал актуальные цены тиков.