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

ForTrader.org
RU
Пишем вместе программный код форекс советника по торговой стратегии «Орел и Решка».

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

Суть стратегии

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

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

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

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

Плюсы:

  1. Простота: нет необходимости проводить сложный технический или фундаментальный анализ рынка.
  2. Минимизация психологического давления: не нужно постоянно анализировать рынок снижает уровень стресса.
  3. Автоматизация: стратегия легко автоматизируется и может использоваться в рамках автоматизированных торговых систем.

Минусы:

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

Практическое применение

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

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

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

Автоматизация торговой стратегии

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

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

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

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

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

Для работы с торговыми операциями подключаются стандартные библиотеки 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 — допустимое отклонение цены при исполнении ордера.
  1. Функция 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() — инициализирует генератор случайных чисел (позже используется для случайного выбора направления сделки).
  1. Функция 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), чтобы не отправлять дублирующие приказы.

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

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

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

mql5

void OnDeinit(const int reason) {

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

}

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

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

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

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

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

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

  • фильтры по индикаторам (например, 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...