Создание пользовательских индикаторов в MQL5 (Часть 11): Улучшение футпринт-графика с помощью слоёв рыночной структуры и ордер-флоу
В статье MQL5-индикатор футпринт-графика расширяется слоями рыночной структуры и ордер-флоу: барами объёмного профиля, точкой контроля (Point of Control, POC), подсветкой зоны стоимости (value area), выявлением последовательных дисбалансов, зонами поглощения, а также маркерами single print (одиночных принтов) и unfinished business (незавершённой аукционной отработки экстремума). Мы расширим структуры данных бара, добавим функции для POC/зоны стоимости, дисбаланса и поглощения, а также построим конвейер отрисовки с фиксированным порядком слоёв. Вы получите готовые входные параметры, метаданные и утилиты отрисовки для интеграции и настройки этих слоёв в индикаторе.
Создание самооптимизирующихся советников на MQL5 (Часть 10): Факторизация матриц
Факторизация — это математический процесс, используемый для получения представления о свойствах данных. Когда мы применяем факторизацию к большим наборам рыночных данных — организованных в строки и столбцы — мы можем выявлять закономерности и характеристики рынка. Факторизация является мощным инструментом, и в этой статье показано, как использовать её в терминале MetaTrader 5 через API MQL5, чтобы получить более глубокое понимание рыночных данных.
Знакомство с языком MQL5 (Часть 41): Руководство для начинающих по работе с файлами в MQL5 (III)
Узнайте, как читать CSV-файл в MQL5 и упорядочивать содержащиеся в нем торговые данные в динамических массивах. В этой статье пошагово показано, как подсчитать элементы файла, сохранить все данные в едином массиве и разнести каждый столбец по отдельным массивам, заложив основу для более продвинутого анализа и визуализации торговой эффективности.
Двумерные копулы в MQL5 (Часть 1): Реализация гауссовой копулы и t-копулы Стьюдента для моделирования зависимостей
Это первая часть серии статей, посвящённых реализации двумерных копул в MQL5. В статье представлен код, реализующий гауссову копулу и t-копулу Стьюдента. Также рассматриваются основы статистических копул и связанные с ними темы. Код основан на Python-пакете ArbitrageLab от Hudson and Thames.
TradeMux как Quant Backbone: Подключение институциональных Python-пайплайнов к разным терминалам и брокерам
Статья описывает TradeMux как мост между Python-пайплайном и терминалом MetaTrader 5 для чистой передачи торговых решений без дублирования логики. Разобрана production-архитектура из четырёх слоёв и полный Python execution service: подключение, чтение счёта и позиций, генерация сигналов (включая CatBoost), предторговый риск-контроль, kill_switch и supervisor. Практическая польза — кросс-брокерная нормализация (RoboForex, IC Markets, Alpari, OANDA) и масштабирование от одного счёта к мультисчётному broadcast без изменения торговой логики.
Моделирование рынка (Часть 22): Первые шаги на SQL (V)
Прежде, чем вы сдадитесь и решите отказаться от изучения SQL, позвольте мне напомнить вам, уважаемые читатели, что здесь мы всё ещё используем только самые базовые элементы. Мы ещё не рассмотрели некоторые возможности SQL. Как только вы их усвоите, вы увидите, что SQL гораздо практичнее, чем кажется. Хотя, скорее всего, мы в конечном итоге изменим направление того, что мы создаем, потому, что процесс создания является динамичным. Мы покажем немного больше о создании разных вещей в SQL, ведь это по настоящему важно и нужно вам. Просто думать, что вы более способны, чем целое сообщество программистов и разработчиков, приведет только к потере времени и возможностей. Не переживайте, потому что дальше будет ещё интереснее.
Машинное обучение и Data Science (Часть 39): Тестируем связку новостей с ИИ
Новости оказывают существенное влияние на финансовые рынки, особенно если говорить о важнейших публикациях, например по занятости в несельскохозяйственном секторе (Non-Farm Payrolls, NFPs). Мы не раз видели, как один единственный заголовок может спровоцировать резкие колебания цен. В этой статье мы рассмотрим в деталях связку новостей и возможностей искусственного интеллекта.
Моделирование рынка (Часть 17): Сокеты (XI)
Реализация той части кода, которая будет работать в MetaTrader 5, не представляет сложности. Однако есть несколько моментов, которые нужно учитывать. Это необходимо для того, чтобы вы смогли заставить систему работать. Запомните одну важную вещь: будет запущена не одна программа. В реальности нам придётся запускать три программы одновременно. Важно реализовать и построить каждую из них так, чтобы они могли взаимодействовать и общаться одна с другой, и чтобы каждая из них понимала, что пытается или хочет сделать другая.
Торговые инструменты на языке MQL5 (Часть 6): Динамическая голографическая панель с импульсной анимацией и элементами управления
В этой статье мы создаем динамическую голографическую панель на MQL5 для мониторинга инструментов и таймфреймов с помощью RSI, оповещений о волатильности и параметров сортировки. Добавляем анимацию импульсов, интерактивные кнопки и голографические эффекты, чтобы сделать инструмент визуально привлекательным и отзывчивым.
Построение моделей волатильности в MQL5 (Часть I): Первичная реализация
В этой статье мы представляем библиотеку MQL5 для моделирования волатильности, разработанную так, чтобы функционировать аналогично пакету arch в Python. В настоящее время библиотека поддерживает спецификацию распространённых моделей условного среднего: HAR, AR, Constant Mean и Zero Mean, а также моделей условной волатильности: Constant Variance, ARCH и GARCH.
Тестер стратегий для Python и MetaTrader 5 (Часть 04): Основы работы тестера
В этой увлекательной статье мы создадим своего первого торгового робота в симуляторе и запустим тестирование стратегии, напоминающее работу тестера стратегий MetaTrader 5, а затем сравним результат, полученный в пользовательской симуляции, с результатом в нашем любимом терминале.
Моделирование рынка: Первые шаги на SQL в MQL5 (II)
Хотя многие считают, что мы можем без проблем встраивать SQL-код в другой код, обычно это не так. Причина заключается в том, что SQL-код включается в исполняемый файл в виде строки. И тот факт, что SQL-код внедряется в виде строки, хотя и не вызывает проблем в небольших фрагментах, в итоге это может создать нам немало головной боли.
Создание пользовательских индикаторов в MQL5 (Часть 7): Гибридные рыночные профили Time Price Opportunity (TPO) для анализа сессий
В этой статье мы разрабатываем пользовательский индикатор на MQL5 для гибридных TPO-профилей с поддержкой нескольких сессионных периодов: внутридневных, дневных, недельных, месячных и фиксированных периодов с учётом часового пояса. Индикатор дискретизирует цены по сетке, отслеживает данные сессии, включая максимумы, минимумы, цены открытия и закрытия, а также рассчитывает ключевые элементы, такие как точка контроля (POC) и зона стоимости (value area) на основе количества TPO. Он визуально отображает профили на графике с настраиваемыми цветами для букв TPO, одиночных отпечатков (single prints), зон стоимости, POC и маркеров закрытия, позволяя выполнять подробный анализ сессий.
VQC-фильтр с живым обучением прямо в MQL5 поверх графового fair-value скальпера
В статье реализован двухслойный подход к входу в сделку: графовый fair-value скальпер по 28 валютным парам и вероятностный VQC‑фильтр — классически симулированная схема вращений с онлайн‑обучением в MQL5 через parameter‑shift и Adam. Разбираются кодирование признаков, аналитический градиент, согласование направлений, калибровка порога уверенности и защита от подглядывания в будущее. Читатель получает рабочую архитектуру фильтра и практические приёмы её интеграции в советник.
Создание пользовательских индикаторов в MQL5 (Часть 5): Доработка WaveTrend Crossover с помощью Canvas — градиентный туман, сигнальные пузырьки и управление рисками
В этой статье мы улучшим индикатор Smart WaveTrend Crossover в MQL5, добавив отрисовку с использованием Canvas для градиентных туманных наложений, сигнальные блоки для обнаружения пробоев, а также метки сигналов в виде пузырьков с подписями или простых треугольников. Мы также реализуем функции управления рисками с динамическими уровнями Take Profit и Stop Loss, рассчитываемыми через множители свечей или проценты и отображаемыми с помощью линий и таблицы, а также добавим параметры фильтрации по тренду и расширения сигнальных блоков.
Алгоритм оптимизации кита-белухи — Beluga Whale Optimization (BWO)
Кандидат в нашу рейтинговую таблицу — Beluga Whale Optimization, метаэвристика, построенная на трёх моделях поведения кита-белухи: парном плавании, охоте с полётом Леви и обновлении популяции через падение кита. По ходу реализации обнаружилось, что алгоритм не столько оптимизирует, сколько считывает геометрию тестового стенда, разбираем механизм этого и собираем честную перспективную модификацию BWOm.
Моделирование рынка: Position View (VI)
В данной статье мы внесем ряд улучшений, чтобы индикатор позиции точно отражал реальное состояние дел на торговом сервере с точки зрения открытых позиций и их текущего состояния. Я должен напомнить, что эти приложения, которые будут здесь показаны, ни в коем случае не предназначены для замены каких-либо элементов, доступных в MetaTrader 5. Их также не следует использовать без должной осмотрительности и взвешенного подхода, поскольку их цель — представить обучающий код, то есть предназначенный исключительно для изучения принципов работы системы. Причина, по которой я называю этот код обучающим, заключается в том, что использование сообщений в некоторых случаях не является лучшим способом реализации определенных функций.
Разработка инструментария для анализа Price Action (Часть 41): Создание советника для статистического анализа ценовых уровней на MQL5
Статистика всегда лежала в основе финансового анализа. По определению статистика – это дисциплина, которая собирает, анализирует, интерпретирует и представляет данные в осмысленном виде. Теперь представьте, что тот же подход применяется к свечам – необработанная ценовая динамика преобразуется в измеримые показатели. Насколько полезно было бы знать для заданного периода центральную тенденцию, разброс и распределение поведения рынка? В этой статье мы покажем именно такой подход и разберем, как статистические методы превращают свечные данные в четкие, практические сигналы.
Знакомство с языком MQL5 (Часть 39): Руководство для начинающих по работе с файлами в MQL5 (I)
В этой статье работа с файлами в MQL5 рассматривается на практическом проектном примере. Вы будете использовать FileSelectDialog, чтобы выбрать или создать CSV-файл, открыть его с помощью FileOpen и записать структурированные заголовки с данными счета, такие как имя счета, баланс, логин, диапазон дат и время последнего обновления. В результате вы получите понятную основу для пригодного к повторному использованию торгового журнала и безопасной работы с файлами в MetaTrader 5.
Статистический арбитраж на основе коинтегрированных акций (Часть 6): Система оценки
В данной статье мы предлагаем систему оценки стратегий возврата к среднему значению, основанную на статистическом арбитраже коинтегрированных акций. В статье предлагаются критерии, которые варьируются от ликвидности и транзакционных издержек до количества рангов коинтеграции и времени возврата к среднему значению, при этом учитываются стратегические критерии — частота данных (временной интервал) и период обратного обзора для тестов на коинтеграцию, которые оцениваются до того, как будет сформирован итоговый оценочный балл (rank_score). Предоставляются файлы, необходимые для воспроизведения бэктеста, а также приводятся комментарии к его результатам.
Статистический арбитраж на коинтегрированных акциях (Часть 3): Настройка базы данных
В данной статье представлен пример реализации сервиса на MQL5 для обновления вновь созданной базы данных, используемой в качестве источника для анализа данных и для торговли корзиной коинтегрированных акций. Подробно объясняется логика проектирования базы данных, а также приводится описание структуры данных (data dictionary) для справки. Предоставлены скрипты на MQL5 и Python для создания базы данных, инициализации её схемы и загрузки рыночных данных.
Моделирование рынка: Position View (III)
В предыдущих статьях мы упоминали, что иногда нам необходимо задать значение для свойства ZOrder. Но почему? Причина в том, что многие коды, добавляющие объекты на график, просто не используют или, точнее, не определяют значение для этого свойства. Дело в том, что я здесь не для того, чтобы говорить, что должен или не должен делать каждый программист, или как он должен или не должен писать свой код. Я здесь для того, чтобы показать вам, уважаемый читатель, и всем, кто действительно хочет понять внутреннее устройство процессов, что именно происходит за кулисами.
Разработка инструментария для анализа Price Action (Часть 42): Интерактивное тестирование на графике с кнопочной логикой и статистическими уровнями
В мире, где важны скорость и точность, инструменты анализа должны быть столь же умными, как и рынки, на которых мы торгуем. В этой статье представлен советник с кнопочной логикой – интерактивная система, которая мгновенно преобразует исходные ценовые данные в значимые статистические уровни. Одним кликом мыши он вычисляет и отображает среднее, отклонение, процентили и другие показатели, превращая продвинутую аналитику в понятные сигналы на графике. Он выделяет зоны, где цена с наибольшей вероятностью отскочит, откатится или пробьет уровень, что делает анализ и быстрее, и практичнее.
Моделирование рынка: Первые шаги на SQL в MQL5 (IV)
Многие люди склонны недооценивать SQL или даже вообще не использовать его, потому что не до конца понимают, как он на самом деле работает. При выполнении запросов к базе данных SQL мы не всегда ищем универсальный ответ, а в некоторых случаях нам нужен очень конкретный и практичный ответ. Если создать базу данных с надлежащей структурой и моделью данных, в неё можно будет интегрировать практически любые типы информации.
Моделирование рынка: Position View (VIII)
В предыдущей статье мы рассмотрели, как можно реализовать индикатор позиции для закрытия открытой позиции непосредственно с графика, взаимодействуя с доступным на нем объектом. После завершения и проверки работы первого механизма мы приступили к внесению изменений, чтобы обеспечить возможность удаления линий тейк-профита и стоп-лосса для открытой позиции. Однако, поскольку необходимые изменения требовали подробных объяснений, в той же статье я показал только те изменения, которые необходимо было внести в советник, но всё ещё требовалось показать изменения, которые необходимо было внести в индикатор позиции.
Создание пользовательских индикаторов в MQL5 (Часть 2): Разработка индикатора RSI в виде шкалы со стрелкой на Canvas
В этой статье мы разработаем индикатор RSI в формате круговой шкалы на MQL5, использующий Canvas и механику стрелочного указателя для отображения значений индекса относительной силы с помощью динамической стрелки, цветовых зон перекупленности и перепроданности и настраиваемых текстовых подписей. Мы используем класс Canvas для отрисовки таких элементов, как дуги, деления и секторы, обеспечивая плавное и эффективное обновление при поступлении новых данных RSI.
Разработка инструментария для анализа Price Action (Часть 50): Создание модуля согласования сигналов RVGI, CCI и SMA на MQL5
Многим трейдерам сложно распознавать настоящие развороты. В этой статье представлен советник, который объединяет RVGI, CCI (±100) и трендовый фильтр SMA, формируя единый четкий сигнал разворота. Советник включает панель на графике, настраиваемые алерты и полный исходный файл, готовый к немедленной загрузке и тестированию.
Разработка инструментария для анализа Price Action (Часть 45): Создание динамической панели для анализа уровней в MQL5
В этой статье мы рассмотрим мощный инструмент на MQL5, который позволяет тестировать любой ценовой уровень одним кликом. Просто введите нужный уровень и нажмите Analyze – советник мгновенно сканирует исторические данные, выделяет на графике все касания и пробои и выводит статистику в аккуратной информационной панели. Вы увидите, как часто цена отрабатывала этот уровень или пробивала его, а также выступал ли уровень чаще как поддержка или как сопротивление. Читайте дальше, чтобы подробнее ознакомиться с процедурой.
Статистический арбитраж на основе коинтегрированных акций (заключительная часть): Анализ данных с помощью специализированной БД
В статье рассказывается, как объединить SQLite (OLTP) с DuckDB (OLAP) для обработки данных статистического арбитража. Колоночный движок DuckDB, оператор ASOF JOIN и встроенные функции для работы с массивами ускоряют выполнение основных задач, таких как сопоставление котировок со сделками и RWEC, при этом зафиксировано увеличение скорости от 2 до 23 раз по сравнению с SQLite при работе с большими массивами данных. Вы получаете более простые запросы и более быструю аналитику, при этом исполнение операций по-прежнему осуществляется в SQLite.
Моделирование рынка: Position View (IV)
Здесь мы начнем объединять различные компоненты или приложения, которые ранее были полностью изолированы друг от друга. Chart Trade, индикатор мыши и советник уже были связаны между собой, однако всё ещё отсутствовал способ прямой визуализации на графике открытых на торговом сервере позиций, которые зачастую обрабатывались через систему встречных ордеров. С этого момента это становится возможным, открывая путь для различных идей и будущих реализаций. Хотя мы только начинаем внедрять эти компоненты в работу, у нас уже появится направление для дальнейшего развития.
Рыночные секреты Ларри Уильямса (Часть 7): Эмпирическое исследование концепции "торгового дня недели"
Эмпирическое исследование концепции торгового дня недели по Ларри Уильямсу: как измерять, тестировать и применять временную поведенческую закономерность рынка с помощью MQL5. В статье представлена структурированная методика анализа для анализа win rate (процент прибыльных сделок) и результатов по торговым дням, чтобы улучшать краткосрочные торговые системы.
Статистический арбитраж на основе коинтегрированных акций (Часть 5): Отбор активов
В данной статье предлагается процесс отбора активов для стратегии торговли на основе статистического арбитража с использованием коинтегрированных акций. Система начинается с обычной фильтрации по экономическим факторам, таким как сектор активов и отрасль, и заканчивается составлением перечня критериев для системы оценки. Для каждого статистического теста, использованного в скрининге, был разработан соответствующий класс на языке Python: Коэффициент корреляции Пирсона, коинтеграция Энгл-Грейнджера, коинтеграция Йохансена и стационарность по ADF/KPSS. Эти классы Python сопровождаются личным комментарием автора об использовании ИИ-помощников в разработке программного обеспечения.
Алгоритм оптимизации на основе коронавируса — Corona Virus Optimization (CVO)
Описываем и реализуем CVO: заражение как генерация кандидатов, покоординатное нормальное возмущение, динамическая популяция. Алгоритм интегрирован в C_AO и проверен на стандартном бенчмарке. Разбор выявляет масштабную причину стагнации и даёт прикладное решение — переход к относительному шагу по ширине диапазона; код готов к использованию.
Двумерные копулы в MQL5 (Часть 2): Реализация архимедовых копул в MQL5
Во второй части серии мы рассматриваем свойства двумерных архимедовых копул и их реализацию в MQL5. Мы также изучаем применение копул для разработки простой стратегии парного трейдинга.
Моделирование рынка: Position View (V)
Несмотря на изложенное в предыдущей статье, это кажется чем-то простым. Там перед нами стоят различные проблемы и множество задач, которые нужно решить и выполнить. Вы, уважаемый читатель, можете представить, что всё легко и просто. По наивности вы просто принимаете то, что вам предлагают. И это ошибка, которой вам, уважаемый читатель, следует постараться избежать. Хуже простого принятия — непонимание и попытка использовать что-то без реального осознания того, что именно используется. Среди новичков часто встречается этап копирования и вставки кода. Если вы не хотите навсегда остаться на этом этапе, стоит научиться использовать определенные инструменты. Одним из наиболее часто используемых программистами инструментов является документация. Второй инструмент состоит из тестов и лог-файлов. Здесь мы увидим, как это сделать.
Автоматизация торговых стратегий в MQL5 (Часть 43): Адаптивная стратегия на основе канала линейной регрессии
В этой статье мы реализуем в MQL5 адаптивную систему на основе канала линейной регрессии. Она автоматически рассчитывает линию регрессии и канал стандартного отклонения за заданный пользователем период, активируется только тогда, когда абсолютное значение наклона превышает минимальный порог, что подтверждает наличие выраженного тренда, а также динамически перестраивает или продлевает канал, когда цена выходит за его границы на настраиваемую долю ширины.
Создание пользовательских индикаторов в MQL5 (Часть 1): Построение трендового индикатора на основе пивотов с градиентной заливкой на Canvas
В этой статье мы создадим трендовый индикатор на основе пивотов в MQL5. Он рассчитывает быстрые и медленные пивотные линии за заданные пользователем периоды, определяет направление тренда по положению цены относительно этих линий и отмечает начало тренда стрелками, при необходимости продлевая линии за пределы текущего бара. Индикатор поддерживает динамическое отображение отдельных восходящих и нисходящих линий настраиваемых цветов, пунктирных быстрых линий, которые меняют цвет при смене тренда, а также дополнительную градиентную заливку между линиями с использованием объекта класса CCanvas для более наглядного выделения трендовой области.
Создание пользовательских индикаторов в MQL5 (Часть 6): Усовершенствование расчётов RSI — сглаживание, динамические цвета и поддержка нескольких таймфреймов
В этой статье мы создадим универсальный индикатор RSI в MQL5 с поддержкой нескольких вариантов расчёта, источников данных и методов сглаживания для более качественного анализа. Мы добавим изменение оттенка для цветовой индикации, динамические границы зон перекупленности/перепроданности и уведомления о смене тренда. Индикатор включает мультитаймфреймовую поддержку с интерполяцией и предоставляет настраиваемый инструмент RSI для разных стратегий.
Реализация модели гауссовской смеси в MQL5
В статье рассматриваются теоретические основы и практическая реализация модели смеси нормальных распределений (Gaussian Mixture Model) на языке MQL5. Представлен класс CGMM и примеры его использования, а также методология выбора оптимального количества компонентов модели с помощью информационных критериев AIC/BIC. Значительное внимание уделяется принципу работы EM-алгоритма — признанного стандарта при обучении вероятностных моделей со скрытыми(латентными) переменными. Реализована поддержка режима обучения MAP и инициализация параметров с помощью K-Means++. Готовый инструмент для кластеризации, оценки многомерной плотности и генерации данных теперь доступен и в MetaTrader 5.
Низкочастотные количественные стратегии в MetaTrader 5: (Часть 1) Настройка OLAP-ориентированного хранилища данных
В статье описывается практический конвейер данных для количественного анализа на базе хранилища Parquet, секционирования по схеме Hive и DuckDB. Подробно рассматривается перенос выбранных таблиц SQLite в Parquet, структурирование рыночных данных по источнику, символу, таймфрейму и дате, а также запросы к ним с помощью оконных функций SQL. Пример Golden Cross иллюстрирует оценку будущей доходности по нескольким символам. Прилагаемые скрипты Python отвечают за загрузку данных, преобразование и выполнение.