Стратегия Slope RSI MTF
Обзор
Slope RSI MTF — это порт советника MetaTrader 4 SLOPE_RSI_MTF_LBranjord.mq4 вместе с пользовательским индикатором Slope_Direction_Line_Alert.mq4. Исходная система строила «линию направления наклона» (по сути Hull Moving Average) на нескольких таймфреймах и открывала сделки только тогда, когда все средние указывали в одну сторону и фильтр из четырёх RSI подтверждал импульс. Версия на StockSharp воспроизводит эту многофреймовую схему с помощью высокоуровневых подписок, сохраняет ATR-ориентированные выходы и расширяет набор параметров для удобной настройки.
Логика торговли
- Подписаться на четыре серии свечей по одному инструменту: торговый таймфрейм (
BaseTimeframe), часовой (HourTimeframe), четырёхчасовой (FourHourTimeframe) и дневной (DayTimeframe). - Для каждой серии запустить отдельные индикаторы
HullMovingAverageиRelativeStrengthIndex. Рабочий таймфрейм использует длинуSlopeTriggerLength(по умолчанию 60), подтверждающие таймфреймы —SlopeTrendLength(по умолчанию 200). - Хранить две последние величины Hull на каждом таймфрейме: если текущая выше предыдущей — фаза роста, если ниже — фаза снижения.
- Одновременно контролировать значения RSI:
- Для покупки RSI на всех таймфреймах должен быть выше
RsiMiddleLevel(50) и нижеRsiUpperBound(90). - Для продажи RSI должен быть ниже
RsiMiddleLevel, но вышеRsiLowerBound(10).
- Для покупки RSI на всех таймфреймах должен быть выше
- После закрытия свечи торгового таймфрейма стратегия проверяет согласованность направлений. Если все Hull растут — открывается длинная позиция, если все падают — короткая. До формирования первого полного значения каждого индикатора сигналы игнорируются.
- Перед размещением заявки рассчитываются защитные расстояния: часовая серия ATR задаёт стоп-лосс, дневная серия ATR — тейк-профит.
- Сделки открываются рыночными ордерами с учётом лимита
MaxOrders. В неттинговом режиме StockSharp перед открытием новой сделки закрывает противоположную позицию. - После каждого входа пересчитываются цены стопа и тейка. На последующих свечах базового таймфрейма стратегия сравнивает high/low с целями и, при пробое, закрывает позицию рыночным ордером.
Управление рисками и размер позиции
- Параметр
UseCompoundingвключает формулу исходного советника:volume = PortfolioValue / BalanceDivider. При выключении используется фиксированный объёмBaseVolume. - Метод
AdjustVolumeокругляет объём к шагуVolumeStep, соблюдает ограниченияMinVolume/MaxVolumeи записывает итог вStrategy.Volumeдля согласованности с ручными действиями. AtrPeriod(по умолчанию 21) применяется для обеих защитных дистанций: часовой ATR — для стоп-лосса, дневной ATR — для тейк-профита.- Счётчики
_longEntriesи_shortEntriesгарантируют, что число добавочных входов в каждом направлении не превыситMaxOrders.
Работа с несколькими таймфреймами
- Все подписки создаются через
SubscribeCandles()и обрабатываются методомBind, поэтому индикаторы получают данные потоково без ручного хранения истории. - Вспомогательный класс
TimeframeStateсохраняет текущие и предыдущие значения Hull и RSI, что позволяет сравнивать наклон без обращения к буферам индикаторов. - Значения ATR учитываются только после
IsFormed == true, обеспечивая расчёт стопов и тейков по полностью сформированным свечам.
Параметры
| Имя | Тип | Значение по умолчанию | Аналог в MetaTrader | Описание |
|---|---|---|---|---|
SlopeTriggerLength |
int |
60 |
SDL1_trigger |
Длина Hull на торговом таймфрейме. |
SlopeTrendLength |
int |
200 |
SDL1_period |
Длина Hull на подтверждающих таймфреймах. |
RsiPeriod |
int |
14 |
период RSI | Окно RSI для всех таймфреймов. |
RsiLowerBound |
decimal |
10 |
нижняя граница RSI | Фильтр для коротких сигналов. |
RsiMiddleLevel |
decimal |
50 |
центральный уровень RSI | Разделяет бычьи и медвежьи режимы. |
RsiUpperBound |
decimal |
90 |
верхняя граница RSI | Фильтр для длинных сигналов. |
AtrPeriod |
int |
21 |
ATR_Period |
Длина ATR для расчёта стопа и тейка. |
MaxOrders |
int |
5 |
MaxOrders |
Максимум добавочных входов в одном направлении. |
UseCompounding |
bool |
true |
compounding |
Включает расчёт объёма от капитала. |
BaseVolume |
decimal |
0.1 |
Lots |
Фиксированный объём при отключённом компаундинге. |
BalanceDivider |
decimal |
100000 |
AccountBalance/100000 |
Делитель в формуле объёма. |
BaseTimeframe |
DataType |
5m |
рабочий таймфрейм | Серия, по которой принимаются решения. |
HourTimeframe |
DataType |
1h |
PERIOD_H1 |
Первая подтверждающая серия. |
FourHourTimeframe |
DataType |
4h |
PERIOD_H4 |
Вторая подтверждающая серия. |
DayTimeframe |
DataType |
1d |
PERIOD_D1 |
Старший подтверждающий таймфрейм. |
Отличия от оригинального советника
- StockSharp работает в неттинговом режиме, поэтому стратегия закрывает встречную позицию перед открытием новой, тогда как MetaTrader 4 позволял держать хеджирующие ордера.
- Стопы и тейки реализованы через проверку закрытых свечей, а не через модификацию ордеров на стороне брокера, но расстояния по-прежнему соответствуют ATR из оригинала.
- Используются встроенные индикаторы
HullMovingAverage,RelativeStrengthIndexиAverageTrueRange, что соответствует рекомендациям по высокоуровневому API и исключает прямой доступ к буферам. - Все параметры сопровождаются метаданными
SetDisplay, что облегчает локализацию и оптимизацию.
Рекомендации по использованию
- Держите подтверждающие таймфреймы не меньше рабочего, иначе теряется идея иерархии трендов.
- Проверьте заполненность атрибутов инструмента (
PriceStep,VolumeStep,MinVolume,MaxVolume), чтобы округление объёмов и цен работало корректно. - Так как выходы проверяются на закрытии свечи базового таймфрейма, для более быстрых реакций можно сократить таймфрейм или дополнить стратегию внутридневным контролем.
- Условие наклона Hull требует, чтобы текущая и предыдущая величины отличались. При «плоском» индикаторе новые сделки не открываются, что соответствует условию
SDL > SDL[1]в оригинальном коде.