Обсуждение статьи "Мультитаймфреймовый движок без утечек дескрипторов с чтением закрытых баров в MQL5"
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Опубликована статья Мультитаймфреймовый движок без утечек дескрипторов с чтением закрытых баров в MQL5:
Писать мультитаймфреймовую (MTF) логику на MQL5 в теории довольно просто: создать дескрипторы индикаторов в OnInit(), считывать значения из последнего закрытого бара (shift = 1) и освобождать дескрипторы в OnDeinit(). На практике эти правила существуют лишь «в голове разработчика». Достаточно одного вызова iMA() внутри OnTick() или набранного по привычке CopyBuffer(…,0,…), чтобы появились две незаметные, но опасные ошибки: неосвобожденные экземпляры индикаторов, которые постепенно исчерпывают ресурсы терминала, и «фантомные» сигналы, срабатывающие на значениях еще формирующегося бара и исчезающие после закрытия бара. Симптомы малозаметны: растущее потребление памяти процессом mt5.exe, строки в журнале вроде «IndicatorCreate failed» или стратегия, которая в реальной торговле генерирует больше сигналов, чем в бэктесте на закрытых барах, — поэтому многие авторы упускают причину.
В этой статье представлено структурное решение: MTFEngine.mqh. Вместо того чтобы полагаться на дисциплину разработчика, движок делает правильное поведение поведением по умолчанию. Все дескрипторы индикаторов создаются только во время инициализации и управляются внутренне; функция ReadBuffer() по умолчанию использует bar_shift = 1 и обеспечивает безопасное чтение массивов для проверки пересечений; функция IsReady() проверяет как содержимое буфера, так и временные метки баров старшего таймфрейма (HTF), чтобы избежать чтения устаревших данных старшего таймфрейма; а единый вызов ReleaseAll() освобождает все дескрипторы. В результате получается небольшой и понятный API, который предотвращает два распространенных режима отказа еще до их появления.
Автор: Ushana Kevin Iorkumbul