이 전략은 여러 이동 평균과 상대적 강도 지표 (RSI) 를 결합하여 거래 신호를 생성합니다. 9 일, 21 일, 25 일 및 99 일이라는 다른 기간을 가진 네 개의 이동 평균을 사용하여 그 사이의 교차점을 기반으로 트렌드 방향을 결정합니다. 또한 전략에는 RSI 지표가 보충 판단으로 통합되어 시장이 과소매되거나 과소매되었을 때 추가 거래 신호를 제공합니다.
이 전략의 주요 아이디어는 서로 다른 기간의 이동 평균의 트렌드 특성을 활용하고 상승 또는 하락 정렬에 따라 주요 시장 트렌드를 결정하는 것입니다. 장기 이동 평균 이상의 단기 이동 평균의 교차는 상승 신호로 간주되며 그 반대는 하락 신호로 간주됩니다. RSI 지표는 시장 정서를 측정하는 데 사용됩니다. 시장이 과소매되거나 과소매되었을 때 반전 신호를 제공합니다.
이 전략은 트렌드 추종 및 정서를 판단하는 거래 전략을 형성하기 위해 다른 기간과 RSI 지표와 이동 평균을 결합합니다. 이 전략의 장점은 명확한 논리와 적응력입니다. 여러 이동 평균을 통합함으로써 시장 추세를 효과적으로 파악 할 수 있습니다. 그러나 매개 변수 민감성, 트렌드 인식 지연 및 범위 제한 시장에서의 저성능과 같은 위험에 직면하고 있습니다. 향후 개선은 매개 변수 최적화, 신호 필터링, 위치 크기, 스톱 로스 및 영업 메커니즘 및 멀티 시장 적응을 통해 전략의 성과와 탄력성을 더욱 향상시킬 수 있습니다.
/*backtest start: 2023-04-24 00:00:00 end: 2024-04-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estratégia de Médias Móveis e RSI (por Svitorino_trade)", shorttitle="Estratégia-Médias Móveis", overlay=true) len1 = input.int(9, minval=1, title="Length 1") len2 = input.int(21, minval=1, title="Length 2") len3 = input.int(25, minval=1, title="Length 3") len4 = input.int(99, minval=1, title="Length 4") rsi_length = input.int(14, minval=1, title="RSI Length") rsi_oversold = input.float(30, minval=0, maxval=100, title="RSI Oversold Level") rsi_overbought = input.float(70, minval=0, maxval=100, title="RSI Overbought Level") src = input(close, title="Source") ama(src, length) => sum = 0.0 for i = 0 to length - 1 sum := sum + src[i] sum / length avg1 = ama(src, len1) avg2 = ama(src, len2) avg3 = ama(src, len3) avg4 = ama(src, len4) rsi_value = ta.rsi(src, rsi_length) // Condições de entrada e saída para períodos de 9 e 21 cruzamento_9_21_acima = avg1 > avg2 and avg1[1] <= avg2[1] cruzamento_9_21_abaixo = avg1 < avg2 and avg1[1] >= avg2[1] // Condições de entrada e saída para períodos de 25 e 99 cruzamento_25_99_acima = avg3 > avg4 and avg3[1] <= avg4[1] cruzamento_25_99_abaixo = avg3 < avg4 and avg3[1] >= avg4[1] // Plotando os sinais de entrada e saída plotshape(series=cruzamento_9_21_acima, style=shape.triangleup, color=color.green, size=size.small, location=location.belowbar) plotshape(series=cruzamento_9_21_abaixo, style=shape.triangledown, color=color.red, size=size.small, location=location.abovebar) plotshape(series=cruzamento_25_99_acima, style=shape.triangleup, color=color.green, size=size.small, location=location.belowbar) plotshape(series=cruzamento_25_99_abaixo, style=shape.triangledown, color=color.red, size=size.small, location=location.abovebar) // Entradas e saídas para períodos de 9 e 21 if cruzamento_9_21_acima and rsi_value > rsi_overbought strategy.entry("Venda Curta", strategy.short) if cruzamento_9_21_abaixo and rsi_value < rsi_oversold strategy.entry("Compra Curta", strategy.long) if cruzamento_9_21_acima strategy.close("Compra Curta") if cruzamento_9_21_abaixo strategy.close("Venda Curta") // Entradas e saídas para períodos de 25 e 99 if cruzamento_25_99_acima and rsi_value > rsi_overbought strategy.entry("Compra Forte", strategy.long) if cruzamento_25_99_abaixo and rsi_value < rsi_oversold strategy.entry("Venda Forte", strategy.short) if cruzamento_25_99_acima strategy.close("Venda Forte") if cruzamento_25_99_abaixo strategy.close("Compra Forte")