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

icon

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

Эти статьи будут полезны как новичкам в автоматическом трейдинге, так и подготовленным трейдерам с опытом программирования и торговли. Здесь вы найдете не только примеры, но и новые идеи.

Новая статья
последние | лучшие
Библиотека для простого и быстрого создания программ для MetaTrader (Часть I): Концепция, организация данных, первые результаты
Библиотека для простого и быстрого создания программ для MetaTrader (Часть I): Концепция, организация данных, первые результаты

Библиотека для простого и быстрого создания программ для MetaTrader (Часть I): Концепция, организация данных, первые результаты

Разбирая огромное количество торговых стратегий, множество заказов на изготовление программ для терминалов MT5 и MT4, просматривая различные сайты по MetaTrader, я пришёл к выводу, что всё это многообразие в подавляющем своём большинстве строится на фактически одних и тех же элементарных функциях, действиях и значениях, повторяющихся от программы к программе. Результатом моей работы стала кроссплатформенная библиотека "DoEasy" для быстрого и лёгкого создания программ для МetaТrader 5 и МetaТrader 4
ZigZag всему голова (Часть II):  Примеры получения, обработки и отображения данных
ZigZag всему голова (Часть II):  Примеры получения, обработки и отображения данных

ZigZag всему голова (Часть II): Примеры получения, обработки и отображения данных

В первой части был описан модифицированный индикатор ZigZag и класс для получения данных индикаторов такого типа. Теперь мы покажем как создать индикаторы на основе этих инструментов, а также напишем эксперта для тестов, который будет заключать сделки по сигналам, формируемым индикатором ZigZag. В качестве дополнения в этой статье будет представлена новая версия библиотеки для создания графических интерфейсов EasyAndFast.
Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#
Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#

Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#

Простой и быстрый способ создания графических окон при помощи редактора Visual Studio с последующей интеграцией в код MQL советника. Статья расчитана на широкий круг читателей, и не требует каких-либо познаний в C# и технологии .Net.
ZigZag всему голова (Часть I): Разработка базового класса индикатора
ZigZag всему голова (Часть I): Разработка базового класса индикатора

ZigZag всему голова (Часть I): Разработка базового класса индикатора

Многие исследователи не уделяют должного внимания определению характера поведения цены. При этом используются сложные методы, которые очень часто являются просто «чёрными ящиками», такие как: машинное обучение или нейронные сети. В таких случаях самым важным является такой — «Какие данные подать на вход для обучения той или иной модели?»
Разворотные паттерны: Тестируем паттерн "Голова-Плечи"
Разворотные паттерны: Тестируем паттерн "Голова-Плечи"

Разворотные паттерны: Тестируем паттерн "Голова-Плечи"

Данная статья является логическим продолжением предыдущей публикации "Разворотные паттерны: Тестируем паттерн "Двойная вершина/дно". Теперь мы рассмотрим еще один широко известный разворотный паттерн "Голова-Плечи", сравним результативность торговли двух паттернов и сделаем попытку объединить торговлю по двум паттернам в единую торговую систему.
Применение OpenCL для тестирования свечных моделей
Применение OpenCL для тестирования свечных моделей

Применение OpenCL для тестирования свечных моделей

В данной статье мы рассмотрим алгоритм реализации тестера свечных моделей на языке OpenCL в режиме "OHLC на M1". А также сравним его быстродействие cо встроенным тестером стратегий, запущенным в режиме быстрой и медленной оптимизации.
Разворотные паттерны: Тестируем паттерн "Двойная вершина/дно"
Разворотные паттерны: Тестируем паттерн "Двойная вершина/дно"

Разворотные паттерны: Тестируем паттерн "Двойная вершина/дно"

В практике торговли трейдеры часто ищут точки разворота трендов и тенденций, так как именно в момент зарождения тренда цена имеет наибольший потенциал движения. Именно поэтому, в практике технического анализа рассматриваются различные разворотные паттерны. Одним из наиболее известных и часто применяемых паттернов является двойная вершина/дно. В данной статье предлагается вариант машинного обнаружения паттерна, а также тестируется его доходность на исторических данных.
Реализация Take Profit в виде лимитных ордеров без изменения оригинального кода советника
Реализация Take Profit в виде лимитных ордеров без изменения оригинального кода советника

Реализация Take Profit в виде лимитных ордеров без изменения оригинального кода советника

На форуме давно обсуждается вопрос использования лимитных ордеров вместо установки стандартного тейк-профита позиции. В чем видится преимущество такого подхода и как его можно реализовать в своей торговле? В этой статье я я хочу предложить Вам свое видение ответов на эти вопросы.
Методы дистанционного управления работой советников
Методы дистанционного управления работой советников

Методы дистанционного управления работой советников

Основным преимуществом торговых роботов является безустанная работа 24 часа в сутки на удаленном VPS сервере. Но иногда необходимо вмешаться в их работу в ручном режиме, а прямого доступа к серверу сейчас нет. Возможно ли управлять работой советника дистанционно? В данной статье предлагается один из вариантов управления роботами через внешние команды.
Рецепты MQL5 – Получаем свойства открытой хеджевой позиции
Рецепты MQL5 – Получаем свойства открытой хеджевой позиции

Рецепты MQL5 – Получаем свойства открытой хеджевой позиции

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

Модель продолжения движения - поиск на графике и статистика исполнения

В данной статье я хочу описать программное определение одной из моделей продолжения движения. В основе работы лежит определение двух волн — основной волны и коррекционной волны. В качестве экстремумов будут использованы фракталы, а также, как я их называю, потенциальные фракталы - экстремумы, которые как фракталы еще не сформировались.
Elder-Ray Биржевой рентген (Bulls Power и Bears Power)
Elder-Ray Биржевой рентген (Bulls Power и Bears Power)

Elder-Ray Биржевой рентген (Bulls Power и Bears Power)

Торговая система "Биржевой рентген" на основе индикаторов Bulls Power, Bears Power и Moving Average (EMA — экспоненциальное усреднение). Эту систему описал Александр Элдер в своей книге "Как играть и выигрывать на бирже" (Trading for a living).
Горизонтальные диаграммы на графиках MеtaTrader 5
Горизонтальные диаграммы на графиках MеtaTrader 5

Горизонтальные диаграммы на графиках MеtaTrader 5

Задачи по отрисовке горизонтальных диаграмм на графике терминала не часто, но встречаются разработчику. Что это за задачи? Это индикаторы распределения объемов за какой то определенный период. Задачи по распределению цены, различные стаканы и т.п. В статье рассмотрены вопросы создания и управления горизонтальными диаграммами на графиках, как массивами графических примитивов.
График PairPlot на основе CGraphic для анализа зависимостей между массивами данных (таймсериями)
График PairPlot на основе CGraphic для анализа зависимостей между массивами данных (таймсериями)

График PairPlot на основе CGraphic для анализа зависимостей между массивами данных (таймсериями)

Часто в процессе технического анализа перед трейдерами ставится задача сравнения нескольких временных рядов. Проведение такого анализа требует соответствующих инструментов. В этой статье я предлагаю построить инструмент для графического анализа и поиска зависимостей между двумя и более временных рядов.
Написание биржевых индикаторов с контролем объема на примере индикатора дельты
Написание биржевых индикаторов с контролем объема на примере индикатора дельты

Написание биржевых индикаторов с контролем объема на примере индикатора дельты

В статье рассмотрен алгоритм построения биржевых индикаторов на реальных объемах с использованием функций CopyTicks() и CopyTicksRange(). Также приведены особенности построения таких индикаторов и описаны нюансы их работы в реальном времени и в тестере стратегий.
Интеграция эксперта на MQL и базы данных (SQL Server, .NET и C#)
Интеграция эксперта на MQL и базы данных (SQL Server, .NET и C#)

Интеграция эксперта на MQL и базы данных (SQL Server, .NET и C#)

Статья описывает, как добавить в экспертов на MQL5 возможность работы с сервером баз данных Microsoft SQL Server. Используется импорт функций из DLL. Для создания DLL применяется платформа Microsoft .NET и язык C#. Используемые в статье методы с незначительными изменениями подходят и для экспертов, написанных на MQL4.
Универсальный индикатор RSI для работы одновременно в двух направлениях
Универсальный индикатор RSI для работы одновременно в двух направлениях

Универсальный индикатор RSI для работы одновременно в двух направлениях

При разработке торговых алгоритмов мы часто сталкиваемся с проблемой: как определить, где начинается и заканчивается тренд/флэт? В этой статье попытаемся создать универсальный индикатор, в котором совместим сигналы для разных типов стратегий. Попробуем максимально упростить получение сигналов на торговые операции в эксперте. Приведем пример того, как объединить несколько разных индикаторов в одном.
Как составить Техническое Задание для заказа торгового робота
Как составить Техническое Задание для заказа торгового робота

Как составить Техническое Задание для заказа торгового робота

Вы разработали торговую стратегию и торгуете по ней? Если правила вашей системы хорошо формализуются в программные алгоритмы, то лучше вместо себя поставить торговать робота. Робот не спит, не ест и не подвержен человеческим слабостям. В этой статье мы покажем, как составить Техническое Задание для заказа торгового робота во Фрилансе.
Собственное представление торговой истории и создание графиков для отчетов
Собственное представление торговой истории и создание графиков для отчетов

Собственное представление торговой истории и создание графиков для отчетов

В статье описываются пользовательские методы оценки истории торговли. Для этого написаны два класса для ее выгрузки и анализа. Первый собирает торговую историю в краткую таблицу. Второй предназначен для вычисления статистики: он рассчитывает ряд показателей и строит графики, с помощью которых оценивать результативность торгов становится удобнее.
Как анализировать сделки выбранного Сигнала на графике
Как анализировать сделки выбранного Сигнала на графике

Как анализировать сделки выбранного Сигнала на графике

Сервис торговых Сигналов развивается семимильными шагами. Доверяя свои средства поставщику сигнала, хотелось бы минимизировать риск потери депозита. Как же разобраться в этом лесу торговых сигналов? Как найти именно тот, который принесет прибыль? В статье предлагается создать средство для визуального анализа истории сделок торговых сигналов на графике инструмента.
Торговый эксперт с графическим интерфейсом: Наполнение функционалом (Часть II)
Торговый эксперт с графическим интерфейсом: Наполнение функционалом (Часть II)

Торговый эксперт с графическим интерфейсом: Наполнение функционалом (Часть II)

Перед вами вторая часть статьи о создании мультисимвольного сигнального эксперта для ручной торговли. Мы уже создали графический интерфейс. В этой статье речь пойдет о том, как связать его с функционалом программы.
Торговый эксперт с графическим интерфейсом: Создание панели (Часть I)
Торговый эксперт с графическим интерфейсом: Создание панели (Часть I)

Торговый эксперт с графическим интерфейсом: Создание панели (Часть I)

Несмотря на то, что многие трейдеры до сих пор предпочитают ручную торговлю, полностью обойтись без автоматизации рутинных операций здесь вряд ли получится. В статье продемонстрирован пример создания мультисимвольного сигнального эксперта для ручной торговли.
Визуализация результатов оптимизации по выбранному критерию
Визуализация результатов оптимизации по выбранному критерию

Визуализация результатов оптимизации по выбранному критерию

В статье мы продолжаем развивать MQL-приложение для работы с результатами оптимизации, которая начата в предыдущих статьях. На этот раз будет показан пример, когда таблицу лучших результатов можно сформировать уже после оптимизации параметров, указав через графический интерфейс другой критерий.
Улучшаем работу с Панелями: добавляем прозрачность, меняем цвет фона и наследуемся от CAppDialog/CWndClient
Улучшаем работу с Панелями: добавляем прозрачность, меняем цвет фона и наследуемся от CAppDialog/CWndClient

Улучшаем работу с Панелями: добавляем прозрачность, меняем цвет фона и наследуемся от CAppDialog/CWndClient

Продолжаем изучать работу с CAppDialog. Теперь мы научимся задавать цвета фона, рамки и заголовка для графической панели. По шагам рассмотрим, как добавить прозрачность окна приложения при перемещении его на графике. Далее мы рассмотрим создание потомков от CAppDialog или CWndClient и увидим новые тонкости в работе с контролами. Наконец, посмотрим с новой точки зрения на новые Проекты.
Как перенести расчетную часть любого индикатора в код эксперта
Как перенести расчетную часть любого индикатора в код эксперта

Как перенести расчетную часть любого индикатора в код эксперта

Причины для переноса кода индикатора в советник могут быть различными. Но как оценить плюсы и минусы такого подхода? В данной статье предлагается технология переноса кода индикатора в советник. Проведены несколько экспериментов по оценке скорости работы советника.
Random Decision Forest в обучении с подкреплением
Random Decision Forest в обучении с подкреплением

Random Decision Forest в обучении с подкреплением

Random Forest (RF) с применением бэггинга — один из самых сильных методов машинного обучения, который немного уступает градиентному бустингу. В статье делается попытка разработки самообучающейся торговой системы, которая принимает решения на основании полученного опыта взаимодействия с рынком.
Строим индикатор ZigZag по осцилляторам. Пример выполнения технического задания
Строим индикатор ZigZag по осцилляторам. Пример выполнения технического задания

Строим индикатор ZigZag по осцилляторам. Пример выполнения технического задания

В статье демонстрируется создание индикатора ZigZag в соответствии с одним из примеров заданий, описанным в статье "Как составить техническое задание при заказе индикатора". Индикатор строится по экстремумам, которые определяются с помощью осциллятора. В индикаторе предусмотрена возможность использования одного из пяти осцилляторов на выбор: WPR, CCI, Chaikin, RSI, Stochastic Oscillator.
preview
Как создать графическую панель любой сложности и как это работает

Как создать графическую панель любой сложности и как это работает

В статье подробно рассматривается, как создать панель на базе класса CAppDialog и как добавить в нее элементы управления. Описывается структура панели и схема наследования объектов в ней. Продемонстрировано, что нужно для обработки событий и как события раздаются подчинённым элементам управления. Приведены примеры изменения параметров панели: размера, цвета фона.
Создание пользовательской новостной ленты в MetaTrader 5
Создание пользовательской новостной ленты в MetaTrader 5

Создание пользовательской новостной ленты в MetaTrader 5

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

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

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

Мультисимвольный график баланса в MetaTrader 5

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

Как составить Техническое задание при заказе индикатора

Трейдеры ищут закономерности в поведении рынка, указывающие на благоприятные моменты для совершения торговых сделок. Чаще всего первым шагом при разработке торговой системы является создание технического индикатора, который помогает увидеть на графике цен нужную ему информацию. Статья поможет вам составить Техническое задание для заказа индикатора во Фрилансе.
LifeHack для трейдера: замешиваем ForEach на дефайнах (#define)
LifeHack для трейдера: замешиваем ForEach на дефайнах (#define)

LifeHack для трейдера: замешиваем ForEach на дефайнах (#define)

Промежуточная ступенька для тех, кто всё ещё пишет на MQL4, но никак не может перейти на MQL5. Мы продолжаем искать возможности для написания кода в стиле MQL4. На этот раз рассмотрим макроподстановку препроцессора - #define.
Глубокие нейросети (Часть V). Байесовская  оптимизация гиперпараметров DNN
Глубокие нейросети (Часть V). Байесовская  оптимизация гиперпараметров DNN

Глубокие нейросети (Часть V). Байесовская оптимизация гиперпараметров DNN

В статье рассматриваются возможности байесовской оптимизации гиперпараметров глубоких нейросетей, полученных различными вариантами обучения. Сравнивается качество классификации DNN с оптимальными гиперпараметрами при различных вариантах обучения. Форвард-тестами проверена глубина эффективности оптимальных гиперпараметров DNN. Определены возможные направления улучшения качества классификации.
Паттерн прорыва канала
Паттерн прорыва канала

Паттерн прорыва канала

Как известно, ценовые тренды образуют ценовые каналы. Один из сильных сигналов на изменение тренда — прорыв текущего канала. В этой статье я предлагаю попробовать автоматизировать процесс поиска таких сигналов и посмотреть, действительно ли можно на этом построить свою стратегию торговли.
Пользовательский тестер стратегий на основе быстрых математических вычислений
Пользовательский тестер стратегий на основе быстрых математических вычислений

Пользовательский тестер стратегий на основе быстрых математических вычислений

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

Торговля по уровням ДиНаполи

В статье рассматривается один из вариантов практической реализации советника для торговли по уровням ДиНаполи при помощи стандартных инструментов MQL5. Протестированы результаты его работы и сделаны выводы.
Торговая стратегия 'Momentum Pinball'
Торговая стратегия 'Momentum Pinball'

Торговая стратегия 'Momentum Pinball'

В этой статье продолжается тема написания кода к торговым системам, описанным в книге Линды Рашке и Лоуренса Коннорса "Биржевые секреты. Высокоэффективные стратегии краткосрочной торговли". На этот раз исследуется система 'Momentum Pinball': описано создание двух индикаторов, торгового робота и сигнального блока по ней.
Кроссплатформенный торговый советник: Классы CExpertAdvisor и CExpertAdvisors
Кроссплатформенный торговый советник: Классы CExpertAdvisor и CExpertAdvisors

Кроссплатформенный торговый советник: Классы CExpertAdvisor и CExpertAdvisors

В заключительной статье серии о кроссплатформенном торговом советнике речь пойдет о классах CExpertAdvisor и CExpertAdvisors, которые служат контейнерами для всех ранее описанных компонентов эксперта. Также рассмотрена реализация отслеживания новых баров и сохранения данных.
Кроссплатформенный торговый советник: Пользовательские стопы, Безубыток и Трейлинг
Кроссплатформенный торговый советник: Пользовательские стопы, Безубыток и Трейлинг

Кроссплатформенный торговый советник: Пользовательские стопы, Безубыток и Трейлинг

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