RSI 이동 평균 이중 교차 오스실레이션 전략은 RSI 지표와 이동 평균의 크로스오버를 모두 사용하여 진입 및 출구를 결정하는 양적 거래 전략이다. RSI 지표를 사용하여 시장이 과소매 또는 과소매인지 판단하고, 이동 평균의 트렌드 판단과 결합하여 RSI가 극단적인 조건을 나타낼 때 거래 신호를 발급합니다. 이것은 가짜 신호를 효과적으로 필터링하고 전략의 안정성을 향상시킬 수 있습니다.
이 전략은 주로 RSI 지표와 이동 평균의 결합 사용에 기반합니다. 첫째, 특정 기간 동안 RSI 값을 계산하고 과잉 구매 / 과잉 판매 라인을 설정합니다. 둘째, 빠르고 느린 이동 평균을 계산합니다. RSI 값이 과잉 판매 라인과 하부 대역 아래에있을 때 RSI가 느린 이동 평균 이상으로 넘을 때 구매 신호가 생성됩니다. RSI가 느린 이동 평균 아래로 넘을 때 RSI가 과잉 구매 라인과 상부 대역 위에있을 때 판매 신호가 생성됩니다.
이 전략의 가장 큰 장점은 RSI 지표가 과잉 구매 / 과잉 판매 조건을 판단하고 이동 평균을 사용하여 트렌드 방향을 결정하여 잘못된 파장을 효과적으로 피할 수 있다는 것입니다. 또한, RSI와 BOLL 채널의 조합은 더 정확한 거래 신호를 만들기 위해 소음을 더 잘 필터 할 수 있습니다.
이 전략의 주요 위험은: 과도한 거래로 이어지는 높은 거래 빈도; 부적절한 매개 변수 설정이 신호 정확성을 감소시킬 수 있습니다. 또한 범위 제한 시장에서 손실이 발생할 수 있습니다.
다른 주기에 맞게 RSI 또는 이동 평균 기간 매개 변수를 조정하는 것을 고려하십시오. 신호를 필터하기 위해 다른 지표와 결합하십시오. 위험을 제어하기 위해 손해를 멈추고 이익을 취하십시오. 모든 거래에서 위치 크기를 최적화하십시오.
일반적으로, RSI 이동 평균 이중 교차 오스실레이션 전략은 비교적 안정적이고 신뢰할 수 있는 단기 거래 전략이다. 적절한 매개 변수 조정과 위험 통제로 투자 수익률을 높일 수 있다. 이 전략은 이해하기 쉽고 구현하기 쉬우며, 초보자가 양적 거래를 배우고 적용하는 데 매우 적합하다.
/*backtest start: 2024-01-23 00:00:00 end: 2024-02-22 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI slowma Ismael", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Definir la longitud del RSI rsi_length = input(title='RSI Length', defval=14) //media Fast = input(title='Fast', defval=7) slow = input(title='Slow', defval=2) // Definir los niveles de sobrecompra y sobreventa del RSI rsi_overbought = input(title='RSI Overbought Level', defval=72) rsi_oversold = input(title='RSI Oversold Level', defval=29) // Definir la longitud y la desviación estándar de las Bandas de Bollinger bb_length = input(title="Bollinger Bands Length", defval=14) bb_stddev = input(title="Bollinger Bands StdDev", defval=2) // Calcular RSI rsi_value = ta.rsi(close, rsi_length) // Calcular Bandas de Bollinger bb_upper = ta.sma(rsi_value, bb_length) + bb_stddev* ta.stdev(rsi_value, bb_length) bb_lower = ta.sma(rsi_value, bb_length) - bb_stddev * ta.stdev(rsi_value, bb_length) //media movil adelantada fastMA = ta.sma(rsi_value, Fast) slowMA = ta.sma(rsi_value, slow) // Definir la señal de compra y venta buy_signal = (ta.crossover(rsi_value, slowMA) and rsi_value < bb_lower and rsi_value < rsi_oversold) or (rsi_value < bb_lower and rsi_value < rsi_oversold) sell_signal = (ta.crossunder(rsi_value, slowMA) and rsi_value > bb_upper and rsi_value > rsi_overbought) or (rsi_value > bb_upper and rsi_value > rsi_overbought) // Configurar las condiciones de entrada y salida del mercado if buy_signal strategy.entry("Buy", strategy.long) if sell_signal strategy.close("Buy") // Configurar el stop loss y el take profit stop_loss = input.float(title='Stop Loss (%)', step=0.01, defval=3) take_profit = input.float(title='Take Profit (%)', step=0.01, defval=8) strategy.exit("Exit Long", "Buy", stop=close - close * stop_loss / 100, limit=close + close * take_profit / 100) // Configurar la visualización del gráfico plot(slowMA, title='RSISMA', color=color.rgb(75, 243, 33), linewidth=1) plot(fastMA, title='RSIFMA', color=color.rgb(75, 243, 33), linewidth=1) plot(rsi_value, title='RSI', color=color.purple, linewidth=1) // Marcar las zonas de sobrecompra y sobreventa en el grafico del RSI hl= hline(rsi_overbought, title='Overbought', color=color.purple, linestyle=hline.style_dotted, linewidth=1) hll= hline(rsi_oversold, title='Oversold', color=color.purple, linestyle=hline.style_dotted, linewidth=1) fill(hl,hll, color= color.new(color.purple, 91)) bbfill = plot(bb_upper, title='Bollinger Bands up', color=color.blue, linewidth=1) bbfill1= plot(bb_lower, title='Bollinger Bands down', color=color.blue, linewidth=1) fill(bbfill,bbfill1, color= color.new(#2bb5ec, 91))