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

icon

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

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

Новая статья
последние | лучшие
Графические интерфейсы II: Элемент "Пункт меню" (Глава 1)
Графические интерфейсы II: Элемент "Пункт меню" (Глава 1)

Графические интерфейсы II: Элемент "Пункт меню" (Глава 1)

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

Нейросети — это просто (Часть 11): Вариации на тему GPT

Сегодня, наверное, одной из самых передовых языковых моделей нейросетей является GPT-3, которая в максимальном своем варианте содержит 175 млрд. параметров. Конечно, мы не будем создавать подобного монстра в домашних условиях. Но давайте посмотрим, какие архитектурные решения мы можем использовать в своей работе и какие это нам даст преимущества.
Графические интерфейсы X: Элемент "Время", элемент "Список из чекбоксов" и сортировка таблицы (build 6)
Графические интерфейсы X: Элемент "Время", элемент "Список из чекбоксов" и сортировка таблицы (build 6)

Графические интерфейсы X: Элемент "Время", элемент "Список из чекбоксов" и сортировка таблицы (build 6)

Продолжаем развивать библиотеку для создания графических интерфейсов. На этот раз будут представлены такие элементы, как «Время» и «Список из чекбоксов». Кроме этого, в класс таблицы типа CTable добавлена возможность сортировать данные по возрастанию и убыванию.
Графические интерфейсы XI: Интеграция графической стандартной библиотеки (build 16)
Графические интерфейсы XI: Интеграция графической стандартной библиотеки (build 16)

Графические интерфейсы XI: Интеграция графической стандартной библиотеки (build 16)

Недавно разработчики MQL5 представили новую версию графической библиотеки для создания научных графиков (класс CGraphic). В этом обновлении нашей библиотеки будет представлена версия с новым элементом для создания графиков. Теперь визуализировать данные различных типов будет ещё проще.
Кроссплатформенный торговый советник: Временные фильтры
Кроссплатформенный торговый советник: Временные фильтры

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

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

Кроссплатформенный торговый советник: Мани-менеджмент

В этой статье обсуждается реализация мани-менеджмента в кроссплатформенном торговом советнике. Классы мани-менеджмента отвечают за расчет размера лота, которым советник войдет в следующую сделку.
Графические интерфейсы II: Элементы "Разделительная линия" и "Контекстное меню" (Глава 2)
Графические интерфейсы II: Элементы "Разделительная линия" и "Контекстное меню" (Глава 2)

Графические интерфейсы II: Элементы "Разделительная линия" и "Контекстное меню" (Глава 2)

В этой статье мы создадим элемент «Разделительная линия». Его тоже можно будет использовать не только как независимый элемент интерфейса, но и как часть многих других элементов. После этого у нас будет всё необходимое для разработки класса контекстного меню, которое тоже будет подробно рассмотрено в этой статье. Кроме этого, вносятся необходимые дополнения в класс, который является базой для хранения указателей на все элементы графического интерфейса приложения.
Еще раз о картах Кохонена
Еще раз о картах Кохонена

Еще раз о картах Кохонена

Cтатья описывает приемы работы с картами Кохонена. Она будет интересна как исследователям рынка с начальными навыками программирования на MQL4 и MQL5, так и опытным программистам, испытывающим сложности с подключением карт Кохонена к своим проектам.
preview
WebSocket для MetaTrader 5

WebSocket для MetaTrader 5

До появления сетевых функций в обновленном MQL5 API, приложения MetaTrader были ограничены в возможности подключаться и взаимодействовать с сервисами на основе протокола WebSocket. Сейчас ситуация изменилась. В этой статье мы рассмотрим реализацию библиотеки WebSocket на чистом MQL5. Будут представлены краткое описание протокола WebSocket и пошаговое руководство по использованию полученной библиотеки.
Повышаем эффективность линейных торговых систем
Повышаем эффективность линейных торговых систем

Повышаем эффективность линейных торговых систем

В сегодняшней статье речь пойдет о том, как MQL5-программисты со средним уровнем подготовки могут повысить прибыльность своих линейных торговых систем, используя так называемую технику возведения в степень (technique of exponentiation). Данная техника названа именно так, потому что при ее использовании кривая средств приобретает геометрическую, или экспоненциальную, форму, становясь похожей на параболу. В частности, мы реализуем на языке MQL5 фиксированно-фракционный (Fixed Fractional) метод Ральфа Винса.
Графические интерфейсы XI: Нарисованные элементы управления (build 14.2)
Графические интерфейсы XI: Нарисованные элементы управления (build 14.2)

Графические интерфейсы XI: Нарисованные элементы управления (build 14.2)

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

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

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

Оптимальный метод подсчета объема совокупной позиции по заданному магическому номеру

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

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

Некоторые трейдеры используют автоматизированные системы торговли, другие совмещают автоматическую торговлю с ручной, основанной на показаниях нескольких индикаторов. Я принадлежу ко второй группе, поэтому возникла необходимость в интерактивном инструменте для динамической оценки рисков и ценовых уровней непосредственно с графика. В данной статье мы представим способ реализации интерактивного советника для полуавтоматической торговли с заданным уровнем соотношения прибыль/риск (Reward/Risk ratio).
MQL5 для начинающих: Антивандальная защита графических объектов
MQL5 для начинающих: Антивандальная защита графических объектов

MQL5 для начинающих: Антивандальная защита графических объектов

Что должна делать ваша программа, если графические панели управления были удалены или изменены кем-то еще? В этой статье мы покажем, как после удаления приложения не иметь на графике "бесхозные" объекты, и как не потерять над ними контроль в случае переименования или удаления созданных программно объектов.
Графические интерфейсы I: Тестируем библиотеку в программах разных типов и в терминале MetaTrader 4 (Глава 5)
Графические интерфейсы I: Тестируем библиотеку в программах разных типов и в терминале MetaTrader 4 (Глава 5)

Графические интерфейсы I: Тестируем библиотеку в программах разных типов и в терминале MetaTrader 4 (Глава 5)

В предыдущей главе первой части серии о графических интерфейсах в класс формы были добавлены методы, которые позволяют управлять формой посредством нажатия на ее элементах управления. В этой статье протестируем проделанную работу в разных типах MQL-программ, таких как индикаторы и скрипты. А поскольку библиотека задумывалась как кросс-платформенная (в рамках торговых платформ MetaTrader), то проведем тесты также и в MetaTrader 4.
Графические интерфейсы X: Элемент "Стандартный график" (build 4)
Графические интерфейсы X: Элемент "Стандартный график" (build 4)

Графические интерфейсы X: Элемент "Стандартный график" (build 4)

На этот раз мы рассмотрим такой элемент графического интерфейса, как Стандартный график. С его помощью можно будет создавать массивы объектов-графиков с возможностью синхронизированной горизонтальной прокрутки. Кроме этого, продолжим оптимизировать код библиотеки для уменьшения потребления ресурсов процессора.
Графические интерфейсы X: Выделение текста в многострочном поле ввода (build 13)
Графические интерфейсы X: Выделение текста в многострочном поле ввода (build 13)

Графические интерфейсы X: Выделение текста в многострочном поле ввода (build 13)

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

Система голосовых уведомлений торговых событий и сигналов

В настоящее время голосовые помощники уже давно заняли заметную роль в жизни человека, будь то навигатор, голосовой поисковик или же переводчик. Поэтому в данной статье я постараюсь разработать простую и понятную систему голосовых уведомлений для различных торговых событий, состояниях рынка или же сигналов торговых систем.
Графические интерфейсы VI: Элементы "Слайдер" и "Двухсторонний слайдер" (Глава 2)
Графические интерфейсы VI: Элементы "Слайдер" и "Двухсторонний слайдер" (Глава 2)

Графические интерфейсы VI: Элементы "Слайдер" и "Двухсторонний слайдер" (Глава 2)

В предыдущей статье разрабатываемая библиотека была пополнена сразу четырьмя довольно часто используемыми в графических интерфейсах элементами управления: «чекбокс», «поле ввода», «поле ввода с чекбоксом» и «комбобокс с чекбоксом». Вторая глава шестой части серии будет посвящена таким элементам управления, как слайдер и двухсторонний слайдер.
Индикатор для построения графика "шпинделей" (веретён)
Индикатор для построения графика "шпинделей" (веретён)

Индикатор для построения графика "шпинделей" (веретён)

Статья рассматривает построение графика "шпинделей" (spindles) или, как их еще называют, "веретён", его использование в торговых стратегиях и советниках. Вначале обсудим появление графика, его построение и связь с графиком японских свечей. Далее проанализируем реализацию индикатора в программном коде на языке MQL5. Протестируем основанный на индикаторе эксперт и сформулируем торговую стратегию.
Графические интерфейсы X: Алгоритм переноса слов в многострочном поле ввода (build 12)
Графические интерфейсы X: Алгоритм переноса слов в многострочном поле ввода (build 12)

Графические интерфейсы X: Алгоритм переноса слов в многострочном поле ввода (build 12)

Продолжим развивать элемент "Многострочное поле ввода". Наша задача на этот раз — сделать автоматический перенос слов на следующую строку в случае переполнения по ширине поля ввода или же обратный перенос на предыдущую строку, если появляется такая возможность.
Экспертная система "Комментатор". Практическое использование встроенных индикаторов в MQL4-программе
Экспертная система "Комментатор". Практическое использование встроенных индикаторов в MQL4-программе

Экспертная система "Комментатор". Практическое использование встроенных индикаторов в MQL4-программе

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

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

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

Оптимизировать оптимизацию: несколько простых идей

Процесс оптимизации может потребовать существенные ресурсы вашего компьютера или даже тестерных агентов MQL5 Cloud Network. В этой статье описываются некоторые несложные идеи, которые я использую на практике для облегчения работы или усовершенствования тестера стратегий платформы MetaTrader 5. Эти идеи я подчерпнул из прочитанной документации, форума и статей.
Универсальный торговый эксперт: Доступ к свойствам инструмента (часть 8)
Универсальный торговый эксперт: Доступ к свойствам инструмента (часть 8)

Универсальный торговый эксперт: Доступ к свойствам инструмента (часть 8)

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

Рецепты MQL5 - ОСО-ордера

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

Рецепты MQL5 - Уменьшаем эффект подгонки и решаем проблему недостаточного количества котировок

Какую бы торговую стратегию вы не использовали всегда возникает один вопрос: какие выбрать параметры, чтобы получить прибыль в будущем? В статье приведен пример эксперта с возможностью оптимизации параметров на множестве символов одновременно. Это метод призван уменьшить эффект подгонки параметров, а также решает проблему, когда данных одного символа недостаточно для проведения исследования.
Графические интерфейсы X: Сортировка, реконструкция таблицы и элементы управления в ячейках (build 11)
Графические интерфейсы X: Сортировка, реконструкция таблицы и элементы управления в ячейках (build 11)

Графические интерфейсы X: Сортировка, реконструкция таблицы и элементы управления в ячейках (build 11)

Продолжаем добавлять в нарисованную таблицу новые возможности: сортировку данных, управление количеством столбцов и строк, установку типа ячеек таблицы для закрепления в них элементов управления.
Графические интерфейсы V: Вертикальная и горизонтальная полоса прокрутки (Глава 1)
Графические интерфейсы V: Вертикальная и горизонтальная полоса прокрутки (Глава 1)

Графические интерфейсы V: Вертикальная и горизонтальная полоса прокрутки (Глава 1)

Продолжаем рассматривать процесс разработки библиотеки для создания графических интерфейсов в среде торговых терминалов MetaTrader. В первой главе пятой части серии разработаем классы для создания таких элементов управления, как вертикальные и горизонтальные полосы прокрутки.
Графические интерфейсы II: Элемент "Главное меню" (Глава 4)
Графические интерфейсы II: Элемент "Главное меню" (Глава 4)

Графические интерфейсы II: Элемент "Главное меню" (Глава 4)

Это завершающая глава второй части серии о графических интерфейсах. В ней мы рассмотрим создание такого элемента управления, как «Главное меню». Будет продемонстрирован процесс его разработки и настройка обработчиков классов библиотеки для правильной реакции на действия пользователя. Также мы рассмотрим, как подключить к пунктам главного меню контекстные меню. Кроме того, затронем тему блокировки неактивных на текущий момент элементов.
Графические интерфейсы VIII: Элемент "Календарь" (Глава 1)
Графические интерфейсы VIII: Элемент "Календарь" (Глава 1)

Графические интерфейсы VIII: Элемент "Календарь" (Глава 1)

В восьмой части серии о создании графических интерфейсов в среде торговых терминалов MetaTrader мы рассмотрим сложные составные элементы управления: календари, древовидный список, файловый навигатор. Каждому из этих элементов будут посвящены отдельные статьи, поскольку материал довольно объемный. Итак, в первой главе этой части описывается элемент "Календарь" и его расширенная версия — "Выпадающий календарь".
preview
Нейросети — это просто (Часть 14): Кластеризация данных

Нейросети — это просто (Часть 14): Кластеризация данных

Должен признаться, что с момента публикации последней статьи прошло уже больше года. За столь длительное время можно многое переосмыслить, выработать новые подходы. И в новой статье я хотел бы немного отойти от используемого ранее метода обучения с учителем, и предложить немного окунуться в алгоритмы обучения без учителя. И, в частности, рассмотреть один из алгоритмов кластеризации — k-средних.
Рецепты MQL5 – Стресс-тестирование торговой стратегии с помощью пользовательских символов
Рецепты MQL5 – Стресс-тестирование торговой стратегии с помощью пользовательских символов

Рецепты MQL5 – Стресс-тестирование торговой стратегии с помощью пользовательских символов

В статье рассматривается подход по стресс-тестированию торговых стратегий с помощью пользовательских символов. Для этих целей создаётся класс пользовательского символа. С его помощью идёт работа по получению тиковых данных из сторонних источников и изменению свойств символа. По результатам проделанной работы предлагаются варианты изменения торговых условий, в отношении которых проводится тестирование торговой стратегии.
Графические интерфейсы XI: Поля ввода и комбо-боксы в ячейках таблицы (build 15)
Графические интерфейсы XI: Поля ввода и комбо-боксы в ячейках таблицы (build 15)

Графические интерфейсы XI: Поля ввода и комбо-боксы в ячейках таблицы (build 15)

В этом обновлении библиотеки элемент "Таблица" (класс CTable) пополнится новыми опциями. Расширим линейку элементов в ячейках таблицы и на этот раз добавим в неё поля ввода и комбо-боксы. В качестве дополнения в это обновление была добавлена возможность управлять размерами окна пользователем MQL-приложения во время её выполнения.
Графические интерфейсы IX: Элементы "Индикатор выполнения" и "Линейный график" (Глава 2)
Графические интерфейсы IX: Элементы "Индикатор выполнения" и "Линейный график" (Глава 2)

Графические интерфейсы IX: Элементы "Индикатор выполнения" и "Линейный график" (Глава 2)

Вторая глава девятой части серии будет посвящена элементам «Индикатор выполнения» и «Линейный график». Как всегда, будут показаны подробные примеры того, как можно использовать эти элементы в своих MQL-приложениях.
Графические интерфейсы XI: Рефакторинг кода библиотеки (build 14.1)
Графические интерфейсы XI: Рефакторинг кода библиотеки (build 14.1)

Графические интерфейсы XI: Рефакторинг кода библиотеки (build 14.1)

По мере разрастания библиотеки снова необходимо оптимизировать ее код, чтобы уменьшить его объем. Версия библиотеки, описанная в этой статье, стала ещё более объектно-ориентированной. Это сделало код понятнее для изучения. Подробное описание последних изменений позволит читателю самостоятельно развивать библиотеку, исходя из собственных потребностей.
Графические интерфейсы X: Новые возможности для нарисованной таблицы (build 9)
Графические интерфейсы X: Новые возможности для нарисованной таблицы (build 9)

Графические интерфейсы X: Новые возможности для нарисованной таблицы (build 9)

До сегодняшнего дня самым развитым типом таблиц из всех представленных в библиотеке был тип CTable. Эта таблица собирается из полей ввода типа OBJ_EDIT, и дальнейшее её развитие уже проблематично. Поэтому с точки зрения максимальных возможностей даже на текущем этапе развития библиотеки, лучше развивать нарисованную таблицу типа CCanvasTable. Текущая её версия совсем безжизненна, но начиная с этой статьи, мы будем пытаться это исправить.
preview
Фиксированный стоп-лосс на основе ценового действия и RSI ("умный" стоп-лосс)

Фиксированный стоп-лосс на основе ценового действия и RSI ("умный" стоп-лосс)

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

Применение контейнеров для компоновки графического интерфейса: класс CBox

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