
La estrategia de cruce de indicadores de momento es una estrategia de negociación que combina la media móvil exponencial (EMA) y la señal del índice de fuerza relativa (RSI). La estrategia tiene como objetivo aprovechar el cruce de las dos líneas de EMA para generar señales de compra y venta para negociar en los mercados financieros.
El núcleo de la estrategia es el sistema de cruce de líneas rápido y lento de EMA. La estrategia define tres líneas EMA con diferentes parámetros:ema1、ema2yema3¿Cuál es la diferencia entre los dos?ema1La mayoría de las personas no tienen acceso a internet.ema2La tendencia a mediano plazo es la siguiente:ema3Representa la tendencia a largo plazo. Cuando la tendencia a corto plazo cruza la tendencia intermedia, genera una señal de compra; cuando la tendencia a corto plazo cruza la tendencia intermedia, genera una señal de venta.
La política también define dos condiciones adicionales para filtrar señales de diagnóstico erróneo:bodybar1 > bodybar2yclose > entrybar(Señales de compra) oclose < entrybarEsto asegura que las relaciones de longitud de las dos líneas K más cercanas coincidan con la dirección de la señal y que el precio rompa el punto de entrada para evitar la repetición.
Además, la estrategia se combina con el indicador RSI evalue, donde las áreas altas del RSI se utilizan para definir señales de sobreventa y las áreas bajas del RSI se utilizan para definir señales de sobreventa. Esto ayuda a evitar señales erróneas en mercados con precios demasiado calientes y demasiado fríos.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene los siguientes riesgos:
La estrategia puede ser optimizada en las siguientes direcciones:
La estrategia de cruce de indicadores dinámicos integra las ventajas de la EMA y el RSI para formar señales de negociación basadas en cruces de indicadores. La estrategia es sencilla y práctica, adecuada para principiantes, pero también puede ampliarse y optimizarse según las necesidades reales para mejorar la eficacia 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