Стратегия GoldWarrior02b
Подробная адаптация советника MetaTrader 4 GoldWarrior02b (каталог MQL/7694) под StockSharp.
Стратегия объединяет Commodity Channel Index (CCI), пользовательский импульсный фильтр и собственную
реализацию ZigZag. Сигналы проверяются только в последние секунды каждого пятнадцатиминутного блока.
Основная цель перевода — воспроизвести логику оригинального советника с учётом того, что в StockSharp
используются неттинговые позиции.
Основные особенности
- Импульсный фильтр — вместо индикатора
DayImpulsиспользуется среднее значение разницы между открытием и закрытием свечи, нормированное на шаг цены инструмента. - Структура ZigZag — пересчитывает последние экстремумы, чтобы определить преобладающее направление тренда.
- Временной фильтр — входы разрешены только когда свеча закрывается в последние 15 секунд минут 14, 29, 44 или 59.
- Контроль рисков — стоп-лосс, тейк-профит, при необходимости трейлинг-стоп и общий целевой профит в валюте счёта. Значения по умолчанию повторяют параметры MQL (стоп 1000 пунктов, тейк 150 пунктов, трейлинг выключен).
- Неттовая позиция — в отличие от сеточного хеджирования в MT4, в StockSharp поддерживается только одна суммарная позиция, поэтому наращивание и ступенчатый хедж не реализованы.
Логика торговли
Подготовка сигналов
- Подписка на свечи типа
CandleType(по умолчанию таймфрейм 5 минут). - Расчёт CCI и импульсного среднего по периоду
ImpulsePeriod(по умолчанию 21 бар). - Обновление направления ZigZag после превышения порога
ZigZagDeviationи соблюдения параметров глубины/отката. - Сохранение предыдущих значений индикаторов для имитации буферов
cci0,cci1,imp,nimpиз советника.
Правила входа
Сетап оценивается только при отсутствии позиции, если прошло минимум 15 секунд с момента последнего выхода
и функция AllowEntryTime возвращает true (конец 15-минутного блока).
Покупка:
- Последний поворот ZigZag направлен вниз (новый минимум ниже предыдущего).
- Выполнено одно из условий:
- Текущий CCI растёт относительно предыдущего, прошлый CCI ниже -50, текущий CCI выше -30, импульс становится положительным, а предыдущий был отрицательным.
- Текущий CCI ниже -200, предыдущий CCI ещё ниже, импульс остаётся ниже
ImpulseBuyThresholdи сильнее предыдущего значения.
Продажа:
- Последний поворот ZigZag направлен вверх (новый максимум выше предыдущего).
- Выполнено одно из условий:
- Текущий CCI падает относительно предыдущего, прошлый CCI выше 50, текущий CCI выше 30, импульс становится отрицательным, а предыдущий был положительным.
- Текущий CCI выше 200, предыдущий CCI ещё выше, импульс остаётся выше
ImpulseSellThresholdи слабее предыдущего значения.
Если предыдущее значение импульса находится между ImpulseSellThreshold и ImpulseBuyThreshold, сигнал игнорируется.
Управление позицией
- Стоп-лосс — закрывает позицию при движении против нас на
StopLossPoints(по умолчанию 1000 пунктов). - Тейк-профит — закрывает после достижения
TakeProfitPoints(150 пунктов). - Трейлинг-стоп — опционально: активируется после движения на
TrailingStopPoints + TrailingStepPointsв нужную сторону и затем сопровождает цену на расстоянииTrailingStopPoints. - Целевой профит — пересчитывает плавающий результат в валюту счёта по
PriceStepиStepPriceи закрывает позицию после превышенияProfitTarget(по умолчанию 300).
Параметры
| Имя | Описание | Значение по умолчанию |
|---|---|---|
BaseVolume |
Размер позиции при входе. | 0.1 |
StopLossPoints |
Дистанция стоп-лосса в пунктах. | 1000 |
TakeProfitPoints |
Дистанция тейк-профита в пунктах. | 150 |
TrailingStopPoints |
Дистанция трейлинг-стопа (0 — выключен). | 0 |
TrailingStepPoints |
Дополнительная дистанция для активации трейлинга. | 0 |
ImpulsePeriod |
Период CCI и импульсного индикатора. | 21 |
ZigZagDepth |
Минимальное число баров между поворотами ZigZag. | 12 |
ZigZagDeviation |
Минимальное движение (в пунктах) для фиксации поворота. | 5 |
ZigZagBackstep |
Минимальное число баров перед сменой направления. | 3 |
ProfitTarget |
Порог плавающей прибыли в валюте счёта. | 300 |
ImpulseSellThreshold |
Минимальное значение импульса для продаж. | -30 |
ImpulseBuyThreshold |
Максимальное значение импульса для покупок. | 30 |
CandleType |
Рабочий таймфрейм. | 5 минут |
Отличия от оригинала
- В MT4 используется
GlobalVariableSetи сложная система хеджирования. В StockSharp сохранён только временной фильтр, а сетка ордеров отсутствует из-за неттинга. - Исполнение команд выполняется рыночными ордерами (
BuyMarket,SellMarket) в соответствии с требованиями высокоуровневого API. - Индикатор
DayImpulsприближен усреднением открытий и закрытий. Роль двух буферовimpиnimpвыполняют текущее и предыдущее значения индикатора.
Рекомендации по использованию
- Настройте
CandleTypeпод таймфрейм оптимизации (в оригинале используется M5). - Убедитесь, что инструмент предоставляет
PriceStepиStepPriceдля корректного перевода пунктов в валюту. - Тестируйте со слиппеджем и задержками, чтобы убедиться в корректной работе временного фильтра.
Отказ от ответственности
Стратегия предоставляется в ознакомительных целях. Перед работой на реальном счёте проведите всестороннее тестирование.