该策略基于线性回归RSI指标设计。策略通过计算线性回归RSI和EMA的交叉来产生买入和卖出信号。该策略同时提供两种买入逻辑选择,可以根据需要选用。
策略首先计算长度为200周期的线性回归,然后基于线性回归结果计算21周期的RSI。之后计算长度为50周期的EMA。当RSI上穿EMA时产生买入信号,当RSI下穿EMA时产生卖出信号,实现获利了结。
该策略提供两种买入逻辑:
可以根据市场情况选择使用哪种买入逻辑。
该策略结合了线性回归RSI和EMA的优点,可以有效滤除价格的部分噪音,产生更可靠的交易信号。
线性回归RSI能够更好地体现趋势,EMA有助于发现转折点。两者的组合可以在趋势中寻找反转机会,形成mean reversion策略。
该策略提供两种买入逻辑可选,可以根据市场阶段更灵活地调整。例如趋势明显时可以选择第一种逻辑,震荡时可以选择第二种。
该策略主要依赖于RSI和EMA的关系,如果两者之间关系发生改变,会导致交易信号产生错误。这是主要的风险点。
此外,RSI和EMA作为指标本身也会存在一定的滞后,可能导致买入和卖出出现一定程度的延迟,无法完美地捕捉转折点。这也会带来一定程度的实际风险。
为降低风险,可以适当调整RSI和EMA的长度参数,优化两者之间的配合。此外交易单元也要适量把控,避免单笔损失过大。
该策略可以从以下几个方向进行优化:
本策略基于线性回归RSI和EMA设计了一个mean reversion策略,通过RSI和EMA的交叉来寻找盘整范围内的反转机会。该策略同时提供两种买入逻辑可供选择,可以灵活应对不同市场情况。总体来说,该策略结合了多个指标的优势,可以有效发现反转机会。通过参数优化和其他指标的辅助过滤,该策略可以获得更好的绩效表现。
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Linear RSI") startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0) end = timestamp(input(9999, "End Year"), input(1, "Month"), input(1, "Day"), 0, 0) _testPeriod() => true //inputs length = input(defval=200, minval=1, title="LR length") length2 = input(defval=21, minval=1, title="RSI length") ema_fast = input(defval=50, minval=1, title="EMA") lag = 0 overBought = input(50) overSold = input(50) //rsi src = close Lr = linreg(src, length, lag) rsi = rsi(Lr, length2) ema = ema(rsi, ema_fast) plot(rsi, color = rsi > overBought ? color.green : rsi < overSold ? color.red : color.silver) plot(overBought, color=color.purple) plot(overSold, color=color.purple) plot(ema, color=color.blue) first_type = input(true, title="Use first logic?") second_type = input(false, title="Use second logic?") long_condition = (first_type ? crossover(rsi, ema) and _testPeriod() : false) or (second_type ? rsi > ema and rsi > overBought and _testPeriod() : false) strategy.entry('BUY', strategy.long, when=long_condition) short_condition = crossunder(rsi, ema) strategy.close('BUY', when=short_condition)