Стратегия реверсии RSI рассчитывает индикатор RSI и сглаженную скользящую среднюю, чтобы определить, является ли акция перекупленной или перепроданной, тем самым генерируя сигналы покупки и продажи.
Стратегия сначала рассчитывает 14-периодный RSI и нормализует его до 0-100. Затем рассчитывает 5-периодную взвешенную скользящую среднюю величину RSI и отображает ее до -1 до 1 с использованием тангентной функции. Когда отображаемый RSI пересекает выше -0,8, генерируется сигнал покупки. Когда он пересекает ниже 1, генерируется сигнал продажи. Методы отображения и порогового суждения используются здесь для обнаружения сигналов обратного движения индикатора RSI.
В стратегии также устанавливается диапазон месяца и даты, чтобы он работал только в течение определенных месяцев и дат.
Стратегия реверсии RSI эффективно захватывает возможности реверсии цены путем построения простых правил реверсионной торговли на основе индикатора RSI. Стратегия проста в реализации, но может быть улучшена с помощью оптимизации параметров, механизмов контроля риска и т. Д., что делает ее стабильной прибыльной количественной торговой стратегией.
/*backtest start: 2023-01-12 00:00:00 end: 2024-01-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="RSI Reverse", shorttitle="RSI Reverse") RSI_main = input(14, title="RSI Main Period") RSI_smooth = input(5, title="RSI Smooth Period") //Functions RVS(input) => (exp(2*input)-1) / (exp(2*input)+1) //RSI Calculation raw_RSI=0.1*(rsi(close,RSI_main)-50) wma_RSI=wma(raw_RSI,RSI_smooth) RVS_RSI = RVS(wma_RSI) threshold1 = RVS_RSI < 0.8? 1 : 0 threshold2 = -0.8 plot(RVS_RSI,color=red) plot(threshold1,color=blue) plot(threshold2,color=blue) buycon = crossover(RVS_RSI,threshold2) sellcon = crossunder(RVS_RSI , threshold1) monthfrom =input(6) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( buycon ) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") else strategy.cancel(id="BUY") if ( sellcon) strategy.close("BUY")