Эта стратегия представляет собой количественную торговую систему, основанную на теории среднего реверсия, объединяющую полосы Боллинджера, индикаторы RSI и динамический механизм стоп-лосса на основе ATR. Стратегия торгуется путем выявления крайних отклонений цен от среднего, длинного хода, когда цена касается нижней полосы Боллинджера, и RSI находится в перепроданной зоне, и короткого хода, когда цена касается верхней полосы Боллинджера, и RSI находится в перекупленной зоне, используя ATR для динамического установления уровней стоп-лосса и получения прибыли для эффективного управления риском-вознаграждением.
Стратегия использует 20-периодные полосы Боллинджера в качестве основного индикатора тренда, с мультипликатором стандартного отклонения 2,0 для определения границ движения цен. 14-периодный RSI включен в качестве дополнительного индикатора, с показателями ниже 30 считается перепроданным, а выше 70 считается перекупленным. Долгие позиции начинаются, когда цена прорывается ниже нижней полосы, а RSI ниже 30, указывая на потенциальные условия перепродажи, в то время как короткие позиции принимаются, когда цена прорывается выше верхней полосы, а RSI выше 70, указывая на потенциальные условия перепродажи. Средняя полоса служит уровнем получения прибыли в сочетании с сигналами обратного движения RSI для управления позициями. Кроме того, реализуется 14-периодный механизм динамических потерь, основанный на ATR, с остановками, установленными на 2x ATR и остановками на 3x ATR для точного контроля риска.
Стратегия строит комплексную систему среднего реверсионного трейдинга посредством комбинированного применения полос Боллинджера и RSI. Введение динамических остановок на основе ATR эффективно контролирует риск, обеспечивая благоприятные характеристики риска-вознаграждения.
/*backtest start: 2024-11-19 00:00:00 end: 2024-11-26 00:00:00 period: 15m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SOL/USDT Mean Reversion Strategy", overlay=true) // Input parameters length = input(20, "Bollinger Band Length") std_dev = input(2.0, "Standard Deviation") rsi_length = input(14, "RSI Length") rsi_oversold = input(30, "RSI Oversold") rsi_overbought = input(70, "RSI Overbought") // Calculate indicators [middle, upper, lower] = ta.bb(close, length, std_dev) rsi = ta.rsi(close, rsi_length) // Entry conditions long_entry = close < lower and rsi < rsi_oversold short_entry = close > upper and rsi > rsi_overbought // Exit conditions long_exit = close > middle or rsi > rsi_overbought short_exit = close < middle or rsi < rsi_oversold // Strategy execution if (long_entry) strategy.entry("Long", strategy.long) if (short_entry) strategy.entry("Short", strategy.short) if (long_exit) strategy.close("Long") if (short_exit) strategy.close("Short") // Stop loss and take profit atr = ta.atr(14) strategy.exit("Long SL/TP", "Long", stop=strategy.position_avg_price - 2*atr, limit=strategy.position_avg_price + 3*atr) strategy.exit("Short SL/TP", "Short", stop=strategy.position_avg_price + 2*atr, limit=strategy.position_avg_price - 3*atr) // Plot indicators plot(middle, color=color.yellow, title="BB Middle") plot(upper, color=color.red, title="BB Upper") plot(lower, color=color.green, title="BB Lower") // Plot entry and exit points plotshape(long_entry, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(short_entry, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) plotshape(long_exit, title="Long Exit", location=location.abovebar, color=color.orange, style=shape.circle, size=size.small) plotshape(short_exit, title="Short Exit", location=location.belowbar, color=color.orange, style=shape.circle, size=size.small)