
La estrategia es un sistema de negociación integrado que combina una línea de medias móviles, un indicador de fuerza relativamente fuerte y un indicador de fuerza de tendencia. La combinación de múltiples indicadores técnicos permite una captura precisa de las tendencias del mercado y un control efectivo del riesgo. El sistema utiliza un mecanismo de stop-loss dinámico que asegura la relación entre el riesgo y la ganancia de las operaciones, al tiempo que se adapta a diferentes entornos del mercado mediante el ajuste flexible de los parámetros del indicador.
La estrategia se basa principalmente en tres indicadores centrales: las medias móviles de índices rápidos y lentos (EMA), el indicador de fuerza relativa (RSI) y el indicador de tendencia promedio (ADX). Cuando el EMA rápido atraviesa el EMA lento, el sistema comprueba si el RSI se encuentra en una zona de no sobreventa (menos de 60), y confirma que el ADX muestra una fuerza de tendencia suficiente (más de 15). Cuando se cumplen estas condiciones, el sistema emite varias señales.
La estrategia establece un sistema de negociación relativamente completo mediante el uso integrado de múltiples indicadores técnicos. Su principal ventaja es que mejora la fiabilidad de las señales de negociación mediante la combinación de indicadores sincronizados, al tiempo que garantiza la seguridad de las transacciones mediante mecanismos de control de riesgo dinámicos. Si bien existen algunas limitaciones inherentes, la estrategia aún tiene un gran espacio para mejorar a través de la dirección de optimización sugerida.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-23 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced EMA + RSI + ADX Strategy (Focused on 70% Win Rate)", overlay=true)
// Input parameters
lenFast = input.int(9, title="Fast EMA Length", minval=1)
lenSlow = input.int(21, title="Slow EMA Length", minval=1)
rsiPeriod = input.int(14, title="RSI Period")
adxPeriod = input.int(14, title="ADX Period")
adxSmoothing = input.int(1, title="ADX Smoothing")
adxThreshold = input.int(15, title="ADX Threshold")
riskRewardRatio = input.float(1.5, title="Risk/Reward Ratio")
rsiOverbought = input.int(60, title="RSI Overbought Level") // Adjusted for flexibility
rsiOversold = input.int(40, title="RSI Oversold Level")
// EMA Calculations
fastEMA = ta.ema(close, lenFast)
slowEMA = ta.ema(close, lenSlow)
// RSI Calculation
rsiValue = ta.rsi(close, rsiPeriod)
// ADX Calculation
[plusDI, minusDI, adxValue] = ta.dmi(adxPeriod, adxSmoothing)
// Entry Conditions with Confirmation
buyCondition = ta.crossover(fastEMA, slowEMA) and rsiValue < rsiOverbought and adxValue > adxThreshold
sellCondition = ta.crossunder(fastEMA, slowEMA) and rsiValue > rsiOversold and adxValue > adxThreshold
// Dynamic Exit Conditions
takeProfit = strategy.position_avg_price + (close - strategy.position_avg_price) * riskRewardRatio
stopLoss = strategy.position_avg_price - (close - strategy.position_avg_price)
// Entry logic
if (buyCondition)
strategy.entry("Buy", strategy.long)
strategy.exit("Sell", from_entry="Buy", limit=takeProfit, stop=stopLoss)
if (sellCondition)
strategy.close("Buy")
// Plotting EMAs
plot(fastEMA, color=color.new(color.green, 0), title="Fast EMA", linewidth=1)
plot(slowEMA, color=color.new(color.red, 0), title="Slow EMA", linewidth=1)
// Entry and exit markers
plotshape(series=buyCondition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.normal, title="Buy Signal")
plotshape(series=sellCondition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.normal, title="Sell Signal")
// Alerts
alertcondition(buyCondition, title="Buy Alert", message="Buy signal triggered")
alertcondition(sellCondition, title="Sell Alert", message="Sell signal triggered")