Стратегия Robot ADX + 2 MA
Обзор
Robot ADX + 2 MA — порт MetaTrader-советника Robot_ADX+2MA на платформу StockSharp. Система сочетает быструю и медленную
экспоненциальные средние с направленными компонентами индикатора Average Directional Index (ADX). Сделки открываются только при
достаточном расхождении EMA на предыдущей свече и подтверждении импульса текущими значениями +DI/-DI. Перенос сохраняет правило
«не более одной позиции одновременно» и передаёт выход из рынка блоку защитных ордеров.
Торговая логика
- Подписаться на основной поток свечей, задаваемый параметром
CandleType, и обрабатывать только полностью сформированные свечи. - Рассчитать две экспоненциальные средние (периоды 5 и 12) по ценам закрытия. Хранить их значения от предыдущей свечи, чтобы
повторить использование
shift = 1в MetaTrader. - Рассчитать индикатор
AverageDirectionalIndexс периодом 6 по тем же свечам и сохранить текущие и прошлые значения +DI/-DI. - Найти абсолютную разницу между быстрым и медленным EMA на предыдущей свече и сравнить её с порогом
DifferenceThreshold, пересчитанным из пунктов в цену (в MetaTraderPointсоответствуетSecurity.PriceStep). - Лонг возможен только при отсутствии открытой позиции и выполнении условий:
- Предыдущая быстрая EMA ниже предыдущей медленной EMA.
- Предыдущее значение +DI меньше 5, текущее +DI выше 10, а +DI сильнее -DI.
- Разница EMA превышает порог.
- Шорт строится зеркально: предыдущая быстрая EMA выше медленной, фильтры по -DI выполнены, а -DI доминирует над +DI.
- После входа защитный модуль
StartProtectionотвечает за выход по стопу или тейку; дополнительных правил закрытия нет, как и в оригинальном советнике.
Параметры
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
CandleType |
DataType |
1 минута | Основной таймфрейм стратегии. |
TakeProfitPoints |
int |
4700 |
Дистанция тейк-профита в шагах цены. Ноль отключает защиту. |
StopLossPoints |
int |
2400 |
Дистанция стоп-лосса в шагах цены. Ноль отключает защиту. |
TradeVolume |
decimal |
0.1 |
Объём каждой рыночной заявки. |
DifferenceThreshold |
int |
10 |
Минимальный разрыв между EMA (в шагах цены), допускающий вход. |
Управление рисками
- Метод
StartProtectionполучает значения вUnitTypes.Step, благодаря чему точки стопа и тейка автоматически переводятся в абсолютные цены инструмента. - Защитные заявки исполняются рыночным способом (
useMarketOrders = true), что имитирует мгновенное закрытие позиции, реализованное в MQL-функцииOpenPosition.
Особенности реализации
- Используется высокоуровневый API
SubscribeCandles(...).Bind(...).BindEx(...), поэтому нет ручной работы с коллекциями данных. - Значения EMA предыдущей свечи кешируются для точного соответствия вызовам
iMAс параметромshift = 1. - Объект
AverageDirectionalIndexValueпредоставляет прямой доступ к +DI и -DI без запрещённых методовGetValue. - Контроль
_lastProcessedTimeгарантирует единичную обработку каждой свечи, несмотря на два колбэка (EMA и ADX).
Отличия от MetaTrader-версии
- Лишний вызов
OrderSendв шорт-ветке MQL удалён — обе стороны используют стандартныеBuyMarket/SellMarket. - Проверка свободной маржи не дублируется, ответственность возлагается на инфраструктуру StockSharp.
- Управление стопами/тейками реализовано средствами risk-manager'а, вместо циклов с повторами отправки заявок.
Рекомендации по использованию
- Перед запуском подстройте
TradeVolumeпод минимальный шаг лота выбранного инструмента. - При смене инструмента скорректируйте
DifferenceThreshold,TakeProfitPointsиStopLossPoints, чтобы масштаб соответствовал котировкам. - Параметр
CandleTypeпозволяет тестировать стратегию на других таймфреймах без изменения кода.
Индикаторы
ExponentialMovingAverage(5)по ценам закрытия.ExponentialMovingAverage(12)по ценам закрытия.AverageDirectionalIndex(6)с компонентами +DI/-DI и величиной ADX.