La estrategia de cruce del indicador de impulso es un enfoque de negociación basado en la combinación de señales de promedio móvil exponencial (EMA) e índice de fuerza relativa (RSI).
El núcleo de esta estrategia es el sistema de cruce de líneas de EMA rápidas y lentas.ema1
, ema2
yema3
Entre ellos,ema1
representa una tendencia a corto plazo,ema2
representa una tendencia a medio plazo, yema3
Cuando la tendencia a corto plazo cruza por encima de la tendencia a mediano plazo, se genera una señal de compra. Cuando la tendencia a corto plazo cae por debajo de la tendencia a mediano plazo, se genera una señal de venta.
Para filtrar las señales falsas, la estrategia también define dos condiciones adicionales:bodybar1 > bodybar2
yclose > entrybar
(para la señal de compra) oclose < entrybar
Esto asegura que las dos velas recientes cumplan con la dirección de la señal, y el precio atraviesa el punto de entrada para evitar la entrada redundante.
Además, la estrategia incorpora el indicador RSI para evaluar las condiciones de sobrecompra y sobreventa. El área de sobrecompra del RSI se utiliza para definir señales de compra excesivas, mientras que el área de sobreventa se utiliza para definir señales de venta excesivas. Esto ayuda a evitar señales erróneas en mercados sobrecalentados y sobreenfriados.
Las ventajas de esta estrategia incluyen:
Los riesgos de esta estrategia incluyen:
La estrategia se puede optimizar en los siguientes aspectos:
La estrategia de cruce de indicadores de impulso integra los puntos fuertes de la EMA y el RSI y forma señales comerciales basadas en cruces de indicadores. La estrategia es simple y práctica, adecuada para principiantes, y también se puede ampliar y optimizar de acuerdo con las necesidades reales para mejorar el rendimiento de la estrategia.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('EMA Crossover Strategy', shorttitle='EMA Crossover', overlay=true) // Define input for position size as a percentage of equity position_size_pct = input(1, title='Position Size (%)') / 100 //Input EMA len1 = input.int(25, minval=1, title='EMA 1') src1 = input(close, title='Source') ema1 = ta.ema(src1, len1) len2 = input.int(100, minval=1, title='EMA 2') src2 = input(close, title='Source') ema2 = ta.ema(src2, len2) len3 = input.int(200, minval=1, title='EMA 3') src3 = input(close, title='Source') ema3 = ta.ema(src3, len3) //End of format //Format RSI lenrsi = input(14, title='RSI length') outrsi = ta.rsi(close,lenrsi) //plot(outrsi, title='RSI', color=color.new(color.blue, 0), linewidth=1) //hline(70, 'Overbought', color=color.red) //hline(30, 'Oversold', color=color.green) //End of format bodybar1 = math.abs(close - open) bodybar2 = math.abs(close[1] - open[1]) // Plot the EMAs plot(ema1, color=color.new(color.blue, 0), title='EMA 1') plot(ema2, color=color.new(color.red, 0), title='EMA 2') //plot(ema3, color=color.new(#ffffff, 0), title='EMA 3') // EMA Crossover conditions emaCrossoverUp = ta.crossover(ema1, ema2) emaCrossoverDown = ta.crossunder(ema1, ema2) var entrybar = close // Initialize entrybar with the current close // Calculate crossovers outside of the if statements emaCrossoverUpOccured = ta.crossover(close, ema1) and ema1 > ema2 and bodybar1 > bodybar2 and close > entrybar emaCrossoverDownOccured = ta.crossunder(close, ema1) and ema1 < ema2 and bodybar1 > bodybar2 and close < entrybar plotshape(series=emaCrossoverUpOccured, location=location.abovebar, color=color.new(color.green, 0), style=shape.triangleup, title='New Buy Order', size=size.tiny) plotshape(series=emaCrossoverDownOccured, location=location.belowbar, color=color.new(color.red, 0), style=shape.triangledown, title='New Sell Order', size=size.tiny) // Define trading logic with custom position size and RSI conditions if emaCrossoverUp or emaCrossoverUpOccured strategy.entry('Buy', strategy.long) entrybar := close // Update entrybar when entering a new buy position entrybar if emaCrossoverDown or emaCrossoverDownOccured strategy.entry('Sell', strategy.short) entrybar := close // Update entrybar when entering a new sell position entrybar