beta подрастает к релизу и обзаводится новыми новшествами :-)
нелишний раз напоминаю - чарты ByByt будут доступны в платформе MetaTrader 5
Вслед за https://www.mql5.com/ru/blogs/post/756894 идёт работа над релизом.
Пойман "за живое" и заборот неприятный баг (не вполне мой, редкий, сложно ловимый, но всё-же):
порой МетaTrader мастерски трёт историю инструмента. Теперь синхронизатор ByBitSync перепроверяет "а не затёрта ли трудами добытая история к чёртовой матери" и при малейших сомнениях перекачивает её заново.
Добавляется поток 1ms и торговая лента.
Историю ленты конечно девать некуда, но цена last и volume_real в MqlTick будут выставляться оттуда. В публичной beta volume_real соотносился с объёмом из стакана. Теперь как по спецификации будет объёмом последней сделки. Как side-effect пропадают зазря данные bid1volume, ask1volume (объёмы в стакане по границам спреда).
На нём-же попробован более быстрый парсер json, к релизу прочие части переведу на него
В ATcl (интерпретатор tcl) добавляется поддержка типов ulong и long long.
Самому tcl по барабану, он в случае переполнения long переходит на рассчёты в wide/big int, где не ограничено число разрядов, а вот интерфейсу mql<->tcl приходится отдельно рассказывать :-)
Понадобилось при измерении времени, чтобы корректно в Mql получать результат "clock microseconds" (системное время в микросекундах)
Самыми медленными частями оказались:
ВНЕЗАПНО: CustomRatesUpdate() обновляющий одну последнюю свечу. Иногда (редко, но) втормаживает аж до 2-х секунд. По невыясненным пока причинам, подозреваю что связано с кешированием в терминале, пересчётом таймфреймов и сбросом базы на диск. Потому что действительно редко, подряд несколько раз и потом часами опять всё гладко и быстро.
вполне ожидаемо, цикл перебора чартов : for(long chart=ChartFirst();chart!=0; chart=ChartNext(chart)).. Но оказалось что может на несколько секунд. Что там за это время терминал делает непонятно. (может валюту майнит, нет других соображений про причину такой занятости :-) ). Полностью от этого цикла не избавиться, но к релизу он будет прерываться/отменяться при "перерасходе времени". Или придётся добавлять ещё один сервис, контролирующий чарты.