
Estrategia de comercio de doble cruce de promedio móvil con filtro de fuerza RSI
Esta estrategia es un sistema de negociación que combina el cruce de la doble línea de equilibrio y el filtro del indicador RSI. La estrategia utiliza el índice móvil de 5 períodos (EMA5) y el promedio móvil simple de 10 períodos (SMA10) como herramientas principales para determinar las tendencias, mientras que la introducción del índice de 14 períodos (RSI14) como filtro de señales de negociación mejora la precisión de la negociación con condiciones estrictas de entrada y salida.
La lógica central de la estrategia se basa en la combinación de dos indicadores técnicos clave:
Mecanismo de confirmación de la señal
El control de riesgos es efectivo
La lógica de la estrategia está clara
Riesgo de mercados volátiles
Riesgo de retraso
Sensibilidad de los parámetros
Introducción del filtro de intensidad de tendencia
Parámetros de optimización adaptados
Mejorar la gestión de riesgos
La estrategia, combinada con el cruce de dos líneas homogéneas y el filtro RSI, construye un sistema de negociación relativamente completo. La principal ventaja de la estrategia reside en su mecanismo de confirmación de señales y medidas de control de riesgo, pero también existen algunas limitaciones inherentes. A través de la orientación de optimización recomendada, la estrategia tiene esperanzas de obtener un mejor rendimiento en el comercio real.
/*backtest
start: 2024-06-20 00:00:00
end: 2024-12-01 00:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("EMA and SMA Crossover with RSI14 Filtering", overlay=true)
// Define parameters for EMA, SMA, and RSI
ema5_length = 5
sma10_length = 10
rsi14_length = 14
rsi60_level = 60
rsi50_level = 50
// Calculate EMAs, SMAs, and RSI
ema5 = ta.ema(close, ema5_length)
sma10 = ta.sma(close, sma10_length)
rsi14 = ta.rsi(close, rsi14_length)
// Define Crossover Conditions
positive_crossover = ta.crossover(ema5, sma10)
negative_crossover = ta.crossunder(ema5, sma10)
// Define RSI filter conditions
rsi_above_60 = rsi14 > rsi60_level
rsi_below_50 = rsi14 < rsi50_level
// Condition: price below 60 on RSI 14 and later crosses above for Buy
price_below_rsi60 = close < rsi14
price_above_rsi60 = close > rsi14
// Condition: price above 50 on RSI 14 and later crosses below for Sell
price_above_rsi50 = close > rsi14
price_below_rsi50 = close < rsi14
// Trading logic
var bool active_buy_trade = false
var bool active_sell_trade = false
// Buy Condition: EMA 5 crosses above SMA 10 and RSI 14 crosses above 60
if (positive_crossover and not active_buy_trade)
if (price_below_rsi60)
// Wait for price to cross above RSI 60
if (price_above_rsi60)
strategy.entry("Buy", strategy.long)
active_buy_trade := true
else
strategy.entry("Buy", strategy.long)
active_buy_trade := true
// Sell Condition: EMA 5 crosses below SMA 10 and RSI 14 crosses below 50
if (negative_crossover and not active_sell_trade)
if (price_above_rsi50)
// Wait for price to cross below RSI 50
if (price_below_rsi50)
strategy.entry("Sell", strategy.short)
active_sell_trade := true
else
strategy.entry("Sell", strategy.short)
active_sell_trade := true
// Exit Buy Condition: Reverse Signal (EMA crosses below SMA or RSI crosses below 50)
if (active_buy_trade and (negative_crossover or rsi14 < rsi50_level))
strategy.close("Buy")
active_buy_trade := false
// Exit Sell Condition: Reverse Signal (EMA crosses above SMA or RSI crosses above 60)
if (active_sell_trade and (positive_crossover or rsi14 > rsi60_level))
strategy.close("Sell")
active_sell_trade := false
// Plotting EMAs, SMAs, and RSI 14 on the chart
plot(ema5, color=color.blue, linewidth=2, title="EMA 5")
plot(sma10, color=color.red, linewidth=2, title="SMA 10")
hline(rsi60_level, "RSI 60", color=color.gray, linestyle=hline.style_dotted)
hline(rsi50_level, "RSI 50", color=color.gray, linestyle=hline.style_dotted)
plot(rsi14, color=color.green, linewidth=1, title="RSI 14")