Esta estrategia utiliza las señales cruzadas del indicador RSI y dos líneas EMA para determinar los puntos de compra y venta. Una señal de compra se genera cuando el precio de cierre cae por debajo de la EMA100 y la EMA20, y el valor del RSI está por debajo de 30. Una señal de venta se genera cuando el precio de cierre se rompe por encima de la EMA100 y la EMA20, y el valor del RSI está por encima de 70. La idea principal de esta estrategia es usar el indicador RSI para juzgar las condiciones de sobrecompra y sobreventa, combinado con el juicio de tendencia de las líneas EMA, con el fin de capturar los puntos bajos y altos de las fluctuaciones del mercado y realizar operaciones de compra baja y alta.
La estrategia cuantitativa de señales de cruce RSI y doble EMA es una estrategia comercial cuantitativa simple y práctica. Al combinar el indicador RSI con promedios móviles EMA, puede capturar mejor los máximos y mínimos en un mercado fluctuante y realizar arbitraje. Sin embargo, esta estrategia también tiene algunas limitaciones y riesgos, como el fracaso en los mercados de tendencia, la falta de gestión de posiciones y medidas de control de riesgos, etc. Por lo tanto, en la aplicación práctica, debe ser adecuadamente optimizada y mejorada de acuerdo con las características del mercado y las preferencias personales para mejorar la robustez y rentabilidad de la estrategia.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI-EMA100&20 Buy/Sell Signal", overlay=true) // Input parameters rsiLength = input.int(14, "RSI Length") emaCloseLength = input.int(100, "EMA Length (Closing Price)") emaLowLength = input.int(20, "EMA Length (Low Price)") oversoldLevel = input.int(30, "Oversold Level") overboughtLevel = input.int(70, "Overbought Level") // Calculate RSI rsi = ta.rsi(close, rsiLength) // Calculate EMA of closing price emaClose = ta.ema(close, emaCloseLength) // Calculate EMA of low price emaLow = ta.ema(low, emaLowLength) // Determine overbought and oversold conditions isOversold = rsi <= oversoldLevel isOverbought = rsi >= overboughtLevel // Plot RSI and its EMAs plot(rsi, color=color.blue, title="RSI") plot(emaClose, color=color.green, title="EMA 100 (Closing Price)") plot(emaLow, color=color.orange, title="EMA 20 (Low Price)") // Strategy entry condition: Closing price is below both EMAs and RSI is less than or equal to oversold level buySignal = close < emaClose and close < emaLow and isOversold // Plot buy signals plotshape(series=buySignal, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small) // Strategy entry if (buySignal) strategy.entry("Buy", strategy.long) // Strategy exit condition: Price crosses above both EMAs and RSI is greater than or equal to overbought level sellSignal = close > emaClose and close > emaLow and isOverbought // Plot sell signals plotshape(series=sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Strategy exit if (sellSignal) strategy.entry("Sell", strategy.short) // Plot sell signals plotshape(series=sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Strategy exit if (sellSignal) strategy.entry("Sell", strategy.short)