Стратегия CorrTime
CorrTime — это односессионная стратегия, перенесённая из одноимённого советника MetaTrader. Она отслеживает корреляцию между ценой закрытия и порядком появления баров, чтобы выявлять ускорение тренда или потенциальный разворот. Работа ведётся только по завершённым свечам и включает три уровня фильтрации:
- Фильтр волатильности. Ширина полос Боллинджера должна находиться внутри заданного диапазона. Так исключаются как боковые периоды, так и чрезмерно бурные участки.
- Фильтр силы тренда. Значение индикатора ADX должно быть выше порога, прежде чем будет проверен сигнал корреляции.
- Корреляционные триггеры. Коэффициенты Пирсона, Спирмена, Кендалла или Фехнера измеряют, насколько тесно цена связана со временем. Резкое изменение коэффициента приводит к торговому действию.
Оригинальный робот работал на EURUSD с таймфреймом H1. Перенос для StockSharp оставляет все параметры настраиваемыми, но значения по умолчанию соответствуют источнику (часовые свечи, корреляция Фехнера, режим обратной торговли).
Логика работы
- Подписаться на выбранный
CandleTypeи дождаться закрытия бара. - Обновить значения полос Боллинджера и ADX для новой свечи.
- Пропустить бар, если выполняется хотя бы одно условие:
- Ширина полос, выраженная в пунктах, вне диапазона
[BollingerSpreadMin, BollingerSpreadMax]. - Значение ADX ниже
AdxLevel. - Время открытия свечи находится вне торгового окна
[EntryHour, EntryHour + OpenHours](поддерживается переход через полночь).
- Ширина полос, выраженная в пунктах, вне диапазона
- Накапливать историю закрытий и пересчитывать корреляцию для окон
CorrelationRangeTrendиCorrelationRangeReverse. Хранятся три последних значения, что позволяет отследить факт пересечения порога — точно как в оригинальной библиотеке с буферами. - Режим следования тренду (
TradeMode = TrendFollowилиBoth):- Покупка. Корреляция была ниже
CorrLimitTrendBuy, остаётся ниже на предыдущем баре и пробивает верхний порог на текущем. - Продажа. Корреляция была выше
-CorrLimitTrendSell, остаётся выше на предыдущем баре и падает ниже-CorrLimitTrendSellна текущем.
- Покупка. Корреляция была ниже
- Режим разворота (
TradeMode = ReverseилиBoth):- Покупка. Корреляция была ниже
-CorrLimitReverseBuy, остаётся ниже на предыдущем баре и поднимается выше-CorrLimitReverseBuyна текущем. - Продажа. Корреляция была выше
CorrLimitReverseSell, остаётся выше на предыдущем баре и опускается нижеCorrLimitReverseSellна текущем.
- Покупка. Корреляция была ниже
- Если одновременно получены сигналы в обе стороны, они взаимно отменяются, как и в MetaTrader.
- При включённом флаге
CloseTradeOnOppositeSignalстратегия закрывает противоположную позицию до открытия новой. - Размер входа задаётся параметром
Volume. ОграничениеMaxOpenOrdersне позволяет накопить позицию большеVolume * MaxOpenOrdersв любую сторону. - Риск контролируется методом
StartProtection: стоп-лосс и тейк-профит переводятся из пунктов в цену, а при наличии трейлинга используется тот же шаг.
Параметры
| Параметр | Описание |
|---|---|
CandleType |
Таймфрейм, по которому строятся свечи и рассчитываются индикаторы. |
CloseTradeOnOppositeSignal |
Закрывать ли текущую позицию при появлении противоположного сигнала. |
EntryHour, OpenHours |
Торговое окно в часах. Значение OpenHours = 0 оставляет окно открытым на один час. |
BollingerPeriod, BollingerDeviation |
Настройки полос Боллинджера по ценам закрытия. |
BollingerSpreadMin, BollingerSpreadMax |
Допустимый диапазон ширины канала в пунктах. |
AdxPeriod, AdxLevel |
Период ADX и минимальное значение силы тренда. |
TradeMode |
Выбор режима торговли: по тренду, на разворот или комбинация. |
CorrelationRangeTrend, CorrelationRangeReverse |
Длины окон для вычисления корреляции. |
CorrelationType |
Выбор коэффициента: Пирсон, Спирмен, Кендалл или Фехнер. |
CorrLimitTrendBuy, CorrLimitTrendSell |
Пороговые значения для сигналов по тренду. |
CorrLimitReverseBuy, CorrLimitReverseSell |
Пороговые значения для сигналов на разворот. |
TakeProfitPips, StopLossPips, TrailingStopPips |
Риск-параметры в пунктах, автоматически переводятся в цену инструмента. |
MaxOpenOrders |
Максимальное количество агрегированных входов (ограничение по объёму Volume * MaxOpenOrders). |
Практические замечания
- Размер пункта вычисляется по количеству знаков инструмента. Для пяти и трёх знаков используется множитель ×10, что полностью повторяет обработку
PointиMULTв оригинале. - Для проверки пересечения порога необходим минимум
окно + 2закрытых свечи. В фазе прогрева стратегия бездействует. - Вся логика основана на завершённых барах, поэтому результаты совпадают с подходом
iTime/iCloseв MetaTrader и не подвержены внутрибарах шуму. - Если стратегия запускается в составе портфеля, дополнительно ограничьте общий риск, поскольку исходный советник также учитывал количество ордеров на других символах.