RSI反转策略通过计算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")