Стратегия кроссовера адаптивного возврата к среднему моменту

ROC BB SMA
Дата создания: 2025-01-10 15:26:18 Последнее изменение: 2025-01-10 15:26:18
Копировать: 1 Количество просмотров: 437
1
Подписаться
1617
Подписчики

Стратегия кроссовера адаптивного возврата к среднему моменту

Обзор

Стратегия представляет собой гибридную торговую систему, сочетающую в себе теорию импульса и возврата к среднему значению. Он использует индикатор скорости изменения (ROC) и полосы Боллинджера для определения состояний перекупленности и перепроданности на рынке, вызывая торговые сигналы при пересечении определенных пороговых значений. Суть стратегии заключается в получении прибыли путем обнаружения точек разворота импульса и использования свойства возврата цены к среднему значению.

Стратегический принцип

Стратегия использует 2-периодный индикатор ROC для расчета краткосрочных изменений цен и два набора полос Боллинджера с различными параметрами: краткосрочные полосы Боллинджера (18 периодов, 1,7 стандартного отклонения) используются для определения условий перепроданности и сигналов входа. и долгосрочные полосы Боллинджера (21 период, стандартное отклонение 2,1) используются для определения условий перекупленности и сигналов выхода. Когда ROC пересекает нижнюю полосу Боллинджера снизу вверх, это указывает на то, что импульс цены меняется со слабого на сильный, и система открывает длинную позицию; когда ROC пересекает верхнюю полосу Боллинджера сверху вниз, это указывает на то, что импульс ослабевает, и система закрывает позицию. позиция. Стратегия также отмечает области перекупленности и перепроданности цветом фона: зеленый цвет обозначает перепроданность (вероятный рост), а красный — перекупленность (вероятное падение).

Стратегические преимущества

  1. Высокая адаптивность: полосы Боллинджера автоматически регулируют ширину полосы в соответствии с волатильностью рынка и могут сохранять эффективность в различных рыночных условиях.
  2. Улучшенный контроль рисков: отключение пирамидинга (pyramiding=0), обеспечение удержания только одной позиции за раз
  3. Высокая надежность сигнала: сочетание стратегий импульса и возврата к среднему значению позволяет лучше улавливать поворотные моменты рынка
  4. Высокая практичность: принимая во внимание транзакционные издержки и проскальзывание, он больше соответствует реальной торговой среде.

Стратегический риск

  1. Риск волатильности рынка: частая торговля может привести к убыткам на ограниченном рынке.
  2. Риск ложного прорыва: индикатор ROC может генерировать ложные сигналы прорыва.
  3. Чувствительность параметров: настройки параметров полос Боллинджера и ROC оказывают большее влияние на эффективность стратегии.
  4. Зависимость от рыночной среды: стратегии работают лучше на трендовых рынках и могут потерпеть неудачу на нестабильных рынках.

Направление оптимизации стратегии

  1. Введение фильтров тренда: можно добавлять долгосрочные скользящие средние для фильтрации основного рыночного тренда и повышения точности направления торговли.
  2. Оптимизируйте настройки параметров: вы можете найти оптимальную комбинацию цикла ROC и параметров полосы Боллинджера с помощью тестирования на исторических данных.
  3. Добавить механизм стоп-лосса: установить фиксированный стоп-лосс или скользящий стоп-лосс для контроля риска
  4. Добавьте подтверждение объема: объедините индикаторы объема, чтобы проверить обоснованность ценовых прорывов.

Подвести итог

Стратегия адаптивного возврата к среднему моменту объединяет индикатор ROC и двойную полосу Боллинджера для создания торговой системы, которая может адаптироваться к различным рыночным условиям. Стратегия фокусируется на контроле рисков при сохранении гибкости и имеет большую практическую ценность. Ожидается, что благодаря постоянной оптимизации и совершенствованию эта стратегия позволит добиться более высоких показателей в реальной торговле.

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Adaptive Momentum Reversion Strategy ", overlay=false, initial_capital=50000, pyramiding=0, commission_type=strategy.commission.cash_per_contract, commission_value=0.05, slippage=1)

// Input: ROC Period
rocPeriod = input.int(2, title="ROC Period", minval=1)

// Input: Bollinger Bands Settings (Lower Band)
bbLowerLength = input.int(18, title="Lower Bollinger Band Length", minval=1)
bbLowerStdDev = input.float(1.7, title="Lower Bollinger Band StdDev", minval=0.1, step=0.1)

// Input: Bollinger Bands Settings (Upper Band)
bbUpperLength = input.int(21, title="Upper Bollinger Band Length", minval=1)
bbUpperStdDev = input.float(2.1, title="Upper Bollinger Band StdDev", minval=0.1, step=0.1)

// ROC Calculation
rocValue = (close - close[rocPeriod]) / close[rocPeriod] * 100

// Bollinger Bands Calculation
bbLowerBasis = ta.sma(rocValue, bbLowerLength)  // Basis for Lower Band
bbLower = bbLowerBasis - bbLowerStdDev * ta.stdev(rocValue, bbLowerLength)  // Lower Band

bbUpperBasis = ta.sma(rocValue, bbUpperLength)  // Basis for Upper Band
bbUpper = bbUpperBasis + bbUpperStdDev * ta.stdev(rocValue, bbUpperLength)  // Upper Band

// Plot ROC
plot(rocValue, color=color.blue, linewidth=2, title="ROC Value")

// Plot Bollinger Bands
plot(bbLowerBasis, color=color.gray, linewidth=1, title="Lower BB Basis (SMA)")
plot(bbLower, color=color.green, linewidth=1, title="Lower Bollinger Band")
plot(bbUpperBasis, color=color.gray, linewidth=1, title="Upper BB Basis (SMA)")
plot(bbUpper, color=color.red, linewidth=1, title="Upper Bollinger Band")

// Add Zero Line for Reference
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)

// Entry Condition: Long when ROC crosses above the lower Bollinger Band
longCondition = ta.crossover(rocValue, bbLower)
if (longCondition)
    strategy.entry("Long", strategy.long)

// Exit Condition: Exit on Upper Bollinger Band Cross or ROC drops below Lower Band again
exitCondition = ta.crossunder(rocValue, bbUpper)
if (exitCondition)
    strategy.close("Long")

// Background Color for Extreme Conditions
bgcolor(rocValue > bbUpper ? color.new(color.red, 80) : na, title="Overbought (ROC above Upper BB)")
bgcolor(rocValue < bbLower ? color.new(color.green, 80) : na, title="Oversold (ROC below Lower BB)")