이 전략은 선형 회귀 RSI 지표에 기초하여 설계되었습니다. 선형 회귀 RSI와 EMA 사이의 교차를 계산하여 구매 및 판매 신호를 생성합니다. 전략은 또한 필요에 따라 선택할 수있는 구매 논리에 대한 두 가지 옵션을 제공합니다.
이 전략은 먼저 200주기 선형 회귀를 계산하고, 그 다음 선형 회귀 결과를 기반으로 21주기 RSI를 계산한다. 그 후, 50주기 EMA가 계산된다. RSI가 EMA를 넘을 때 구매 신호가 생성된다. RSI가 EMA를 넘을 때 판매 신호가 트리거되어 포지션을 닫는다.
이 전략은 두 가지 유형의 구매 논리를 제공합니다.
적절한 구매 논리를 시장 조건에 따라 선택할 수 있습니다.
이 전략은 선형 회귀 RSI와 EMA의 강점을 결합하여 가격 소음을 효과적으로 필터링하고 더 신뢰할 수있는 거래 신호를 생성합니다.
선형 회귀 RSI는 추세를 더 잘 파악하고 EMA는 전환점을 식별하는 데 도움이됩니다. 둘의 조합은 추세 내에서 평균 회귀 기회를 찾을 수 있습니다.
이 전략은 다른 시장 단계에 적응하기 위해 더 많은 유연성을 위해 두 가지 선택적 인 구매 논리를 제공합니다. 예를 들어, 첫 번째 논리는 강한 트렌드에 사용될 수 있으며 두 번째 논리는 다양한 시장에 더 적합합니다.
이 전략의 주요 위험은 RSI와 EMA 사이의 관계의 잠재적 인 변화이며 이는 잘못된 거래 신호로 이어질 수 있습니다.
또한, RSI와 EMA의 지표로서의 지연성 또한 입력 및 출출에 약간의 지연을 초래할 수 있으며 전환점을 완벽하게 파악하지 못합니다. 이것은 어느 정도의 실질적 위험을 도입합니다.
리스크를 완화하기 위해, RSI와 EMA의 길이와 같은 매개 변수는 둘 사이의 더 나은 조화를 위해 최적화 될 수 있습니다. 또한 단일 거래에서 손실을 제한하기 위해 적절한 위치 사이징이 필요합니다.
이 전략은 다음과 같은 측면에서 개선될 수 있습니다.
이 전략은 선형 회귀 RSI와 EMA를 기반으로 평균 회귀 전략을 설계하여 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)