crypto

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

ForTrader.org
Наглядное программирование в 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

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

Все статьи

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

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

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

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

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

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

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

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

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

Все статьи

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

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