Стратегия XCCI Histogram Vol Direct
Обзор
XCCI Histogram Vol Direct Strategy — портирование советника MQL5 Exp_XCCI_Histogram_Vol_Direct. Алгоритм умножает Commodity Channel Index (CCI) на объём, сглаживает обе серии выбранным типом скользящего среднего и анализирует знак наклона сглаженного осциллятора. Как только цвет гистограммы меняется, стратегия закрывает позиции против нового движения и открывает сделки в его сторону. Все расчёты выполняются только по завершённым свечам, поэтому поведение совпадает в тестере и в реальном времени.
Оригинальный эксперт использовал собственную библиотеку сглаживания, уровни на основе объёма и отложенное исполнение на следующей свече. Версия для StockSharp сохраняет параметры, подбирает ближайшие доступные индикаторы и реализует последовательность закрытия/открытия позиций через высокоуровневый API.
Режим рынка и идея
- Нацелен на участки рынка, где всплески объёма сопровождают ускорение импульса.
- Лучше всего работает на таймфреймах с явными колебаниями (по умолчанию 2-часовые свечи), но масштабируется от внутридневной до свинговой торговли.
- Сигналы реагируют на смену знака наклона у сглаженного произведения CCI и объёма, поэтому индикатор ведёт себя как детектор разворотного импульса.
Индикаторы и последовательность обработки
- Commodity Channel Index (CCI) — рассчитывается по выбранному типу свечей с периодом
CciPeriod. - Источник объёма —
TickилиReal(в StockSharp оба варианта используютcandle.TotalVolume, потому что количество тиков недоступно). - Взвешенный осциллятор — произведение CCI на выбранный объём.
- Сглаживание — к взвешенному осциллятору и к чистому объёму применяется однотипное сглаживание длиной
SmoothingLength:Sma→ SimpleMovingAverageEma→ ExponentialMovingAverageSmma→ SmoothedMovingAverageLwma→ WeightedMovingAverageJjma→ JurikMovingAverageJurx→ ZeroLagExponentialMovingAverageParabolic→ ArnaudLegouxMovingAverage (фаза из параметра преобразуется в смещение ALMA)T3→ TripleExponentialMovingAverageVidya→ ExponentialMovingAverage (наиболее близкая замена)Ama→ KaufmanAdaptiveMovingAverage
- Окраска по направлению — сравнивается текущее сглаженное значение с предыдущим. Рост получает цвет
0(бычий), снижение —1(медвежий), одинаковые значения наследуют предыдущий цвет, как в буфере исходного индикатора. - Память сигналов — сохраняется история цветов, чтобы анализировать свечу
SignalBarи предыдущую.
Торговые правила
Управление длинными позициями
- Вход: если цвет сигнальной свечи
1(медвежий), а предыдущей —0(бычий), открывается покупка приAllowLongEntries = true, если нет текущей длинной позиции. Объём ордера равенVolume + |Position|, что позволяет закрыть шорт перед новым лонгом. - Выход: если свеча до сигнальной окрашена в бычий цвет (
0) иAllowShortExits = true, все короткие позиции закрываются, чтобы не идти против нового импульса.
Управление короткими позициями
- Вход: если сигнальная свеча получила цвет
0после1, открывается шорт приAllowShortEntries = trueи отсутствии текущей короткой позиции. Логика объёма идентична. - Выход: когда свеча до сигнальной медвежья (
1) иAllowLongExits = true, длинная позиция закрывается.
Управление рисками
StopLossPointsиTakeProfitPointsпереводятся в цену черезPriceStepинструмента и применяются черезStartProtection.- Оба защитных уровня активируются для каждой сделки; установите параметр в
0, чтобы отключить отдельный уровень.
Параметры
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
CciPeriod |
Период CCI. | 14 |
Smoothing |
Тип сглаживания для произведения CCI и объёма. | T3 |
SmoothingLength |
Длина скользящего среднего. | 12 |
SmoothingPhase |
Фазовый параметр, используемый ALMA; сохранён для совместимости. | 15 |
HighLevel2, HighLevel1, LowLevel1, LowLevel2 |
Множители порогов исходного индикатора (пригодны для визуализации). | 100, 80, -80, -100 |
SignalBar |
Номер свечи назад, определяющий сигнал (0 = последняя закрытая). | 1 |
AllowLongEntries / AllowShortEntries |
Разрешение на открытие позиций. | true |
AllowLongExits / AllowShortExits |
Разрешение на закрытие позиций противоположным сигналом. | true |
StopLossPoints |
Размер стоп-лосса в пунктах цены. | 1000 |
TakeProfitPoints |
Размер тейк-профита в пунктах цены. | 2000 |
VolumeSource |
Источник объёма (Tick или Real, оба используют свечной объём). |
Tick |
CandleType |
Таймфрейм анализа. | 2 часа |
Последовательность обработки свечи
- Дождаться закрытия очередной свечи выбранного таймфрейма.
- Рассчитать CCI и умножить его на выбранный объём.
- Пропустить взвешенный CCI и чистый объём через одинаковые фильтры сглаживания.
- После формирования обоих фильтров определить новый цвет и обновить историю.
- Проанализировать цвета свечей
SignalBarиSignalBar + 1, принять решение о закрытии текущей позиции и/или открытии новой. - Применить защитные ордера согласно параметрам риска.
Практические рекомендации
- Перед запуском задайте положительное значение
Volume— оно определяет размер сделки. - Из-за отсутствия счётчика тиков в стандартных свечах StockSharp оба режима объёма используют
TotalVolume. При необходимости точного тик-объёма используйте кастомные свечи. - Параметр
SmoothingPhaseвлияет только на ALMA. Для остальных фильтров он игнорируется, как и в оригинальном индикаторе. - Множители
HighLevel*/LowLevel*сохранены для совместимости. Их можно визуализировать, если построить сглаженный объём и умножить на эти коэффициенты.
Ограничения и отличия от MQL5
- В библиотеке StockSharp отсутствуют точные аналоги VIDYA и Parabolic MA, поэтому используются EMA и ALMA. Характеристики близки, но не полностью совпадают с оригиналом.
- Исполнение происходит на закрытии сигнальной свечи. В MQL5 использовалось смещение на начало следующей свечи (
TimeShiftSec); при рынке с низкой задержкой результат эквивалентен. - Тиковый объём аппроксимируется общим объёмом свечи, поскольку количество тиков не передаётся в сообщениях свечей.
Начало работы
- Подключите стратегию к нужному инструменту, задайте
Volume— количество лотов/контрактов на сделку. - Выберите таймфрейм через
CandleType(по умолчанию 2 часа). - Настройте параметры сглаживания и риск-менеджмента под волатильность инструмента.
- Запустите в режиме теста/бумажной торговли, оцените график сглаженного осциллятора и при необходимости скорректируйте
SignalBar.
Идеи для оптимизации
- Совместно оптимизируйте
CciPeriodиSmoothingLength, чтобы добиться нужной чувствительности. - Протестируйте значения
SignalBar0 и 1 для более раннего или более позднего реагирования. - Подберите значения
StopLossPointsиTakeProfitPointsпод средний диапазон (ATR) конкретного инструмента. - Используйте дополнительные фильтры тренда старшего таймфрейма, если требуется подтверждение направления.
Чек-лист безопасности
- Убедитесь, что
PriceStepиVolumeсоответствуют спецификации инструмента перед выходом на реальный рынок. - Контролируйте проскальзывание и при необходимости добавляйте внешние ограничения по риску.
- Периодически проверяйте логи сделок, чтобы параметры разрешения направлений (
Allow*) соответствовали текущей торговой гипотезе.