Статьи по автоматизации торговых систем на языке MQL5

icon

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

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

Новая статья
последние | лучшие
preview
Разработка динамического мультивалютного советника (Часть 9): Фильтрация шума исполнения с учетом микроструктуры рынка

Разработка динамического мультивалютного советника (Часть 9): Фильтрация шума исполнения с учетом микроструктуры рынка

В статье представлен фильтр исполнения для нескольких торговых инструментов, который оценивает качество рынка в реальном времени, прежде чем разрешить сделку. Он измеряет динамику спреда, скорость тиков, разрывы в котировках и микроволатильность, оценивает проскальзывание, а затем классифицирует состояние рынка, чтобы блокировать торговлю при неблагоприятных условиях. После затухания шума модель продолжения движения после свипа ликвидности оценивает изменения структуры рынка, чтобы входы в рынок происходили только при стабильных условиях исполнения.
preview
Поиск торгового преимущества (Часть 2): Использование картирования дивергенций и трансформера временного слияния (TFT) в торговом роботе

Поиск торгового преимущества (Часть 2): Использование картирования дивергенций и трансформера временного слияния (TFT) в торговом роботе

В этой статье мы обосновываем целесообразность объединения картирования дивергенций с имитационной моделью на основе TFT. Основная идея картирования дивергенций состоит в том, чтобы не полагаться на запаздывающие подтверждения со стороны цены, а использовать метод как структурный датчик, помогающий выявлять скрытые изменения импульса по движению цены и аномалиям индикаторов. Чтобы определить, как эти аномалии интерпретируются с течением времени, мы используем упрощенную модель TFT. Эта сеть учитывает исторический контекст при оценке формирующихся трендов, поэтому ее объединение с картированием дивергенций должно позволить нам выявлять изменения в накоплении и распределении еще до ценовых пробоев.
preview
Конструирование признаков для машинного обучения (Часть 7): Энтропийные признаки в Python

Конструирование признаков для машинного обучения (Часть 7): Энтропийные признаки в Python

В статье представлены готовые к промышленной эксплуатации оцениватели энтропии (Шеннона, подстановочный, Лемпеля — Зива, Контоянниса), работающие с последовательностями, закодированными по тиковому правилу. В статье устранены три проблемы корректности и производительности исходного кода, результаты сверены с данными из главы, а возможности кодирования расширены за счёт квантильного и сигма-кодирования. Пользователи получают воспроизводимые результаты и заметно более высокую скорость вычислений при работе с большими наборами баров.
preview
Создание системы торговой аналитики (Часть 1): Основы и архитектура системы

Создание системы торговой аналитики (Часть 1): Основы и архитектура системы

Мы проектируем простой внешний пайплайн аналитики торговых операций для MetaTrader 5 и реализуем его бэкенд на Python с использованием Flask и SQLite. В статье определяются архитектура, модель данных и API с поддержкой версий, а также показано, как настроить среду, инициализировать базу данных и локально запустить сервер. В результате вы получаете понятную основу для сбора записей о закрытых торговых операциях из MetaTrader 5 и их хранения для последующего анализа.
preview
RiskGate: Централизованное управление рисками для нескольких советников

RiskGate: Централизованное управление рисками для нескольких советников

Во многих конфигурациях MetaTrader 5 на одном счете работают несколько советников, поэтому управление рисками оказывается разрозненным, а экспозиция по коррелирующим инструментам остается незамеченной. В статье представлен RiskGate — централизованный сервис, который оценивает торговые намерения советников на уровне всего счета: советники отправляют сигнал в формате JSON, а сервис возвращает поля approved, lot и reason. Вы увидите схему взаимодействия клиента и сервера, примеры правил (лимит дневного убытка, лимиты экспозиции и корреляции), архитектуру обработчика, проверенную модульными тестами, и пример советника. В результате обеспечивается согласованное управление рисками на уровне портфеля, а сами советники становятся проще.
preview
Как разработать мультивалютного советника с ИИ-помощником (AI Assistant) в MetaTrader 5

Как разработать мультивалютного советника с ИИ-помощником (AI Assistant) в MetaTrader 5

Собрать мультисимвольного советника, да чтобы еще и торговал по разным стратегиям — это задача со звездочкой даже для алготрейдера с многолетним опытом. Но с появлениям полноценного встроенного AI помощника в терминале MetaTrader 5 теперь это посильно разработчику любого уровня. При этом даже не требуется быть специалистом в математике и риск-менеджменте — языковая модель все вам объяснит в чате и напишет полностью за вас код.
preview
Проектирование конечного автомата торговой стратегии на MQL5: Замена вложенных конструкций if-else явными состояниями

Проектирование конечного автомата торговой стратегии на MQL5: Замена вложенных конструкций if-else явными состояниями

Вложенные условные конструкции if-else внутри функции OnTick() создают неявные состояния, которые сложно изолировать, отлаживать и расширять без возникновения регрессионных ошибок. Реализация конечного автомата (FSM) на MQL5 использует интерфейс IState, посредник CStrategyContext и четыре конкретных состояния, чтобы отделить логику обнаружения от логики поведения. Структура из трёх подключаемых файлов устраняет циклические зависимости подключаемых файлов и чётко разделяет объявления, определения и создание экземпляров, делая внесение изменений безопаснее, а отладку — быстрее.
preview
Кэширование метаданных символов и расписаний торговых сессий в MQL5: Устранение лишних вызовов SymbolInfo в мультисимвольных советниках

Кэширование метаданных символов и расписаний торговых сессий в MQL5: Устранение лишних вызовов SymbolInfo в мультисимвольных советниках

В этой статье представлен CSymbolMetaCache — программный слой на MQL5, который при запуске советника заранее загружает спецификации контрактов и расписания торговых сессий отслеживаемых символов, а затем возвращает их значения через типизированные геттеры из кэша в памяти. В статье объясняется, какие свойства можно безопасно кэшировать, а какие являются динамическими, включая полудинамическую стоимость тика для кросс-валютных пар. Также реализуется функция IsMarketOpen(), которая определяет, открыта ли сессия, используя кэшированные данные. Тест производительности показывает, насколько сокращается задержка при работе с набором из двадцати символов.
preview
Конструирование признаков для машинного обучения (Часть 5): Микроструктурные признаки на Python

Конструирование признаков для машинного обучения (Часть 5): Микроструктурные признаки на Python

В статье представлен набор микроструктурных признаков из главы 19, реализованный в модуле afml.features.microstructure, и описана двухуровневая архитектура для работы как только с данными OHLCV, так и с добавлением тиковых данных. Мы рассматриваем оценки спреда и волатильности по Роллу и Корвину — Шульцу, лямбду Кайла, лямбду Амихуда и лямбду Хасбрука, VPIN, а также признаки дисбаланса на уровне баров — всё это реализовано в вычислительных ядрах, ускоренных с помощью Numba. Один проход с использованием np.searchsorted определяет границы баров, что позволяет выполнять параллельные вычисления с помощью prange и получать матрицу признаков с индексом по барам, готовую для дальнейшего использования в моделях машинного обучения.
preview
Архитектура машинного обучения для MetaTrader 5 (Часть 19): Режимы бэггинга

Архитектура машинного обучения для MetaTrader 5 (Часть 19): Режимы бэггинга

Мы проверяем утверждение AFML о том, что последовательный бутстрэп снижает корреляцию между деревьями в ансамбле бэггинга на метках метода тройного барьера с перекрывающимися временными интервалами, раздельно исследуя два фактора: число наблюдений в выборке и правило отбора. Бэггинг с одной и той же базовой моделью — деревом решений — применяется в четырёх режимах формирования выборки строк и оценивается на данных EURUSD за 2022–2023 годы по уникальности сформированных выборок, корреляции между деревьями, AUC и калибровке вероятностных прогнозов. Снижение корреляции почти полностью достигается за счёт ограничения max_samples до уровня средней уникальности; последовательный бутстрэп даёт лишь небольшой дополнительный эффект. Завышение OOB-оценки наиболее выражено при последовательном бутстрэпе с полным числом извлечений.
preview
Конструирование признаков для машинного обучения (Часть 6): Признаки микроструктуры рынка в MQL5

Конструирование признаков для машинного обучения (Часть 6): Признаки микроструктуры рынка в MQL5

В статье представлен CMicrostructureFeatures — класс на языке MQL5 для расчета признаков микроструктуры рынка на уровне баров: спреда Ролла и ценового воздействия по Роллу, спреда и сигмы Корвина — Шульца, лямбды Кайла, показателя неликвидности Амихуда (ILLIQ) и лямбды Хасбрука. Расчеты основываются исключительно на данных OHLCV с использованием скользящих окон. В статье разъясняется, как использование тикового объема MetaTrader 5 влияет на оценки лямбды; при этом оценки спреда остаются независимыми от объема. Скрипт проверяет размеры выходных данных и соблюдение базовых ограничений на их значения.
preview
Автоматизация классических рыночных методов на MQL5 (Часть 5): Исходные правила торговой системы "Черепах"

Автоматизация классических рыночных методов на MQL5 (Часть 5): Исходные правила торговой системы "Черепах"

В этой статье описывается создание полнофункционального торгового советника на MQL5, реализующего исходные правила торговой системы «Черепах», опубликованные Куртисом Фейсом. В статье рассматриваются обе системы: пробои 20/55-дневных уровней, правило пропуска сигнала Системы 1, величина N (ATR со сглаживанием Уайлдера) для расчета объема позиции с учетом волатильности, пирамида позиций из четырех торговых единиц с добавлением торговой единицы через каждые N/2, единый стоп-лосс на расстоянии 2N и выходы по 10/20-дневным уровням. Вы получите компилируемый код, подробности реализации и процедуру тестирования на исторических данных по паре EURUSD.
preview
Свинговые экстремумы и откаты в MQL 5 (Часть 4): Динамическая глубина отката на основе моделей волатильности

Свинговые экстремумы и откаты в MQL 5 (Часть 4): Динамическая глубина отката на основе моделей волатильности

В этой статье бинарная проверка свингов заменяется моделью отката, нормализованной по волатильности. Глубина коррекции измеряется как доля предшествующего импульса и калибруется с учетом режима волатильности, определяемого по скользящему ATR, а для входа в сделку требуются оценка качества не ниже минимальной и подтверждение сигналами структуры или ликвидности. Пятиуровневая архитектура объединяет обнаружение, проверку, картирование ликвидности, оценку с учетом рыночного режима и исполнение сделок, помогая отфильтровывать слабые коррекции и динамически подбирать размер стоп-лоссов под текущие условия.
preview
Архитектура машинного обучения в MetaTrader 5 (Часть 18): Исправленный последовательный бутстрэп — клонирование, стирание типа и инструментарий сравнения

Архитектура машинного обучения в MetaTrader 5 (Часть 18): Исправленный последовательный бутстрэп — клонирование, стирание типа и инструментарий сравнения

В статье выявляются два дефекта, которые сводят на нет эффект последовательного бутстрэпа при перекрестной проверке: стирание типа SequentiallyBootstrappedBaggingClassifier и несоответствие размерностей на уровне фолда из-за клонирования полного набора информационных интервалов наблюдений. Предлагаемое исправление сохраняет принадлежность классификатора к исходному классу, добавляет функцию _find_seq_bagging() для повторной передачи в CalibratorCV.fit данных t1, ограниченных текущим фолдом, и сбрасывает состояние при каждом разбиении. Новый модуль bootstrap_comparison выводит OOF-метрики и на наблюдениях вне бутстрэп-выборки (OOB), а также данные об использовании памяти, позволяя проверить правильность применения последовательного отбора и количественно оценить его влияние.
preview
Генетическое программирование — Genetic Programming (GP)

Генетическое программирование — Genetic Programming (GP)

Разбираем алгоритм Genetic Programming (GP) — классический метод, который выращивает не числа, а формулы. Почему знаменитый алгоритм в каноническом виде проигрывает обычному случайному поиску во всех тестах, и какая одна строка возвращает ему силу? Ответ касается любого оптимизатора с пропорциональным отбором. В конце статьи — готовый код GP на MQL5, который можно сразу использовать для своих задач.
preview
Отложенная загрузка хендлов индикаторов в MQL5: Менеджер ресурсов для мультитаймфреймовых советников

Отложенная загрузка хендлов индикаторов в MQL5: Менеджер ресурсов для мультитаймфреймовых советников

Мультитаймфреймовые торговые советники, которые инициализируют все хэндлы индикаторов в OnInit(), несут фиксированные затраты на запуск, даже если большинство хэндлов никогда не используется. CIndicatorCache использует отложенную загрузку с поиском по составному ключу, методы получения/освобождения AcquireHandle() и ReleaseHandle() с подсчетом ссылок и детерминированный метод FlushAll() для полной очистки кэша. Хэндлы создаются при первом запросе и повторно используются на последующих тиках, что сокращает задержку при запуске, позволяет избежать повторного выделения памяти в куче и предотвращает утечки ресурсов терминала благодаря централизованному владению ресурсами.
preview
Конструирование признаков для машинного обучения (Часть 8): Энтропийные признаки в MQL5

Конструирование признаков для машинного обучения (Часть 8): Энтропийные признаки в MQL5

Реализация на MQL5 четырех методов оценки энтропии — энтропии Шеннона, подстановочной оценки энтропии (Plug-In), сложности Лемпеля — Зива и энтропии Контоянниса — для последовательности, полученной по тиковому правилу внутри бара. CopyTicksRange() ограничивает доступные данные окном тикового кеша брокера, поэтому признаки можно рассчитывать только для недавних баров. В реализации тики из структуры MqlTick кодируются по направлению изменения цены Bid, операции, зависящие от NumPy, заменяются методами работы с массивами, а для использования в советниках и индикаторах предоставляются файлы CEntropyFeatures.mqh и EntropyViewer.mq5.
preview
Встраивание торговой дисциплины в код (Часть 8): Подтверждение сетапов и контроль разрешения торговли

Встраивание торговой дисциплины в код (Часть 8): Подтверждение сетапов и контроль разрешения торговли

В этой статье представлен фреймворк разрешения торговли на MQL5, построенный на основе классов CDisciplineLayer, CDisciplineGuardian и CDisciplinePanel. Этот фреймворк управляет жизненными циклами сетапов, актуальностью сигналов, ограничениями торговых сессий, истечением срока действия сетапов и глобальными блокировками торговли через централизованный уровень разрешения торговли. Он также обеспечивает автоматическое принудительное соблюдение правил при выявлении нарушений и предоставляет информационную панель, работающую в режиме реального времени, что позволяет единообразно проверять и отслеживать торговые операции до и после их исполнения.
preview
Конструирование признаков для машинного обучения (Часть 9): Tесты на структурные сдвиги на Python

Конструирование признаков для машинного обучения (Часть 9): Tесты на структурные сдвиги на Python

Мы представляем реализацию тестов на структурные сдвиги из главы 17 AFML, готовую для использования в реальных системах. Модуль включает тест Чу — Стинчкомба — Уайта (односторонний и двусторонний варианты), тест Дики — Фуллера типа Чоу (DFC), SADF для шести моделей (линейная, квадратичная, sm poly 1, sm poly 2, sm exp, sm power), а также квантильную статистику ADF (QADF) с параметрами q и v и условное среднее ADF (CADF) с параметром q; результаты возвращаются в виде скалярных признаков с индексацией по барам. Мы устраняем проблемы масштабируемости фрагментов кода из книги и ошибку, связанную с порядком аргументов, а также показываем, как фиксированная глубина ретроспективы (L=504) ограничивает вычислительную сложность SADF величиной O(L²) на бар при выявлении рыночных режимов.
preview
Разработка собственного торгового советника (Часть 1): От ненадежного скрипта к работающему советнику

Разработка собственного торгового советника (Часть 1): От ненадежного скрипта к работающему советнику

В этой статье основное внимание уделяется архитектуре торгового советника, а не разработке торговых сигналов. Взяв за основу советник с недостатками, использующий пересечение скользящих средних, мы добавляем определение появления нового бара для предотвращения повторных входов, магический номер и учет открытых позиций, уровни стоп-лосса и тейк-профита, рассчитываемые на основе ATR, а также проверку данных и результатов торговых операций и базовые защитные механизмы. Вы получаете практическую базу для создания и тестирования сложных систем.
preview
Автоматизация классических рыночных методов в MQL5 (Часть 4): Трендовый шаблон Марка Минервини

Автоматизация классических рыночных методов в MQL5 (Часть 4): Трендовый шаблон Марка Минервини

В данной статье представлен TrendTemplateEA — советник, реализующий трендовый шаблон Марка Минервини из восьми условий для дневных графиков Forex. Он проверяет все условия на каждом баре и входит в рынок только при их одновременном выполнении, используя условие превышения индексом относительной силы (RSI) уровня 50 вместо рейтинга относительной силы (RS) фондового рынка. Сигнал входа — пробой максимума за 20 баров на фоне растущего объема; все правила реализованы в коде MQL5 и могут быть протестированы.
preview
Персистентное хранилище "ключ — значение" в MQL5: Плоские файлы как легковесная база данных для хранения состояния советника

Персистентное хранилище "ключ — значение" в MQL5: Плоские файлы как легковесная база данных для хранения состояния советника

Благодаря облегченной архитектуре системы сохранения данных торговые советники (EA) могут сохранять счетчики, флаги и временные метки между перезапусками терминала. Используя только средства MQL5, CPersistentStore записывает удобочитаемый файл формата key=value в папку MQL5/Files и обслуживает запросы на чтение из кэша со сквозной записью на основе CHashMap через типизированный API. В статье анализируются операции со сложностью O(1) и O(n), риски неполной записи и отсутствие блокировки файлов, проводится сравнение с глобальными переменными терминала (GlobalVariables) и SQLite, а также приводится демонстрационный пример с детерминированной повторной загрузкой состояния.
preview
Торговые инструменты на MQL5 (Часть 34): Замена штатных графических объектов интерактивным слоем рисования на холсте

Торговые инструменты на MQL5 (Часть 34): Замена штатных графических объектов интерактивным слоем рисования на холсте

Мы заменяем штатные графические объекты MetaTrader движком рисования на основе холста, который попиксельно отрисовывает инструменты на растровом слое, охватывающем весь график. В статье реализованы постоянное хранение объектов с запоминанием стиля для каждого инструмента, точная проверка попадания, выделение, перетаскивание объекта целиком и управление маркерами. Также добавлены новые инструменты рисования линий, переработанная система категорий с действием удаления одним щелчком и предпросмотр с растягиваемым контуром для размещения несколькими щелчками.
preview
Создание системы торговой аналитики (Часть 3): Сохранение данных о сделках MetaTrader 5 в SQLite

Создание системы торговой аналитики (Часть 3): Сохранение данных о сделках MetaTrader 5 в SQLite

В этой статье мы расширим бэкенд на Flask, чтобы надежно принимать, проверять и сохранять данные о закрытых сделках из MetaTrader 5 с помощью SQLite и Flask-SQLAlchemy. В нем реализованы проверка обязательных полей, преобразование временных меток, сохранение данных в транзакциях с откатом при ошибке и работающие эндпоинты получения всех сделок, отдельных записей и базовой сводки. В результате получается полноценный пайплайн данных с локальным тестированием: он сохраняет записи о сделках и предоставляет доступ к ним через структурированный API для дальнейшего анализа.
preview
Конструирование признаков для машинного обучения (Часть 10): Tесты на структурные сдвиги в MQL5

Конструирование признаков для машинного обучения (Часть 10): Tесты на структурные сдвиги в MQL5

Мы перенесли тесты на структурные сдвиги из главы 17 AFML в MQL5 в виде единого подключаемого файла CStructuralBreaks, предоставляющего советникам шесть признаков, индексируемых по барам: статистику CSW и ее критическое значение, тест Дики — Фуллера типа Чоу (DFC), SADF со скользящим окном с заданной глубиной истории (по умолчанию 252 бара), SM-Exp и SM-Power. В SADF используются скользящие окна с вычислительной сложностью O(L²), что позволяет выполнять расчеты в реальном времени. Сопутствующий индикатор StructuralBreaksViewer строит графики всех рядов данных с возможностью настройки видимости каждого ряда и опциональной нормализацией по z-оценке. SB_EMPTY отмечает недопустимые значения для обеспечения безопасной интеграции.
preview
Управление позициями на MQL5: Торговый журнал с отслеживанием максимального неблагоприятного и благоприятного отклонений и расчетом R-множителя

Управление позициями на MQL5: Торговый журнал с отслеживанием максимального неблагоприятного и благоприятного отклонений и расчетом R-множителя

В этой статье представлен CTradeJournal — автономный класс MQL5 для отслеживания открытых позиций в реальном времени на каждом тике. Он отслеживает MAE, MFE и первоначальный риск в денежном выражении, рассчитывает R-множитель при закрытии позиции и формирует полную запись в CSV-файл. В тексте объясняются проектные решения, приводится реализация и демонстрируется простая интеграция с советником, позволяющая анализировать входы в рынок, размещение стоп-лоссов и распределение результатов.
preview
Возможности Мастера MQL5, которые вам нужно знать (Часть 99): Использование KD-дерева и эхо-сети (ESN) в пользовательском классе управления капиталом

Возможности Мастера MQL5, которые вам нужно знать (Часть 99): Использование KD-дерева и эхо-сети (ESN) в пользовательском классе управления капиталом

В этой статье описывается пользовательский класс управления капиталом CMoneyKDTreeESN, совместимый с Мастером MQL5 и объединяющий алгоритм KD-дерева и эхо-сеть (ESN). Мы применяем KD-дерево к логарифмическим доходностям и ATR (среднему истинному диапазону), чтобы получить оценку риска, а ESN отслеживает недавнюю рыночную динамику и выдает множитель объема позиции с ограниченным диапазоном значений. Наш класс можно использовать в различных советниках, созданных с помощью Мастера MQL5, как показано здесь на примере сигналов Envelopes и RSI; общая цель — регулировать рисковую экспозицию в условиях высокой волатильности и хвостового риска.
preview
Управление позициями: Построение самокалибрующейся лестницы выхода по историческим данным MFE в MQL5

Управление позициями: Построение самокалибрующейся лестницы выхода по историческим данным MFE в MQL5

Мы реализуем три класса MQL5, которые заменяют фиксированные целевые уровни 1R/2R/3R на уровни поэтапного закрытия, определяемые на основе данных. CExcursionTracker фиксирует максимальное благоприятное отклонение (MFE) в единицах R для каждой закрытой позиции, CExitLadderCalibrator формирует ступени на основе процентилей распределения с учетом окна ретроспективного анализа и минимального числа наблюдений, а CLadderExecutor выполняет закрытие на этих ступенях для открытых позиций. Лестница выхода перекалибруется по мере накопления закрытых позиций. Пока наблюдений недостаточно, используется резервная лестница выхода.
preview
Нейросети в трейдинге: AlphaGen — поиск торговых факторов

Нейросети в трейдинге: AlphaGen — поиск торговых факторов

Начинаем изучение AlphaGen — фреймворка автоматического поиска формульных факторов для прогнозирования рыночной доходности и формирования торговых сигналов. Разбираем, как генератор создаёт выражения из цен и объёмов, а совместная оценка факторов помогает отбирать полезные признаки для торговой модели. Рассматриваем адаптацию алгоритма к финансовым временным рядам. В практической части реализуем OpenCL-примитивы типизированного стека и маскирования токенов, обеспечивающие корректное построение формул с учётом ограничений доступной истории.
preview
Создание фреймворка для модульного тестирования на этапе компиляции в MQL5 с использованием утверждений препроцессора

Создание фреймворка для модульного тестирования на этапе компиляции в MQL5 с использованием утверждений препроцессора

В MQL5 отсутствуют встроенные средства модульного тестирования, поэтому ошибки в служебных функциях расчёта размера лота, стоимости пункта и нормализации часто попадают в рабочий код. В этой статье представлен фреймворк без внешних зависимостей, построенный на макросах утверждений препроцессора, наборах тестов на основе интерфейсов и центральном средстве запуска тестов с модулем форматирования результатов. Он работает как скрипт в обработчике OnStart, выполняет детерминированные тесты и выводит сводку об успешных и неуспешных тестах на вкладку "Эксперты", позволяя выявить дефекты округления, обработки граничных значений и ошибок до развёртывания.
preview
Менеджер жизненного цикла позиций на MQL5 (Часть 1): Основы повторно используемой системы управления позициями

Менеджер жизненного цикла позиций на MQL5 (Часть 1): Основы повторно используемой системы управления позициями

Менеджер жизненного цикла позиций с управлением на основе состояний упорядочивает сопровождение сделок после входа в рынок в MetaTrader 5. Он обнаруживает открытые позиции, отслеживает их с помощью управляемых объектов, применяет защиту на основе ATR, выполняет перевод в безубыток и удаляет завершённые сделки из отслеживания, следуя чёткой последовательности состояний: NEW → PROTECTED → BREAKEVEN → CLOSED. В статье показана интеграция менеджера со стандартным советником MACD, позволяющая повторно использовать менеджер в разных стратегиях.
preview
Торговые инструменты на MQL5 (Часть 35): Расширение слоя рисования на холсте — каналы, вилы, инструменты Ганна и Фибоначчи

Торговые инструменты на MQL5 (Часть 35): Расширение слоя рисования на холсте — каналы, вилы, инструменты Ганна и Фибоначчи

Мы расширяем слой рисования на холсте из предыдущей части, добавляя семь новых категорий аналитических инструментов с несколькими опорными точками, которые охватывают три варианта каналов, три варианта вил, три инструмента Ганна и шесть инструментов Фибоначчи. Рассмотрим, как каждый инструмент задает свою геометрию на холсте, как вычисляемые маркеры позволяют пользователям согласованно изменять форму составных фигур и как общие вспомогательные функции выполняют отсечение лучей, построчную заливку и отрисовку дуг со сглаживанием. В итоге у нас будет полный набор инструментов для аналитического рисования, которые будут располагаться на одном интерактивном холсте наряду с базовыми инструментами для рисования линий из предыдущей части.
preview
Паттерн "Строитель" в MQL5: Формирование ордеров с помощью цепочек вызовов методов

Паттерн "Строитель" в MQL5: Формирование ордеров с помощью цепочек вызовов методов

При ручном заполнении структуры MqlTradeRequest правила согласованности полей остаются непроверенными, что приводит к скрытым ошибкам конфигурации, проявляющимся во время выполнения. COrderBuilder с плавным интерфейсом (Fluent Interface) для MQL5 поддерживает цепочку вызовов методов с использованием указателей, проверку каждого поля и проверку расположения SL/TP с учетом направления сделки и ограничений брокера по уровню стопов. Метод Send() выполняет четыре этапа: проверку установки всех необходимых флагов, проверку согласованности полей, OrderCheck(), а затем OrderSend(), благодаря чему ошибки конфигурации выявляются на ранней стадии, а код отправки ордеров остается понятным и пригодным для повторного использования.
preview
Обобщенный пул объектов в MQL5: Снижение накладных расходов на выделение памяти в высокочастотных индикаторах

Обобщенный пул объектов в MQL5: Снижение накладных расходов на выделение памяти в высокочастотных индикаторах

В высокочастотных индикаторах MQL5, создающих объекты при каждом тике, накапливаются накладные расходы на выделение памяти и возникает джиттер времени выполнения в OnCalculate(). В этой статье создается обобщенный пул объектов на основе шаблона класса с использованием массива индексов списка свободных элементов, обеспечивающего выполнение операций Acquire() и Release() за время O(1). Архитектура предусматривает защиту от повторного возврата объекта в пул, строгое разделение состояния полезных данных и метаданных пула в методе Reset(), а также список свободных элементов фиксированной вместимости без резервного выделения памяти в куче. Пользовательский индикатор сравнивает два варианта обработки и с помощью GetMicrosecondCount() измеряет разницу накладных расходов на тик.
preview
Создание объектно-ориентированного расчетного модуля сессионного VWAP на MQL5

Создание объектно-ориентированного расчетного модуля сессионного VWAP на MQL5

В этой статье показано, как реализовать сессионный VWAP на MQL5 в виде пригодного для повторного использования подключаемого класса, который строго сбрасывает накопленные значения в полночь по времени брокера. Расчетный модуль вычисляет VWAP и взвешенные по объему полосы отклонения только по закрытым барам и задает временную привязку накопления с помощью MqlDateTime, чтобы избежать искажений из-за отсутствующих свечей. Вспомогательный индикатор отображает базовую линию и полосы, а советник считывает сигналы один раз на бар, что обеспечивает согласованное выполнение, экономное использование ресурсов процессора и надежное тестирование.
preview
Нейросети в трейдинге: AlphaGen — поиск торговых факторов (генерация формул)

Нейросети в трейдинге: AlphaGen — поиск торговых факторов (генерация формул)

Продолжаем адаптацию AlphaGen для MetaTrader 5. В первой части мы реализовали правила, определяющие допустимые продолжения формулы. Теперь разбираем, как генератор OpenCL применяет эти правила и по оценкам модели выбирает токены, а вычислитель проверяет готовое выражение и рассчитывает значения торгового фактора по барам. Показываем, как по статусу результата отличить корректный ноль от пропуска из-за нехватки истории и распознать ошибку вычисления.