Моделирование рынка (Часть 05): Создание класса C_Orders (II)
В данной статье я расскажу, как Chart Trade вместе с советником будет обрабатывать запрос на закрытие всех открытых позиций пользователя. Звучит просто, но есть несколько осложняющих моментов, и нужно знать, как управлять ими.
Построение моделей волатильности в MQL5 (Часть II): Реализация моделей GJR-GARCH и TARCH
В статье реализуются GJR-GARCH и TARCH в библиотеке волатильности MQL5 и объясняется, почему учёт асимметрии даёт преимущества по сравнению со стандартными ARCH/GARCH. Рассматриваются формулировка моделей, параметризация и использование через производные классы и скрипты. Читатели получают примеры кода для калибровки и одношагового прогнозирования на реальных данных для управления рисками и диагностики моделей.
Создание торговой панели администратора на MQL5 (Часть IX): Организация кода (II): Модуляризация
В этом обсуждении мы сделаем шаг вперед в разбиении нашей программы MQL5 на более мелкие и более управляемые модули. Эти модульные компоненты затем будут интегрированы в основную программу, что улучшит ее организацию и удобство обслуживания. Такой подход упрощает структуру нашей основной программы и делает отдельные компоненты пригодными для повторного использования в других советниках и индикаторах. Приняв эту модульную конструкцию, мы создаем прочную основу для будущих улучшений, что принесет пользу как нашему проекту, так и широкому сообществу разработчиков.
Преодоление ограничений машинного обучения (Часть 6): Эффективная кросс-валидация исторической памяти рынка
В этом обсуждении мы противопоставим классический подход к кросс-валидации временных рядов современным альтернативам, бросающим вызов его основным допущениям. Мы выявляем ключевые «слепые зоны» традиционной кросс-валидации, особенно её неспособность учитывать меняющиеся рыночные условия. Для устранения этих пробелов мы внедряем эффективную кросс-валидацию исторической памяти рынка (Effective Memory Cross-Validation, EMCV) - подход, ориентированный на предметную область, ставящий под сомнение устоявшееся мнение о том, что увеличение объема исторических данных всегда повышает показатели результатов.
Торговые инструменты на MQL5 (Часть 18): Скруглённые текстовые выноски с настройкой ориентации
В этой статье показано, как создавать скругленные текстовые выноски в MQL5, комбинируя скругленный прямоугольник с треугольником-указателем и управляя ориентацией (вверх, вниз, влево, вправо). В ней подробно описаны предварительные вычисления геометрии, суперсэмплированное заполнение, закругленные дуги вершин и сегментированные рамки с коэффициентом расширения для бесшовных соединений. Читатели получат настраиваемый код для установки размера, радиуса, цвета, прозрачности и толщины, готовый для использования в качестве оповещений или всплывающих подсказок в торговых интерфейсах.
Разработка системы репликации (Часть 58): Возвращаемся к работе над сервисом
После перерыва в разработке и улучшении сервиса, используемого для репликации/моделирования, сегодня мы возобновляем над ним работу. Теперь, когда мы отказались от использования таких ресурсов, как глобальные переменные терминала, нам придется полностью реструктурировать некоторые его части. Не волнуйтесь, этот процесс будет подробно объяснен, чтобы каждый мог следить за разработкой нашего сервиса.
Разработка системы репликации (Часть 61): Нажатие кнопки воспроизведения в сервисе (II)
В данной статье мы рассмотрим изменения, которые позволят системе репликации/моделирования работать более эффективно и безопасно. Также я не оставлю без внимания тех, кто хочет извлечь максимум пользы из использования классов. Кроме того, рассмотрим специфическую проблему в MQL5, которая снижает производительность кода при работе с классами, и объясним, как ее решить.
От начального до среднего уровня: Наследование
Без сомнения, данная статья потребует от вас значительного времени, чтобы понять, как и почему работают описанные здесь материалы. Это объясняется тем, что всё, что здесь будет показано, изначально ориентировано на объектно-ориентированное программирование, но на самом деле оно основано на принципах структурного программирования.
Разработка системы репликации (Часть 63): Нажатие кнопки воспроизведения в сервисе (IV)
В этой статье мы наконец решим проблемы моделирования тиков на одноминутном баре, чтобы те могли сосуществовать с реальными тиками. Таким образом, мы избежим возникновения проблем в будущем. Представленный здесь контент предназначен только для образовательных целей. Ни в коем случае его не следует рассматривать как приложение, предназначенное для чего-то иного, кроме изучения и освоения представленных концепций.
От начального до среднего уровня: Индикатор (V)
В данной статье мы рассмотрим, как обрабатывать запросы пользователей на изменение режима построения графика. Это необходимо для того, чтобы индикатор, разработанный для использования текущего режима построения графиков, не выглядел странно или не отличался от того, что ожидает пользователь MetaTrader 5.
Самооптимизирующиеся советники на MQL5 (Часть 12): Построение линейных классификаторов с использованием факторизации матриц
В данной статье рассматривается важная роль факторизации матриц в алгоритмической торговле, в частности в приложениях MQL5. От регрессионных моделей до многоклассовых классификаторов — мы рассмотрим практические примеры, демонстрирующие, насколько легко эти методы можно интегрировать с помощью встроенных функций MQL5. Независимо от того, занимаетесь ли вы прогнозированием направления движения цен или моделированием поведения индикаторов, данное руководство заложит прочную основу для создания интеллектуальных торговых систем с использованием матричных методов.
Преодоление ограничений машинного обучения (Часть 3): Новый взгляд на неустранимую ошибку
В этой статье мы по-новому взглянем на скрытый, геометрический источник ошибок, который незаметно формирует каждое предсказание, сделанное вашими моделями. Переосмысливая то, как мы оцениваем и применяем прогнозы машинного обучения в трейдинге, мы показываем, как эта упущенная из виду перспектива может способствовать принятию более взвешенных решений, повышению доходности и более разумному способу работы с моделями, которые, как нам казалось, мы уже понимаем.
Преодоление ограничений машинного обучения (Часть 4): Как уменьшить неустранимую ошибку с помощью нескольких горизонтов прогноза
Машинное обучение часто рассматривается через призму статистики или линейной алгебры, но в этой статье особое внимание уделяется геометрической перспективе предсказаний моделей. В ней демонстрируется, что модели на самом деле не приближают цель к действительности, а скорее переносят ее в новую систему координат, создавая неизбежное смещение, которое приводит к неустранимой ошибке. В статье предполагается, что многоступенчатые прогнозы, сравнивающие прогнозы модели на разных горизонтах, предлагают более эффективный подход, чем прямые сравнения с целевым показателем. Применяя этот метод к торговой модели, авторы статьи демонстрируют значительное повышение прибыльности и точности без изменения базовой модели.
Клиент в Connexus (Часть 7): Добавление клиентского уровня
В настоящей статье мы продолжаем разработку библиотеки Connexus. В настоящей главе мы создаем класс CHttpClient, отвечающий за отправку запроса и получение ордера. Мы также рассматриваем концепцию моков (mocks), отделяя библиотеку от функции WebRequest, что обеспечивает большую гибкость для пользователей.
От начального до среднего уровня: Объекты (II)
В сегодняшней статье мы рассмотрим, как простым способом управлять некоторыми свойствами объектов с помощью кода. Мы также рассмотрим, как с помощью специального приложения можно разместить более одного объекта на одном графике. Кроме того, мы начнём разбираться в важности присвоения краткого названия любому индикатору, который мы собираемся внедрить.
Интеграция MQL5 с пакетами обработки данных (Часть 5): Адаптивное обучение и гибкость
В этой части основное внимание уделяется созданию гибкой, адаптивной торговой модели, обученной на исторических данных XAUUSD. Мы подготовим ее к экспорту в ONNX и потенциальной интеграции в системы реальной торговли.
От начального до среднего уровня: Словно мыльные пузыри
В этой статье будет объяснен очень простой и легкий для понимания механизм, целью которого является сортировка любого массива. В ней мы увидим, что полученный результат не всегда соответствует ожиданиям, поэтому для достижения нужных показателей потребуется адаптировать саму реализацию.
От новичка до эксперта: Автоматизация внутридневных стратегий
Мы переводим идею ретеста EMA(50) в советник для внутридневной торговли, основанный на поведении цены. В исследовании формализуются трендовый уклон, взаимодействие с EMA (проколоть/пробить и закрыться), подтверждение реакции и дополнительные фильтры, после чего они реализуются в MQL5 с использованием модульных функций и дескрипторов с безопасным управлением ресурсами. Визуальное тестирование в Тестере стратегий позволяет проверить корректность сигналов. В результате получается понятный шаблон для кодирования дискреционных отскоков.
Теория графов: Применение поиска в глубину (DFS) в торговых системах
В этой статье метод поиска в глубину применяется к структуре рынка путем моделирования максимумов и минимумов свингов в виде узлов графа и отслеживания одного структурного пути настолько глубоко, насколько остаются валидными соответствующие условия. Когда ключевой свинг пробит, алгоритм возвращается назад и исследует альтернативную ветвь. Читатели получают практический фреймворк для формализации структурной направленности и проверки того, соответствует ли текущий путь таким целям, как пулы ликвидности или зоны спроса и предложения.
Упрощение работы с базами данных в MQL5 (Часть 1): Введение в базы данных и SQL
Мы рассмотрим, как работать с базами данных в MQL5, используя встроенные функции языка. Мы рассмотрим все аспекты, от создания, вставки, обновления и удаления таблиц до импорта и экспорта данных, и все это с примерами кода. Данный материал служит прочной основой для понимания внутренних механизмов доступа к данным, подготавливая почву для обсуждения ORM (Object-Relational Mapping, объектно-реляционное отображение), где мы создадим его на языке MQL5.
Преодоление ограничений машинного обучения (Часть 2): Отсутствие воспроизводимости
В статье рассматривается, почему результаты торговли могут значительно различаться у разных брокеров, даже при использовании одной и той же стратегии и финансового символа, из-за децентрализованного ценообразования и расхождений в данных. Эта статья помогает разработчикам MQL5 понять, почему их продукты могут получать неоднозначные отзывы на MQL5 Marketplace, и призывает разработчиков адаптировать свои подходы к конкретным брокерам для обеспечения прозрачных и воспроизводимых результатов. В случае широкого распространения это может стать важной, узкоспециализированной передовой практикой, которая принесет пользу нашему сообществу.
Двумерные копулы в MQL5 (Часть 1): Реализация гауссовой копулы и t-копулы Стьюдента для моделирования зависимостей
Это первая часть серии статей, посвящённых реализации двумерных копул в MQL5. В статье представлен код, реализующий гауссову копулу и t-копулу Стьюдента. Также рассматриваются основы статистических копул и связанные с ними темы. Код основан на Python-пакете ArbitrageLab от Hudson and Thames.
Архитектура машинного обучения для MetaTrader 5 (Часть 7): От разрозненных экспериментов к воспроизводимым результатам
В последней части этой серии мы выходим за рамки отдельных методов машинного обучения и переходим к проблеме “исследовательского хаоса”, с которым сталкиваются многие количественные трейдеры. Эта статья посвящена переходу от разрозненных экспериментов в Jupyter Notebook к продуманному пайплайну промышленного уровня, обеспечивающему воспроизводимость, отслеживаемость и эффективность.
Построение моделей волатильности в MQL5 (Часть I): Первичная реализация
В этой статье мы представляем библиотеку MQL5 для моделирования волатильности, разработанную так, чтобы функционировать аналогично пакету arch в Python. В настоящее время библиотека поддерживает спецификацию распространённых моделей условного среднего: HAR, AR, Constant Mean и Zero Mean, а также моделей условной волатильности: Constant Variance, ARCH и GARCH.
Теория графов: Алгоритм Форда—Фалкерсона для оценки ликвидности и пропускной способности рынка
В статье представлен советник на MQL5, который адаптирует метод максимального потока Форда-Фалкерсона в фильтр ликвидности и пропускной способности. Рыночные структуры — максимумы/минимумы свингов, ценовой дисбаланс (FVG), ордер-блоки и пулы ликвидности — образуют ориентированный граф с пропускной способностью ребер, определяемой объемом, ценовой реакцией, расстоянием и качеством структуры. Максимальный поток позволяет оценить возможности ICT-сделок, отфильтровать слабые пути и использовать динамическое управление размером позиции для последовательного двухэтапного процесса принятия решений.
Переосмысливаем классические стратегии (Часть 17): Моделирование технических индикаторов
В этом обсуждении мы сосредоточимся на том, как можно преодолеть "стеклянный потолок", создаваемый классическими методами машинного обучения в сфере финансов. Похоже, что самое главное ограничение ценности, которую можно извлечь из статистических моделей, заключается не в самих моделях — ни в данных, ни в сложности алгоритмов, — а скорее в методологии, которую мы используем для их применения. Другими словами, истинным узким местом может быть то, как мы используем модель, а не ее собственный потенциал.
От начального до среднего уровня: События в объектах (I)
В этой статье мы рассмотрим три из шести событий, которые MetaTrader 5 может генерировать при возникновении каких-либо изменений с объектом на графике. Данные события очень полезны с точки зрения взаимодействия с пользователями. Это происходит так, потому что без понимания этих событий нам придётся приложить гораздо больше усилий для поддержания определённой конфигурации в графике при попытке управлять объектами для конкретных целей.
Разработка инструментария для анализа Price Action (Часть 69): Обнаружение паттерна "флаг" в MQL5
В этой статье показано, как преобразовать субъективное распознавание паттерна "флаг" в воспроизводимую логику на языке MQL5 для графиков в реальном времени. Она объединяет нормализованную по ATR силу флагштока, ограничения на откат, проверку структуры консолидации, подтверждение пробоя и контроль перекрытия. В результате читатель получает практический подход, который строит адаптивные каналы и зоны, эффективно обновляет активные сетапы и при необходимости выдает алерты о новых подтвержденных паттернах.
Разработка инструментария для анализа Price Action (Часть 42): Интерактивное тестирование на графике с кнопочной логикой и статистическими уровнями
В мире, где важны скорость и точность, инструменты анализа должны быть столь же умными, как и рынки, на которых мы торгуем. В этой статье представлен советник с кнопочной логикой – интерактивная система, которая мгновенно преобразует исходные ценовые данные в значимые статистические уровни. Одним кликом мыши он вычисляет и отображает среднее, отклонение, процентили и другие показатели, превращая продвинутую аналитику в понятные сигналы на графике. Он выделяет зоны, где цена с наибольшей вероятностью отскочит, откатится или пробьет уровень, что делает анализ и быстрее, и практичнее.
Разработка инструментария для анализа Price Action (Часть 45): Создание динамической панели для анализа уровней в MQL5
В этой статье мы рассмотрим мощный инструмент на MQL5, который позволяет тестировать любой ценовой уровень одним кликом. Просто введите нужный уровень и нажмите Analyze – советник мгновенно сканирует исторические данные, выделяет на графике все касания и пробои и выводит статистику в аккуратной информационной панели. Вы увидите, как часто цена отрабатывала этот уровень или пробивала его, а также выступал ли уровень чаще как поддержка или как сопротивление. Читайте дальше, чтобы подробнее ознакомиться с процедурой.
Разработка инструментария для анализа Price Action (Часть 50): Создание модуля согласования сигналов RVGI, CCI и SMA на MQL5
Многим трейдерам сложно распознавать настоящие развороты. В этой статье представлен советник, который объединяет RVGI, CCI (±100) и трендовый фильтр SMA, формируя единый четкий сигнал разворота. Советник включает панель на графике, настраиваемые алерты и полный исходный файл, готовый к немедленной загрузке и тестированию.
От начального до среднего уровня: Навигация по песочнице
В данной статье мы рассмотрим два способа наблюдения за содержимым песочницы и даже взаимодействия с ним, используя MetaTrader 5 в качестве базовой платформы. Понимание содержания этой статьи имеет основополагающее значение для понимания того, что будет рассмотрено в последующих статьях.
Двумерные копулы в MQL5 (Часть 2): Реализация архимедовых копул в MQL5
Во второй части серии мы рассматриваем свойства двумерных архимедовых копул и их реализацию в MQL5. Мы также изучаем применение копул для разработки простой стратегии парного трейдинга.
Упрощение работы с базами данных в MQL5 (Часть 2): Создание сущностей с помощью метапрограммирования
Мы изучили расширенное использование #define для метапрограммирования в MQL5, создания сущностей, представляющих таблицы и метаданные столбцов (тип, первичный ключ, автоинкремент, возможность обнуления и т.д.). Мы централизовали эти определения в TickORM.mqh, автоматизировав генерацию классов метаданных и проложив путь для эффективной работы с данными в ORM без необходимости писать SQL вручную.
От начального до среднего уровня: Произвольный доступ (I)
В сегодняшней статье мы впервые столкнемся с произвольным доступом к содержимому файла. Это относится как к записи, так и к чтению информации и данных, хранящихся в файле. Однако, поскольку эта тема достаточно обширна, чтобы осветить её в одной статье, здесь мы ограничимся лишь вводным описанием вопроса произвольного доступа.
Переосмысливаем классические стратегии (Часть 20): Современная интерпретация стохастического осциллятора
В этой статье демонстрируется, как стохастический осциллятор (классический технический индикатор) можно использовать не только как инструмент торговли на возврате к среднему. Рассматривая индикатор с другой аналитической точки зрения, мы показываем, как знакомые стратегии могут раскрыть новую практическую ценность и лечь в основу альтернативных торговых правил, включая интерпретации следования за трендом. В конечном счете, в статье рассказывается о том, как каждый технический индикатор в терминале MetaTrader 5 содержит скрытый потенциал и как вдумчивый подход методом проб и ошибок позволяет выявить содержательные интерпретации, которые не лежат на поверхности.
Встраивание торговой дисциплины в код (Часть 2): Разработка механизма принудительного соблюдения дневного лимита сделок на уровне всего счета в MQL5
Мы разработали систему, которая устанавливает ежедневный лимит на количество сделок, чтобы вы соблюдали свои торговые правила. Она отслеживает все совершенные сделки на счете и автоматически вмешивается при достижении установленного лимита, предотвращая дальнейшую активность. Благодаря интеграции контроля непосредственно в платформу, система обеспечивает поддержание дисциплины даже при повышении рыночного давления.
От начального до среднего уровня: Песочница и MetaTrader
Вы знаете, что такое песочница? Вы знаете, как с ней работать? Если ответ на любой из этих вопросов «нет», прочитайте эту статью, чтобы понять базовый принцип работы песочницы. И разберитесь с тем, почему MetaTrader 5 использует песочницу для обеспечения целостности некоторых своих данных. Материалы, представленные здесь, преследуют исключительно дидактические цели. Ни в коем случае не рассматривайте приложение как окончательное, целью которого не является изучение представленных концепций.
Разработка инструментария для анализа Price Action (Часть 62): Создание адаптивной системы обнаружения параллельных каналов и пробоев на языке MQL5
В этой статье представлена адаптивная система обнаружения параллельных каналов и пробоев на языке MQL5. В ней показано, как определяются точки свинга, как строятся и динамически пересчитываются каналы, а также как пробои подтверждаются и визуализируются с помощью сигналов, сохраняющихся на графике. Этот подход объединяет геометрию трендовых линий, фильтрацию на основе ATR и проверку ретеста, обеспечивая надежный анализ Price Action в реальном времени для профессиональной работы с графиками и принятия торговых решений.
Искусство работы с логами (Часть 10): Подавление повторяющихся логов (suppression)
Мы создали систему подавления логов в библиотеке Logify. В статье подробно рассматривается, как класс CLogifySuppression уменьшает «шум» в консоли, применяя настраиваемые правила для исключения повторяющихся или незначимых сообщений. Также мы освещаем структуру внешних конфигурационных файлов, механизмы валидации и всестороннее тестирование, обеспечивающие надежность и гибкость сбора логов при разработке ботов и индикаторов.