Стратегия SilverTrend Duplex
Общее описание
SilverTrend Duplex — порт советника MetaTrader 5 Exp_SilverTrend_Duplex на платформу StockSharp. Оригинальный робот использует два независимых фильтра SilverTrend для длинных и коротких решений и открывает сделки при смене цвета индикатора. Реализация на C# сохраняет эту двухканальную архитектуру, позволяя настраивать параметры длинных и коротких сигналов по отдельности и использовать высокоуровневый API StockSharp.
Стратегия работает только по завершённым свечам. Для каждой стороны можно выбрать собственный тип данных: одинаковые таймфреймы поддерживаются, но также можно указать разные интервалы или источники данных. Внутри применяется пользовательский индикатор SilverTrendIndicator, который на основе Donchian-канала и коэффициента риска воссоздаёт логику окраски, идентичную MQL-версии.
Логика работы
Пересчёт индикатора
- Рассчитываются верхняя и нижняя границы Donchian-канала на
SSPбарах. - Пороговые уровни
sminиsmaxвычисляются через коэффициент33 - risk, как в исходном коде. - При закрытии выше
smaxфиксируется бычье состояние, нижеsmin— медвежье, иначе сохраняется предыдущее состояние. Направление тела свечи задаёт финальный цвет (0..4).
- Рассчитываются верхняя и нижняя границы Donchian-канала на
Подготовка сигналов
- Для длинного и короткого фильтра хранится по
SignalBar + 1последних цветов. - Длинный сигнал формируется при
цвет[текущий] < 2ицвет[предыдущий] > 1, что повторяет условиеValue[1] < 2 && Value[0] > 1из советника. - Короткий сигнал возникает, когда
цвет[текущий] > 2ицвет[предыдущий] > 0, как в исходномValue[1] > 2 && Value[0] > 0.
- Для длинного и короткого фильтра хранится по
Исполнение сделок
- Вход выполняется рыночными ордерами
BuyMarket/SellMarketобъёмомVolume + |Position|, что позволяет закрыть противоположную позицию и открыть новую сторону одним действием. - Выход из длинных позиций происходит при переходе цвета выше
2, из коротких — при снижении ниже2.
- Вход выполняется рыночными ордерами
Важно: функции управления капиталом, стоп-лоссами, отклонением цены и магическими номерами из
TradeAlgorithms.mqhне перенесены. Используйте стандартные правила риск-менеджмента StockSharp (например,StopLossRule,TakeProfitRule).
Параметры
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
LongCandleType |
Свечи 4 часа | Тип данных для длинного фильтра. |
LongSsp |
9 | Длина окна SilverTrend для длинной стороны. |
LongRisk |
3 | Коэффициент риска (33 - risk) для длинного фильтра. |
LongSignalBar |
1 | Количество завершённых свечей для оценки длинного сигнала (≥ 1). |
EnableLongEntries |
true | Разрешение на открытие длинных позиций. |
EnableLongExits |
true | Разрешение на закрытие длинных позиций при медвежьем сигнале. |
ShortCandleType |
Свечи 4 часа | Тип данных для короткого фильтра. |
ShortSsp |
9 | Длина окна SilverTrend для короткой стороны. |
ShortRisk |
3 | Коэффициент риска для короткого фильтра. |
ShortSignalBar |
1 | Количество завершённых свечей для оценки короткого сигнала (≥ 1). |
EnableShortEntries |
true | Разрешение на открытие коротких позиций. |
EnableShortExits |
true | Разрешение на закрытие коротких позиций при бычьем сигнале. |
Volume |
1 | Базовый объём ордеров. |
Особенности реализации
- Сигналы анализируются только после формирования индикатора и накопления достаточного числа значений цвета (
SignalBar + 1), что аналогично проверкамBarsCalculatedв MQL. - Индикатор возвращает непосредственно код цвета, поэтому нет обращения к буферам через
GetValue; используется связкаBindвысокого уровня. - Для одинаковых таймфреймов создаются две подписки, что соответствует двум хэндлам
iCustomв оригинальном роботе и упрощает независимую настройку. - Защита позиций, стоп-приказы и проскальзывание нужно реализовывать дополнительными правилами StockSharp либо брокерскими настройками.
Рекомендации по использованию
- Оптимизируйте параметры длинного и короткого фильтра раздельно, чтобы адаптировать чувствительность к выбранному инструменту.
- Значение
SignalBar = 1имитирует «сигнал по закрытию предыдущей свечи», увеличение задерживает реакцию стратегии. - Для снижения числа ложных входов в боковике комбинируйте стратегию с временными фильтрами, ограничениями по просадке и другими элементами риск-менеджмента.