Стратегия Range Breakout Weekly (ID 3412)
Range Breakout Weekly — это реализация эксперта MetaTrader 5 RangeBreakout.mq5, переписанная на высокоуровневый API StockSharp. Алгоритм еженедельно подготавливает торговый диапазон для заданного дня недели и часа, а затем открывает единственную позицию при пробое верхней или нижней границы. Маркетинговое масштабирование объёма и механизм компенсации убытков сохранены, при этом используются подписки StockSharp на свечи, котировки Level1 и индикаторы.
Логика работы
- Подготовка раз в неделю. После закрытия часовой свечи в выбранный день недели стратегия фиксирует её цену закрытия как базовую и переводит состояние из режима «Ожидание» в «Подготовка».
- Расчёт диапазона.
- Основой служит дневной ATR с периодом 20. Полученное значение умножается на
ATR Percentageи нормализуется по минимальному шагу цены. - Если актуальное значение ATR ещё не получено, используется запасной вариант: текущая цена Ask умножается на
Price Percentage.
- Основой служит дневной ATR с периодом 20. Полученное значение умножается на
- Защитные уровни.
- Верхний и нижний триггеры располагаются на величину диапазона выше и ниже базовой цены.
- Расстояния до тейк-профита и стоп-лосса задаются процентами от диапазона. После убыточной сделки компенсационный буфер заменяет тейк-профит на накопленное значение и расширяет стоп на ту же величину, полностью повторяя исходный алгоритм.
- Исполнение заявок.
- В режиме «Подготовка» анализируются котировки Level1. Пробой верхней границы открывает длинную позицию, пробой нижней — короткую. Используются рыночные заявки с нормализацией цены.
- В режиме «Торговля» котировки продолжают отслеживаться, срабатывание цели или стопа приводит к немедленному закрытию позиции рыночной заявкой.
- Мартингейл и компенсация.
- После убыточного выхода объём следующей сделки удваивается, а потерянное расстояние добавляется в компенсационный буфер.
- При прибыльном выходе множитель и буфер сбрасываются.
- Возврат к ожиданию. По завершении сделки стратегия возвращается в состояние «Ожидание» и ждёт следующего подходящего дня и часа.
Параметры
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
Trading Day |
Monday | День недели, в который формируется опорная свеча. При выборе субботы или воскресенья день автоматически заменяется на понедельник с информирующим логом. |
Start Hour |
0 | Час (0–23), закрытие которого используется как база для расчёта. Параметр доступен для оптимизации. |
Price Percentage |
1.0 | Процент от текущего Ask, применяемый, когда ATR ещё не сформирован. |
ATR Percentage |
100 | Множитель дневного ATR для вычисления ширины диапазона. |
Take Profit Percentage |
100 | Процент диапазона, добавляемый к цене входа для формирования тейк-профита. При активной компенсации заменяется накопленным значением. |
Stop Loss Percentage |
100 | Процент диапазона, вычитаемый от цены входа для стоп-лосса. Компенсация расширяет стоп на ту же величину. |
Base Volume |
0.1 | Базовый объём сделки до применения мартингейла. Значение приводится к шагу объёма и ограничивается минимумом/максимумом инструмента. |
ATR Period |
20 | Количество дневных свечей, передаваемых индикатору ATR. |
Hour Candle Type |
Свечи 1 час | Подписка на свечи, определяющая момент подготовки диапазона. |
ATR Candle Type |
Свечи 1 день | Подписка на свечи, снабжающая индикатор ATR данными. |
Особенности реализации
- Подписки на данные. Используются три подписки: часовые свечи для расписания, дневные свечи для ATR и Level1 для контроля цен Bid/Ask. API
Bindпозволяет получать значения индикатора без ручной работы с буферами. - Нормализация цен. Все уровни проходят через
Security.ShrinkPrice, что соответствует функцииNormalizeDoubleиз MetaTrader и гарантирует корректные шаги цены. - Проверка объёма. Перед отправкой заявок объём корректируется по
VolumeStepи ограничивается интервалом[VolumeMin, VolumeMax], полностью повторяя MQL-функциюSetVolume. - Машина состояний. Состояния «Ожидание» → «Подготовка» → «Торговля» обеспечивают ровно одну сделку на подготовительный период. После закрытия позиции состояние сбрасывается.
- Компенсационный буфер. Поле
compensationOffsetхранит сумму убытков в ценовом выражении; при включении оно заменяет тейк-профит и расширяет стоп, как это делает исходный эксперт. - Информационные сообщения. При выборе выходных дней в лог выводится предупреждение, а рабочий день меняется на понедельник.
Рекомендации по применению
- Подбирайте
Trading DayиStart Hourпод конкретные сессии: например, азиатский флэт или открытие Лондона. - Настраивайте
ATR Percentage,Take Profit PercentageиStop Loss Percentageсовместно. Рост диапазона уменьшает частоту сделок, а изменение процентных значений влияет на соотношение риск/прибыль. - Используйте оптимизацию для поиска подходящих значений часа старта, базового объёма и процентных коэффициентов, как это делалось в исходном советнике.
- Контролируйте рост экспозиции при мартингейле — при высокой нагрузке на депозит уменьшайте
Base Volume. - Запускайте несколько экземпляров стратегии с разными инструментами или параметрами, чтобы распределить риски.
Детали конверсии
- ✅ Сохранены расписание, расчёт диапазона, защитные уровни и мартингейл-логика оригинального советника.
- ✅ Все обращения к API MetaTrader (
iATR,CopyBuffer,OrderSendи др.) заменены на идиоматичные вызовы StockSharp (SubscribeCandles,AverageTrueRange,BuyMarket/SellMarket). - ✅ Комментарии в коде написаны на английском языке, а документация подробно описывает работу стратегии.
- ✅ Python-версия и тестовые проекты не затрагивались, как требовалось в задании.