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

Aleksei Kuznetsov #:
Время начала торговой сессии как определить автоматически, если оно меняется в истории? Сейчас оно с 7, но в спецификации с 00:00. А до 2024 было с 10. Обещают еще изменения.

Один раз на истории и сторонних источниках определить хронологию реальных торговых сессий. И потом заложить это в скрипт, который один раз создает кастомный символ только на торговых тиках.

Соответственно, в советник для Тестера не вставлять никаких условий, как это с происходит с советниками на форекс.

Aleksey Vyazmikin #:
Да никак - прописать в коде время начала сессий для разных интервалов в коде на истории. Ждать каких то глобальных изменений и индивидуального подхода - наивно, так как это экономически не обосновано для разработчиков.

Так советники теряют универсальность. Под каждый инструмент свою версию писать, не вариант. Вот например МА из примеров - сделать 10 версий для 10 разных бирж... 

Мое предложение - это не индивидуальный подход, а подойдет для всех бирж, не только к Московской.

И изменения предлагаю не глобальные, а добавить всего 1 бит в флаги, свободные места наверняка есть.

fxsaber #:

Один раз на истории и сторонних источниках определить хронологию реальных торговых сессий. И потом заложить это в скрипт, который один раз создает кастомный символ только на торговых тиках.

Соответственно, в советник для Тестера не вставлять никаких условий, как это с происходит с советниками на форекс.

Это опять не автоматизированное предложение, а с ручной проверкой сессий. 

Мой вариант c использованием только Last, пока представляется самым лучшим.

Все настолько привыкли, что у MQ ничего не допросишься, что сами убеждают уже ничего не просить.

Простая же доработка и начнет работать из коробки для тысяч пользователей торгующих на разных биржах без хитро-выдуманных индивидуальных костылей.

Oleh Fedorov #:
Последняя рабочая версия была build 6259. Между ними ничего не менялось.

Проверьте 6266+. Только что обновил 6249 -> 6266 и успешно запустил. Все работает, включая AI Assistant, mcp, агенты тестирования и Webview2 окна. Ubuntu 26.04.1, установка модифицированным под поддержку 26 скриптом mq.


Aleksei Kuznetsov #:
Под каждый инструмент свою версию писать, не вариант.
Под фондовый и срочный рынок, а не каждый инструмент.
Roman #:

https://www.moex.com/msn/stocks-morning

fonda
На мосбирже ликвидность давно просела, поэтому в моменты сведения заявок, может быть что угодно, это не баг, это рынок в условиях низкой ликвидности.

Протестировал еще ситуацию с тиками в неторговое время.

if(Tick.time== D'2024.06.07 18:39:59'){ OrderSend(_Symbol, OP_SELL, 1.0, n(Tick.bid), 0, n(130.0),0,NULL,3);}
if(Tick.time== D'2024.06.07 18:49:55'){ OrderSend(_Symbol, OP_SELL, 1.0, n(Tick.bid), 0, n(130.0),0,NULL,3);}

1) открыл сделку sell в торговое время в 18:39:59 со стопом ниже цен которые были в неторговое (видно по тонкой красной линии, где была Ask). И что интересно стоп не сработал. Это обнадеживает. Но не понятно, как тестер определил, что время неторговое и что нельзя применять SL.

2) отправил запрос на sell в неторговое время в 18:49:55 и тестер его исполнил, но биржа должна отклонить. Это однозначно ошибка и если бы был флаг, как предлагаю, то и это можно было бы отклонить.

Предполагаю, что тестер определяет неторговое время по отношению цен Bid Ask и поэтому не исполнил SL.

Из экспорта тиков: 
В 18:40:02 ставится неправильные Bid>Ask потом идут тики без объемов и с 18:45 тики с объемами. 
В 19:00:04.717    123.00    134.12 всего 1 тик ставится правильным Bid<Ask, но Ask ставится очень большим (красная линия на графике)
В 19:00:05 снова неправильные Bid>Ask, дальше тики без объемов и с объемами
В 19:04:52 возвращается правильный Bid<Ask и дальше с 19:05 начинается торговая сессия.

Получается что при Bid>Ask неторговое время и нужно все пропускать. 
Но тик в 19:00:04 не укладывается в это предположение. Возможно дополнительным фильтром является то, что он без объема, т.е. до первого тика с объемом после Bid>Ask нужно все тики пропускать.

Видимо это и есть хитрый костыль которым пользуется MQ тестер и биржа. А можно было бы просто 1-м битом из флагов.

Но ошибку из п.2 это не предотвратило.

Попробую и себе это закодировать.

Прореженый экспорт тиков (удалены сотни тиков с объемами), если кому интересно:

<DATE>    <TIME>    <BID>    <ASK>    <LAST>    <VOLUME>    <FLAGS>
2024.06.07    18:39:58.719            122.44    1.00000000    56
2024.06.07    18:39:58.766            122.44    500.00000000    56
2024.06.07    18:39:58.866            122.44    3.00000000    56
2024.06.07    18:39:59.077    122.42                2

2024.06.07    18:40:02.219    124.50                2
2024.06.07    18:40:09.125        122.40            4
2024.06.07    18:40:10.423        122.44            4
2024.06.07    18:40:16.138        122.11            4
2024.06.07    18:40:33.219        122.00            4
2024.06.07    18:40:37.162        120.60            4
2024.06.07    18:40:37.925        122.00            4
2024.06.07    18:40:39.724        120.15            4
2024.06.07    18:40:40.195        122.00            4
2024.06.07    18:40:41.156        119.85            4
2024.06.07    18:40:41.745        122.00            4
2024.06.07    18:40:43.002        120.45            4
2024.06.07    18:40:43.418        122.00            4
2024.06.07    18:40:46.738        120.75            4
2024.06.07    18:40:47.063        122.00            4
2024.06.07    18:40:47.993        121.35            4
2024.06.07    18:40:48.518        122.00            4
2024.06.07    18:40:49.344    124.51                2
2024.06.07    18:40:49.676        121.65            4
2024.06.07    18:40:50.117        122.00            4
2024.06.07    18:40:50.954        121.35            4
2024.06.07    18:40:51.450        122.00            4
2024.06.07    18:40:52.216        121.00            4
2024.06.07    18:40:57.430        119.25            4
2024.06.07    18:40:57.878        121.00            4
2024.06.07    18:40:59.925        118.20            4
2024.06.07    18:41:00.582    124.51    121.00            6
2024.06.07    18:41:10.659        122.00            4
2024.06.07    18:41:15.434        121.00            4
2024.06.07    18:41:16.735    124.50                2
2024.06.07    18:41:20.734    124.52                2
2024.06.07    18:41:25.836    124.50                2
2024.06.07    18:42:07.539    125.00                2
2024.06.07    18:45:12.053            122.50    100.00000000    56
...
2024.06.07    18:49:38.883            122.50    1.00000000    88
2024.06.07    18:49:55.460            122.50    14.00000000    88

2024.06.07    19:00:04.717    123.00    134.12            6
2024.06.07    19:00:05.252        122.96            4
2024.06.07    19:00:05.604        122.58            4
2024.06.07    19:00:06.885    123.01                2

2024.06.07    19:00:13.358    131.13                2
2024.06.07    19:00:13.876        122.50            4
2024.06.07    19:00:54.961    132.50                2
2024.06.07    19:01:30.077    131.13    122.50            6
2024.06.07    19:01:31.830    132.50                2
2024.06.07    19:01:42.297    131.13                2
2024.06.07    19:01:45.138    134.00                2
2024.06.07    19:03:19.156    134.00    122.49            6
2024.06.07    19:03:20.834    134.14                2
2024.06.07    19:03:32.904    134.00                2
2024.06.07    19:03:38.211    131.13                2
2024.06.07    19:03:46.854    134.00                2
2024.06.07    19:04:06.388    134.00    122.48            6
2024.06.07    19:04:47.817        122.40            4
2024.06.07    19:04:52.026            122.55    20.00000000    88
2024.06.07    19:04:52.026            122.55    5.00000000    88
2024.06.07    19:04:52.027            122.55    1.00000000    88
2024.06.07    19:04:52.027            122.55    10.00000000    88
2024.06.07    19:04:52.027            122.55    50.00000000    88
2024.06.07    19:04:52.027            122.55    12.00000000    88
2024.06.07    19:04:52.027            122.55    106.00000000    88


2024.06.07    19:04:52.027    122.55    122.58            6
2024.06.07    19:05:02.622            122.55    150.00000000    88
2024.06.07    19:05:02.622            122.55    150.00000000    88
2024.06.07    19:05:02.622            122.55    150.00000000    88

Решил распечатать тики в более наглядном виде, чем выше и обнаружил баг. 
Код для воспроизведения:

void OnTick(){
  if(Tick.time>= D'2024.06.07 18:39:58' && Tick.time< D'2024.06.07 19:05:03')
{ Print(Tick.time,".",Tick.time_msc%1000," ",Tick.bid," ",Tick.ask," ",Tick.last," ",Tick.volume," ",Tick.volume_real," ",Tick.flags);}
}



Несколько строк из терминала:

Они же из распечатки:

2024.06.07 18:49:14   2024.06.07 18:49:14.928 122.5 122.5 122.5 10 10.0 344
2024.06.07 18:49:38   2024.06.07 18:49:38.883 122.5 122.5 122.5 1 1.0 344
2024.06.07 18:49:55   2024.06.07 18:49:55.460 122.5 122.5 122.5 14 14.0 344
2024.06.07 19:00:04   2024.06.07 19:00:04.717 123.0 134.12 122.5 14 14.0 6
2024.06.07 19:00:05   2024.06.07 19:00:05.252 123.0 122.96 122.5 14 14.0 4
2024.06.07 19:00:05   2024.06.07 19:00:05.604 123.0 122.58 122.5 14 14.0 4
2024.06.07 19:00:06   2024.06.07 19:00:06.885 123.01 122.58 122.5 14 14.0 2
2024.06.07 19:00:13   2024.06.07 19:00:13.358 131.13 122.58 122.5 14 14.0 2
2024.06.07 19:00:13   2024.06.07 19:00:13.876 131.13 122.5 122.5 14 14.0 4
2024.06.07 19:00:54   2024.06.07 19:00:54.961 132.5 122.5 122.5 14 14.0 2
2024.06.07 19:01:30   2024.06.07 19:01:30.77 131.13 122.5 122.5 14 14.0 6
2024.06.07 19:01:31   2024.06.07 19:01:31.830 132.5 122.5 122.5 14 14.0 2
2024.06.07 19:01:42   2024.06.07 19:01:42.297 131.13 122.5 122.5 14 14.0 2
2024.06.07 19:01:45   2024.06.07 19:01:45.138 134.0 122.5 122.5 14 14.0 2
2024.06.07 19:03:19   2024.06.07 19:03:19.156 134.0 122.49 122.5 14 14.0 6
2024.06.07 19:03:20   2024.06.07 19:03:20.834 134.14 122.49 122.5 14 14.0 2
2024.06.07 19:03:32   2024.06.07 19:03:32.904 134.0 122.49 122.5 14 14.0 2
2024.06.07 19:03:38   2024.06.07 19:03:38.211 131.13 122.49 122.5 14 14.0 2
2024.06.07 19:03:46   2024.06.07 19:03:46.854 134.0 122.49 122.5 14 14.0 2
2024.06.07 19:04:06   2024.06.07 19:04:06.388 134.0 122.48 122.5 14 14.0 6
2024.06.07 19:04:47   2024.06.07 19:04:47.817 134.0 122.4 122.5 14 14.0 4
2024.06.07 19:04:52   2024.06.07 19:04:52.26 134.0 122.4 122.55 20 20.0 344
2024.06.07 19:04:52   2024.06.07 19:04:52.26 134.0 122.4 122.55 5 5.0 344

Выделенные строки показывают объем 14, но объем не указан на скриншоте из терминала, т.е. = 0. 
Предполагаю, что тестер не отфильтровал их по флагам и оставил последний объем из известных, так же и цену Last оставил последнюю 122.5.

Только не пишите, что я должен костылить правильные объемы и Last-ы через флаги. Инструкция https://www.mql5.com/ru/docs/constants/structures/mqltick этого не предлагает.

Какая то деградация платформы (. Примитивные, базовые вещи ломают.

Интересно что за флаг 256, который там вместо 88 видим 344 = 88+256 ?  
Вот используют флаги для чего-то необъявленного, почему для полезного дела не использовать, для пометки о торговой сессии?

Известные флаги:   2,4,8,16,32,64. Так что еще 128 есть, но в распечатке не видно.

Aleksei Kuznetsov #:

Интересно что за флаг 256, который там вместо 88 видим 344 = 88+256 ?  
Вот используют флаги для чего-то необъявленного, почему для полезного дела не использовать, для пометки о торговой сессии?

Известные флаги:   2,4,8,16,32,64. Так что еще 128 есть, но в распечатке не видно.

Это давняя и известная история:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MqlTick.flags выводит другие флаги (отличаются от TICK_FLAG_*)

Stanislav Korotky, 2024.08.22 18:14

Все прочие биты являются внутренними (проставляются платформой для себя в различных ситуациях) и не документированы, потому что могут меняться. На форуме представители MQ рассказывали про некоторые такие доп.флаги - можно поискать контекстно (лучше гуглом). Они никак не мешают работать с публичными флагами.


Aleksei Kuznetsov #:

Из экспорта тиков: 
В 18:40:02 ставится неправильные Bid>Ask потом идут тики без объемов и с 18:45 тики с объемами. 
В 19:00:04.717    123.00    134.12 всего 1 тик ставится правильным Bid<Ask, но Ask ставится очень большим (красная линия на графике)
В 19:00:05 снова неправильные Bid>Ask, дальше тики без объемов и с объемами
В 19:04:52 возвращается правильный Bid<Ask и дальше с 19:05 начинается торговая сессия.

Получается что при Bid>Ask неторговое время и нужно все пропускать. 
Но тик в 19:00:04 не укладывается в это предположение. Возможно дополнительным фильтром является то, что он без объема, т.е. до первого тика с объемом после Bid>Ask нужно все тики пропускать.

Попробую и себе это закодировать.

Закодировал и проверил. И увидел, что время остановки торгов еще менялось. 
Сначала было как в таблице с 18:40 до 19:05.
Потом стало только с 18:40 до 18:45
А сейчас с 18:54/55 до 18:57 укладываются
Вот момент перехода на последний вариант - с 23 марта 2026

2026.03.19 18:40:09   No trading: 2026.03.19 18:40:09
2026.03.19 18:45:28   First trade tick: 2026.03.19 18:45:28.388 130.7 130.71 130.71 10 10.0 312
2026.03.20 06:50:05   No trading: 2026.03.20 06:50:05
2026.03.20 07:00:00   First trade tick: 2026.03.20 07:00:00.133 130.76 130.97 130.74 1 1.0 344
2026.03.20 18:40:01   No trading: 2026.03.20 18:40:01
2026.03.20 18:45:13   First trade tick: 2026.03.20 18:45:13.922 130.97 131.0 131.0 1 1.0 312
2026.03.23 06:50:10   No trading: 2026.03.23 06:50:10
2026.03.23 07:00:00   First trade tick: 2026.03.23 07:00:00.226 132.07 132.1 132.1 7 7.0 312
2026.03.23 14:12:59   No trading: 2026.03.23 14:12:59 -- бывают и случайные сбойные тики в середине дня
2026.03.23 14:13:00   First trade tick: 2026.03.23 14:13:00.8 129.96 129.98 130.01 50 50.0 312
2026.03.23 18:55:03   No trading: 2026.03.23 18:55:03
2026.03.23 18:57:40   First trade tick: 2026.03.23 18:57:40.949 132.21 132.23 132.21 4 4.0 344
2026.03.24 06:50:07   No trading: 2026.03.24 06:50:07
2026.03.24 07:00:00   First trade tick: 2026.03.24 07:00:00.279 131.59 131.67 131.65 1 1.0 344
2026.03.24 18:55:05   No trading: 2026.03.24 18:55:05
2026.03.24 18:57:55   First trade tick: 2026.03.24 18:57:55.999 135.59 135.6 135.6 25 25.0 344

Так что вручную календари крайне сложно прописать и информацию неясно где брать - по ссылке из ранних постов на сайте биржи по прежнему вариант с 18:40 до 19:05 показан. Так что флаг для торговой сессии был бы очень кстати, вместо всего этого...

Вот из терминала на 23 марта

В 18:55:03 Ask сделали меньше Bid и в 18:57:40, вернули выше Bid. Да и после этих моментов тики выглядят как обычные торговые.

И бары отсутствуют только за 55 и 56 минуты: (после 54 идет 57)

До 19:00 3 бара с одной ценой. Видимо там нет торговли. Но мой алгоритм не позволяет их отсеять, пока что, нужно еще условие придумать.