Статьи по программированию на языках MQL4 и MQL5

icon

Изучайте язык программирования торговых стратегий MQL5 по опубликованным здесь статьям, большая часть которых написана вами - членами сообщества. Все статьи разделены на категории для быстрого поиска ответа по тому или иному аспекту программирования: "Интеграция", "Тестер", "Торговые стратегии" и многое другое.

Следите за новыми публикациями и участвуйте в их обсуждении на форуме!

Новая статья
последние | лучшие
preview
Торговый инструментарий MQL5 (Часть 5): Расширение EX5-библиотеки для управления историей с помощью функций позиции

Торговый инструментарий MQL5 (Часть 5): Расширение EX5-библиотеки для управления историей с помощью функций позиции

В этой статье мы узнаем, как создавать экспортируемые EX5-функции для эффективного запроса и сохранения исторических данных о позициях. В этом пошаговом руководстве мы расширим EX5-библиотеку для управления историей (History Management), разработав модули, которые извлекают ключевые свойства последней закрытой позиции. К ним относятся чистая прибыль, продолжительность сделки, стоп-лосс и тейк-профит в пипсах, значения прибыли и другие важные данные.
Материалы Automated Trading Championship: Регистрация
Материалы Automated Trading Championship: Регистрация

Материалы Automated Trading Championship: Регистрация

В данной статье собраны полезные материалы, которые помогут вам узнать больше о процедуре регистрации на Automated Trading Championship.
preview
Разработка системы репликации (Часть 67): Совершенствуем индикатор управления

Разработка системы репликации (Часть 67): Совершенствуем индикатор управления

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

Разработка динамического советника на нескольких парах (Часть 2): Диверсификация и оптимизация портфеля

Диверсификация и оптимизация портфеля позволяют стратегически распределять инвестиции по нескольким активам, чтобы минимизировать риски, и при этом выбирать идеальную комбинацию активов для максимизации доходности на основе показателей эффективности с учетом риска.
preview
От новичка до эксперта: Создание анимированного советника для новостей в MQL5 (II)

От новичка до эксперта: Создание анимированного советника для новостей в MQL5 (II)

Сегодня мы делаем еще один шаг вперед, интегрируя внешний новостной API в качестве источника заголовков для нашего советника «Заголовки новостей». На этом этапе мы изучим различные источники новостей — как существующие, так и новые — и узнаем, как эффективно использовать их API. Мы также рассмотрим методы парсинга полученных данных в формат, оптимизированный для отображения в нашем экспертном советнике. Присоединяйтесь к обсуждению, пока мы обсуждаем преимущества использования заголовков новостей и экономического календаря непосредственно на графике. И все это в компактном, ненавязчивом интерфейсе.
preview
Алгоритм кристаллической структуры — Crystal Structure Algorithm (CryStAl)

Алгоритм кристаллической структуры — Crystal Structure Algorithm (CryStAl)

В статье представлены две версии Алгоритма кристаллической структуры, оригинальная и модифицированная. Алгоритм Crystal Structure Algorithm (CryStAl), опубликованный в 2021 году и вдохновленный физикой кристаллических структур, позиционировался как parameter-free метаэвристика для глобальной оптимизации. Однако тестирование выявило критическую проблему алгоритма. Представлена также модифицированная версия CryStAlm, которая исправляет ключевые недостатки оригинала.
preview
Адаптивная архитектура Smart Money (ASMA): Интеграция логики SMC с анализом сентимента для динамического переключения стратегий

Адаптивная архитектура Smart Money (ASMA): Интеграция логики SMC с анализом сентимента для динамического переключения стратегий

В этой теме рассматривается, как построить адаптивную архитектуру Smart Money (ASMA) — интеллектуального советника, который объединяет концепции Smart Money Concepts (Order Blocks, Break of Structure, Fair Value Gaps) с рыночными настроениями в реальном времени, чтобы автоматически выбирать наиболее подходящую торговую стратегию исходя из текущего рыночного режима.
preview
Алгоритм Цветовой Гармонии — Color Harmony Algorithm (CHA)

Алгоритм Цветовой Гармонии — Color Harmony Algorithm (CHA)

Разбираем алгоритм цветовой гармонии (CHA) — метаэвристику оптимизации, опирающуюся на теорию цветовой гармонии Манселла. Показываем устройство круга тонов, шаблоны гармонии, чередование фаз концентрации и рассеивания, а также роль памяти решений. От теоретического каркаса до рабочей реализации на MQL5 и честного тестирования на стандартном бенчмарке.
preview
Торговые инструменты на MQL5 (Часть 11): Панель корреляционной матрицы (Пирсон, Спирман, Кенделл) с тепловой картой и стандартным режимом

Торговые инструменты на MQL5 (Часть 11): Панель корреляционной матрицы (Пирсон, Спирман, Кенделл) с тепловой картой и стандартным режимом

В этой статье мы создаем панель корреляционной матрицы в MQL5 для вычисления взаимосвязей между активами с использованием методов Пирсона (Pearson), Спирмена (Spearman) и Кенделла (Kendall) за заданный таймфрейм и количество баров. Система предлагает стандартный режим с цветовыми порогами и звездочками p-значений, а также режим тепловой карты с градиентными визуальными элементами силы корреляции. Он включает в себя интерактивный пользовательский интерфейс с селекторами таймфреймов, переключателями режимов и динамической легендой для эффективного анализа взаимозависимостей символов.
preview
Гипотеза случайности: поиск скрытых паттернов в ценовых рядах

Гипотеза случайности: поиск скрытых паттернов в ценовых рядах

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

Инжиниринг признаков для машинного обучения (Часть 1): дробное дифференцирование — стационарность без потери памяти

Целочисленное дифференцирование заставляет выбирать между стационарностью и памятью: доходности (d = 1) стационарны, но отбрасывают всю информацию об уровне цены; исходные цены (d = 0) сохраняют память, но нарушают предпосылку стационарности, важную для моделей машинного обучения. В статье реализован метод дробного дифференцирования с окном фиксированной ширины (FFD) из главы 5 AFML: get_weights_ffd — итеративная рекурсия с отсечением по порогу, frac_diff_ffd — ограниченное скалярное произведение для каждого бара, fracdiff_optimal — бинарный поиск минимального стационарного d*.
preview
Нейросети в трейдинге: Принятие торговых решений с учётом неопределённости (Оценка неопределённости)

Нейросети в трейдинге: Принятие торговых решений с учётом неопределённости (Оценка неопределённости)

В статье продолжена адаптация фреймворка UncAD для задач алгоритмического трейдинга. Реализованы объект распределения рыночных состояний и энкодер неопределённости, формирующий совместное представление состояния рынка и степени доверия к нему. Предложенная архитектура позволяет модели учитывать не только структуру рыночного режима, но и устойчивость собственной интерпретации, что особенно важно в условиях нестационарности финансовых рынков.
preview
Нейросети в трейдинге: Агрегация движения по времени (TMA)

Нейросети в трейдинге: Агрегация движения по времени (TMA)

Фреймворк TMA открывает новый взгляд на рыночную динамику, позволяя моделям улавливать не только состояние рынка, но и само течение времени. Его способность извлекать закономерности из непрерывного потока данных делает анализ глубже и точнее, чем при классических подходах. А рекуррентная адаптация превращает этот метод в практичный инструмент для работы с реальными котировками.
preview
Моделирование рынка (Часть 13): Сокеты (VII)

Моделирование рынка (Часть 13): Сокеты (VII)

Когда мы разрабатываем что-то в xlwings или в любом другом пакете, позволяющем читать и писать непосредственно в Excel, мы должны заметить, что все программы, функции или процедуры выполняются, а затем завершают свою задачу. Они не остаются в цикле, и неважно, как сильно мы стараемся сделать всё по-другому.
preview
Машинное обучение и Data Science (Часть 43): Поиск скрытых паттернов в индикаторах с помощью моделей латентных гауссовых смесей LGMM

Машинное обучение и Data Science (Часть 43): Поиск скрытых паттернов в индикаторах с помощью моделей латентных гауссовых смесей LGMM

У вас когда-нибудь возникало ощущение, что за графиком скрывается что-то большее, какая-то закономерность? Какой-то секретный код, расшифровав который, вы могли бы точно понять, куда движутся цены? Представляю вашему вниманию LGMM — детектор скрытых закономерностей на рынке. Эта модель машинного обучения помогает выявлять такие скрытые закономерности на рынке.
preview
Разработка инструментария для анализа Price Action (Часть 52): Визуальный анализ структуры рынка на нескольких таймфреймах

Разработка инструментария для анализа Price Action (Часть 52): Визуальный анализ структуры рынка на нескольких таймфреймах

В этой статье представлен инструмент Multi-Timeframe Visual Analyzer на языке MQL5, который воссоздает и накладывает свечи старших таймфреймов прямо на активный график. В статье рассматриваются реализация, ключевые входные параметры и практические результаты; материал дополнен анимированной демонстрацией и примерами графиков, показывающими мгновенное переключение, подтверждение на нескольких таймфреймах и настраиваемые алерты. Читайте дальше, чтобы узнать, как этот инструмент делает анализ графиков быстрее, нагляднее и эффективнее.
preview
Искусство ведения логов (Часть 2): Форматирование логов

Искусство ведения логов (Часть 2): Форматирование логов

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

Автоматизация торговых стратегий на MQL5 (Часть 8): Создание советника с помощью гармонических паттернов Butterfly

В настоящей статье мы создаём советника на MQL5 для определения гармонических паттернов Butterfly. Мы определяем точки разворота и проверяем уровни Фибоначчи для подтверждения паттерна. Затем визуализируем паттерн на графике и автоматически совершаем сделки при подтверждении.
preview
Возможности Мастера MQL5, которые вам нужно знать (Часть 55): SAC с приоритетным воспроизведением опыта

Возможности Мастера MQL5, которые вам нужно знать (Часть 55): SAC с приоритетным воспроизведением опыта

Буферы воспроизведения в обучении с подкреплением особенно важны при использовании алгоритмов вне политики (off-policy), таких как DQN или SAC. Это выводит на первый план процесс выборки буфера памяти. В то время как параметры по умолчанию с SAC, например, используют случайный выбор из буфера, буферы с приоритетным воспроизведением опыта (Prioritized Experience Replay buffers) обеспечивают точную настройку путем выборки из буфера на основе оценки TD. Мы рассмотрим важность обучения с подкреплением и, как всегда, изучим только одну гипотезу (без перекрестной проверки) в созданном Мастером советнике.
preview
Переосмысливаем классические стратегии (Часть 13): Обновление стратегии по пересечению скользящих (Часть 2)

Переосмысливаем классические стратегии (Часть 13): Обновление стратегии по пересечению скользящих (Часть 2)

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

Валютный граф и справедливая цена 28 пар через DFS по кросс-путям

В статье показано, как вместо треугольного арбитража использовать полный валютный граф из 8 валют и 28 пар. Для каждой пары DFS перечисляет простые кросс‑пути длиной от 2 до N рёбер, а справедливая цена получается как взвешенное геометрическое среднее в лог‑пространстве. Отклонение рынка от этой оценки служит источником mean‑reversion сигналов.
preview
От начального до среднего уровня: Массив (IV)

От начального до среднего уровня: Массив (IV)

В этой статье мы рассмотрим, как можно сделать нечто очень похожее на то, что реализовано в таких языках, как C, C++ и Java. Речь идет о передаче практически бесконечного числа параметров внутрь функции или процедуры. Хоть может показаться, что это довольно продвинутая тема, на мой взгляд, то, что здесь будет показано, сможет легко реализовать любой, кто понял предыдущие концепции. При условии, что они действительно были усвоены.
preview
Автоматизация торговых стратегий в MQL5 (Часть 25): Советник для торговли по линиям тренда с аппроксимацией методом наименьших квадратов и динамической генерацией сигналов

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

В данной статье мы разрабатываем программу для торговли по линиям тренда, которая использует аппроксимацию методом наименьших квадратов (least squares fit) для определения линий поддержки и сопротивления, генерируя динамические сигналы на покупку и продажу при касании ценой этих линий и открывая позиции по полученным сигналам.
preview
Разработка системы репликации (Часть 71): Настройка времени (IV)

Разработка системы репликации (Часть 71): Настройка времени (IV)

В этой статье мы рассмотрим, как реализовать то, что было показано в предыдущей статье, в сервисе репликации/моделирования. Но, как и во многих других случаях, в жизни обязательно возникают проблемы. И данный случай не стал исключением. Дальше вы узнаете тему следующей статьи из этой серии. Представленные здесь материалы предназначены только для обучения. Ни в коем случае нельзя рассматривать это приложение как окончательное, цели которого будут иные, кроме изучения представленных концепций.
preview
Автоматизация индикатора настроений рынка (индикатора сентимента)

Автоматизация индикатора настроений рынка (индикатора сентимента)

В этой статье мы автоматизируем создание пользовательского индикатора рыночных настроений, который подразделяет рыночные условия на бычьи, медвежьи, склонные к риску, не склонные к риску и нейтральные. Советник предоставляет информацию о текущих настроениях в режиме реального времени, одновременно упрощая процесс анализа рыночных тенденций и направлений развития рынка.
preview
Разрабатываем мультивалютный советник (Часть 31): Секреты шага создания проекта оптимизации (I)

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

В статье разбираются два практических аспекта работы конвейера оптимизации на базе Adwizard: диагностика и восстановление после сбоев генерации базы итогового советника, а также предварительный подбор диапазонов параметров стратегии до создания проекта. Показано, как анализ таблиц stages/jobs/tasks в SQLite и перезапуск этапов по статусам помогают восстановить процесс, а пробная оптимизация сужает пространство поиска, исключает избыточные параметры и снижает риск застревания в локальных максимумах.
preview
Моделирование рынка (Часть 14): Сокеты (VIII)

Моделирование рынка (Часть 14): Сокеты (VIII)

Многие программисты могут предположить, что нам следует отказаться от использования Excel и перейти непосредственно на Python, используя некоторые пакеты, позволяющие Python создавать Excel-файл, чтобы потом проанализировать результаты. Но, как уже говорилось в предыдущей статье, хотя это решение и является наиболее простым для многих программистов, оно не будет воспринято некоторыми пользователями. И в данном вопросе пользователь всегда прав. Мы, как программисты, должны найти способ заставить всё работать.
preview
От начального до среднего уровня: Struct (V)

От начального до среднего уровня: Struct (V)

В данной статье мы рассмотрим, как перегрузить структурный код. Я знаю, что сначала это довольно сложно для понимания, особенно если увидеть это впервые. Очень важно, чтобы вы усвоили эти понятия и хорошо поняли их, прежде чем пытаться вникать в более сложные и проработанные вещи.
preview
Нейросети в трейдинге: Обучение глубоких спайкинговых моделей (SEW-ResNet)

Нейросети в трейдинге: Обучение глубоких спайкинговых моделей (SEW-ResNet)

Приглашаем к знакомству с фреймворком SEW-ResNet, который позволяет строить глубокие спайковые модели без проблем деградации и с эффективным управлением градиентами. В этой статье мы демонстрируем, как реализовать базовый спайковый нейрон и его алгоритмы средствами MQL5.
preview
Торговый инструментарий MQL5 (Часть 7): Расширение EX5-библиотеки для управления историей функциями последнего отмененного отложенного ордера

Торговый инструментарий MQL5 (Часть 7): Расширение EX5-библиотеки для управления историей функциями последнего отмененного отложенного ордера

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

Трейдинг с экономическим календарем MQL5 (Часть 7): Подготовка к тестированию стратегий с анализом новостей

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

Новый подход к пользовательским критериям при оптимизациях (Часть 1): Примеры функций активации

Это первая из серии статей, посвященных математическим аспектам создания пользовательских критериев с особым акцентом на нелинейных функциях, применяемых в нейросетях, MQL5-коде для реализации, а также на использования целевых и корректирующих смещений.
preview
От начального до среднего уровня: Struct (IV)

От начального до среднего уровня: Struct (IV)

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

От начального до среднего уровня: Struct (III)

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

Трейдинг с экономическим календарем MQL5 (Часть 6): Автоматизация входа в сделку с анализом новостей и таймерами обратного отсчета

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

Архитектура системы машинного обучения в MetaTrader 5 (Часть 3): Метод разметки сканированием тренда

Мы создали надежный конвейер разработки признаков на основе тиковых баров, чтобы исключить утечку данных, и решили критическую проблему разметки с помощью метода тройных барьеров и мета-разметки. В этой части рассматривается продвинутая техника разметки — сканирование тренда — для адаптивных горизонтов. После изложения теории будет показан пример использования меток сканирования тренда в сочетании с мета-разметкой для улучшения классической стратегии на основе пересечения скользящих средних.
preview
Оптимизация Роем Жуков — Beetle Swarm Optimization (BSO)

Оптимизация Роем Жуков — Beetle Swarm Optimization (BSO)

Рассматриваем гибрид BAS+PSO (BSO), где BAS добавляет локальный сигнал направления, а PSO обеспечивает обмен лучшими решениями в рое. Приведены математическая модель, псевдокод, реализация класса на MQL5 и результаты тестирования в типовом стенде. Материал позволяет воспроизвести алгоритм, настроить параметры и понять, как трёхкратные оценки за итерацию отражаются на эффективности.
preview
Моделирование рынка (Часть 08): Сокеты (II)

Моделирование рынка (Часть 08): Сокеты (II)

Как вам идея создать что-то практичное с помощью сокетов? В сегодняшней статье мы начнем создавать мини-чат. Давайте рассмотрим вместе, как это делается, - это будет очень интересно. Помните, что приведенный здесь код предназначен исключительно для образовательных целей. Не стоит использовать его в коммерческих целях или в готовых приложениях, так как он не обеспечивает безопасности передачи данных и можно увидеть содержимое, передаваемое по сокету.
preview
Автоматизация греков Блэка-Шоулза: Расширенный скальпинг и микроструктурная торговля

Автоматизация греков Блэка-Шоулза: Расширенный скальпинг и микроструктурная торговля

Гамма и Дельта изначально разрабатывались как инструменты управления рисками для хеджирования опционной экспозиции, но со временем они превратились в мощные инструменты для продвинутого скальпинга, моделирования потока ордеров и торговли на основе рыночной микроструктуры. Сегодня они служат индикаторами ценовой чувствительности и поведения ликвидности в режиме реального времени, позволяя трейдерам с удивительной точностью прогнозировать краткосрочную волатильность.
preview
Нейросети в трейдинге: Единая архитектура взаимодействия рыночных признаков и торгового контекста (Окончание)

Нейросети в трейдинге: Единая архитектура взаимодействия рыночных признаков и торгового контекста (Окончание)

В данной статье мы завершаем перенос ключевых компонентов фреймворка OneTrans в среду MQL5 и показываем их интеграцию в единый вычислительный граф. Основное внимание уделено организации обучения моделей на исторических финансовых данных с использованием Актера и Критика, а также оценке действий через псевдо идеальные сценарии. Результаты тестирования демонстрируют практическую ценность реализованных решений для построения адаптивных стратегий и анализа рыночной динамики.