Разбор торговой стратегии «Орел и решка» — исходный код MQL5

ForTrader.org
RU
Наглядное программирование в MQL5 торговой стратегии на основе рандома.

Стратегия торговли «Орел и Решка» является одной из популярных торговых методик среди трейдеров российского рынка. Название отражает суть подхода: выбор направления сделки осуществляется случайным образом, аналогично подбрасыванию монеты («орел» или «решка»).

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

Содержание

Суть торговой стратегии

Основная идея заключается в следующем:

  • Выбор актива: трейдер выбирает финансовый инструмент для торговли (например, акции, валюты).
  • Подбрасывание монеты осуществляется случайный выбор направления сделки («купить» или «продать»).
  • Открытие позиции: после выбора стороны открывается сделка на заранее определенный объем.
  • Управление рисками: устанавливаются стоп-лосс и тейк-профит — уровни для ограничения убытков и фиксации прибыли соответственно.

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

Преимущества и недостатки стратегии

Плюсы тактики в следующем:

  1. Нет необходимости проводить сложный технический или фундаментальный анализ рынка.
  2. Не нужно постоянно анализировать рынок — это снижает уровень стресса.
  3. Стратегия легко автоматизируется и может использоваться в рамках автоматизированных торговых систем.

Минусы:

  1. Вероятность успеха составляет всего 50%, что значительно ниже, чем у большинства профессиональных стратегий.
  2. Игнорирование важных экономических показателей и технических индикаторов повышает риски потерь.
  3. Для минимизации рисков рекомендуется иметь значительный торговый капитал, позволяющий выдержать возможные убытки.

Для успешной реализации стратегии важно учитывать следующие моменты:

  • Оптимальным считается открытие позиций объемом не более 1% от общего торгового капитала.
  • Строгое соблюдение уровней стоп-лоссов и тейк-профитов.
  • Диверсификация активов: использование разных финансовых инструментов позволяет снизить общий риск портфеля.

Начинающим трейдерам рекомендуется сначала тестировать стратегию «Орел и Решка» на демо-счетах, чтобы оценить её потенциал и выработать собственные подходы к управлению позициями.

Программный код советника

1. Общая структура файла

Файл эксперта начинается с заголовка (комментария), где указана:

  • название файла (VR Heads or Tails.mq5);
  • информация об авторе и годе выпуска;
  • веб‑сайт разработчика.

Далее следуют директивы #property, задающие метаданные эксперта: авторские права, версию и нужные ссылки.

2. Подключение библиотек и объявление переменных

Для работы с торговыми операциями подключаются стандартные библиотеки MQL5:

mql5

#include <Trade\Trade.mqh>

CTrade trade;  // Экземпляр класса для управления торговлей

#include <Trade\PositionInfo.mqh>

CPositionInfo posit;  // Экземпляр для хранения информации о позициях

  • CTrade — класс, позволяющий отправлять торговые приказы (покупки, продажи);
  • CPositionInfo — класс для получения данных о открытых позициях.

Затем объявляются входные параметры эксперта (настраиваются пользователем в интерфейсе MT5):

mql5

input double  iStartLots    = 0.01;  // Начальный лот

input int     iTakeProfit   = 450;   // Тейк‑профит (в пунктах)

input int     iStopLoss     = 390;   // Стоп‑лосс (в пунктах)

input int     iMagicNumber  = 227;   // Уникальный идентификатор сделок

input int     iSlippage     = 30;    // Максимально допустимое проскальзывание

  • iStartLots — объём первой сделки;
  • iTakeProfit и iStopLoss — уровни прибыли и убытка;
  • iMagicNumber — число для идентификации сделок робота (чтобы не путать их с ручными);
  • iSlippage — допустимое отклонение цены при исполнении ордера.

3. Функция OnInit() — инициализация робота

Эта функция выполняется один раз при запуске эксперта. Её задача — настроить торговые параметры:

mql5

int OnInit() {

trade.SetExpertMagicNumber(iMagicNumber);  // Устанавливаем MagicNumber

trade.SetDeviationInPoints(iSlippage);   // Задаём проскальзывание

trade.SetTypeFillingBySymbol(_Symbol);     // Тип исполнения по символу

trade.SetMarginMode();                     // Режим маржи (хеджинг)

MathSrand(GetTickCount());                 // Инициализируем генератор случайных чисел

return(INIT_SUCCEEDED);                  // Сообщаем об успешном запуске

}

Ключевые действия:

  1. SetExpertMagicNumber() — присваивает сделкам уникальный идентификатор.
  2. SetDeviationInPoints() — задаёт максимально допустимое проскальзывание.
  3. SetTypeFillingBySymbol() — настраивает тип исполнения ордеров (например, «по рынку»).
  4. SetMarginMode() — активирует режим хеджирования (раздельные позиции по одному инструменту).
  5. MathSrand() — инициализирует генератор случайных чисел (позже используется для случайного выбора направления сделки).

4. Функция OnTick() — обработка новых котировок

Эта функция вызывается при каждом новом тике (изменении цены). Разберём её по частям.

4.1. Получение данных о рынке и позициях

mql5

int total = ::PositionsTotal();  // Количество открытых позиций

double Bid = ::SymbolInfoDouble(_Symbol, SYMBOL_BID);  // Цена BID

double Ask = ::SymbolInfoDouble(_Symbol, SYMBOL_ASK);  // Цена ASK

Если цены некорректны (≤ 0), функция прерывается:

mql5

if(Bid <= 0 || Ask <= 0)

return;

4.2. Анализ открытых позиций

Цикл перебирает все позиции и подсчитывает количество длинных (BUY) и коротких (SELL) сделок:

mql5

for(int i = 0; i < total; i++) {

if(posit.SelectByIndex(i)) {

if(posit.Symbol() == _Symbol && posit.Magic() == iMagicNumber) {

if(posit.PositionType() == POSITION_TYPE_BUY) b++;

if(posit.PositionType() == POSITION_TYPE_SELL) s++;

}

}

}

  • SelectByIndex() — выбирает позицию по индексу;
  • Symbol() и Magic() — проверяют, относится ли позиция к текущему инструменту и роботу;
  • PositionType() — определяет тип позиции (BUY/SELL).

4.3. Открытие новой сделки

Если позиций нет (b + s == 0), робот случайно выбирает направление сделки:

mql5

if((b + s) == 0) {

if(MathRand() % 2 == 0) {  // Случайный выбор: 0 — BUY, 1 — SELL

trade.Buy(iStartLots, _Symbol, Ask, Ask — iStopLoss * _Point, Ask + iTakeProfit * _Point, «»);

} else {

trade.Sell(iStartLots, _Symbol, Bid, Bid + iStopLoss * _Point, Bid — iTakeProfit * _Point, «»);

}

}

  • MathRand() % 2 — генерирует случайное число (0 или 1);
  • trade.Buy() — открывает длинную позицию с заданными TP и SL;
  • trade.Sell() — открывает короткую позицию.

Параметры торговых функций:

  • iStartLots — объём сделки;
  • _Symbol — торговый инструмент;
  • Ask/Bid — цена открытия;
  • Ask — iStopLoss * _Point — уровень стоп‑лосса для BUY;
  • Ask + iTakeProfit * _Point — уровень тейк‑профита для BUY;
  • _Point — размер пункта для инструмента.

После открытия сделки функция завершается (return), чтобы не отправлять дублирующие приказы.

5. Функция OnDeinit() — деинициализация

Эта функция вызывается при удалении робота с графика. В данном примере она пуста, но может использоваться для:

  • сохранения статистики;
  • закрытия открытых позиций;
  • вывода логов.

mql5

void OnDeinit(const int reason) {

// Здесь можно добавить код для завершения работы

}

6. Как работает робот в целом?

  1. При запуске (OnInit) настраиваются торговые параметры.
  2. При каждом тике (OnTick):
    • проверяется наличие открытых позиций;
    • если позиций нет, случайно открывается LONG или SHORT с заданными TP/SL;
    • если позиции есть, ничего не делается.
  3. При удалении робота (OnDeinit) выполняется очистка (в данном случае — пустая).

7. Важные замечания для начинающих

  1. Тестирование: перед использованием на реальном счёте протестируйте робота на демо‑счёте или в тестере стратегий MT5.
  2. Риски: случайный выбор направления сделки — высокорискованная стратегия. В реальных условиях используйте фильтры (индикаторы, анализ тренда).
  3. Настройка параметров: подбирайте iStartLots, iTakeProfit и iStopLoss под свой стиль торговли и размер счёта.
  4. MagicNumber: убедитесь, что iMagicNumber не совпадает с другими роботами на счёте.
  5. Проскальзывание: значение iSlippage должно соответствовать ликвидности инструмента.

8. Что можно улучшить

Этот робот — базовый пример. Для реальной торговли добавьте:

  • фильтры по индикаторам (например, RSI, MACD);
  • управление рисками (расчёт лота по балансу);
  • логирование сделок;
  • защиту от множественных открытий;
  • оптимизацию параметров.

Вы изучили структуру простого торгового робота на MQL5, разобрали ключевые функции и принципы работы. Теперь вы можете модифицировать этот код под свои стратегии или создавать собственные эксперты.

Более подробно о программировании форекс советников читайте в этой статье

Читайте также

Подпишитесь на нас в VK

Fortrader contentUrl Suite 11, Second Floor, Sound & Vision House, Francis Rachel Str. Victoria Victoria, Mahe, Seychelles +7 10 248 2640568

Ещё из этой категории

Все статьи

Простая разработка скрипта Stop Trade для MetaTrader 4 на языке Mql4

Торговля на финансовых рынках становится всё более популярной, и Алготрейдинг играет в этом процессе значительную роль. В этой статье мы рассмотрим простую разработку скрипта для MetaTrader 4, который закроет все открытые позиции и удалит все отложенные ордера. Скрипт будет написан на популярном языке программирования MQL4, который зарекомендовал себя как простой и надёжный инструмент для разработки […]

4 нюанса тестирования советников в терминале MetaTrader 4, о которых знают не все трейдеры

В условиях современного трейдинга использование в торговле форекс советников уже давно не выглядит какой-то экзотикой. Практически каждый день появляются новые платные и бесплатные торговые роботы, которые впечатляют доходностью и вызывают желание быстренько заработать. Однако ставить эксперта на торговый счет без проверки – сомнительная затея, ведущая к «неожиданным» потерям в потенциале. Поэтому рекомендуем начать работу с […]

Скрипты на Форекс: что это и как установить в MT4

«Переболев» бесплатными форекс-советниками и техническими индикаторами, обещающими прибыль в сотни и тысячи долларов до следующего понедельника, начинающий трейдер обычно возвращается на грешную землю и понимает, что технические инструменты – это всего лишь помощники, делающие торговлю на валютном рынке проще и комфортнее. Мы уже много говорили о них, не затронув только Форекс скрипты, широко используемые трейдерами […]

Классификация Форекс советников

Форекс Советник (робот, EA) – это обыкновенный алгоритм, запрограммированный на основе той торговой системы, которой вы планируете использовать, чтобы совершать сделки на валютном рынке. Можно сказать, что для того, чтобы использовать советник, необходимо знать торговую систему, ставшую для него основой, чтобы знать, на каком рынке его можно применять, когда это делать по времени и за […]

Недавние обучающие статьи

Все статьи

Редакция рекомендует

Все статьи
Loading...