Esta estrategia es un sistema de negociación cuantitativo basado en el indicador WaveTrend, que incorpora mecanismos dinámicos de gestión de riesgos. La estrategia calcula la fuerza de la tendencia a través de las fluctuaciones de precios, filtra las señales en las regiones de sobrecompra y sobreventa y aplica medidas de control de riesgos que incluyen mecanismos de stop-loss, take-profit y trailing stop.
El núcleo de la estrategia radica en el cálculo del indicador WaveTrend utilizando los precios HLC3. Primero calcula una media móvil exponencial (EMA) de n1 períodos como línea de base, luego calcula las desviaciones de precios de esta línea de base, normalizándolas con un coeficiente de 0.015. Esto resulta en dos líneas de onda, wt1 y wt2, que representan líneas rápidas y lentas respectivamente. Las señales de negociación se generan basadas en estas líneas que cruzan los niveles de sobrecompra y sobreventa, combinadas con un sistema de control de riesgos de múltiples capas.
Esta estrategia logra un enfoque comercial cuantitativo integral mediante la combinación del indicador WaveTrend con un robusto sistema de gestión de riesgos. Sus principales fortalezas se encuentran en su adaptabilidad y exposición al riesgo controlada, aunque los operadores necesitan optimizar los parámetros y mejorar la estrategia en función de las condiciones reales del mercado. A través de la optimización y el refinamiento continuos, esta estrategia muestra promesa para lograr rendimientos estables en entornos comerciales reales.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="WaveTrend [LazyBear] with Risk Management", shorttitle="WT_LB_RM", overlay=true) // Input Parameters n1 = input.int(10, "Channel Length") n2 = input.int(21, "Average Length") obLevel1 = input.int(60, "Over Bought Level 1") obLevel2 = input.int(53, "Over Bought Level 2") osLevel1 = input.int(-60, "Over Sold Level 1") osLevel2 = input.int(-53, "Over Sold Level 2") // Risk Management Inputs stopLossPercent = input.float(50.0, "Stop Loss (%)", minval=0.1, maxval=100) takeProfitPercent = input.float(5.0, "Take Profit (%)", minval=0.1, maxval=100) trailingStopPercent = input.float(3.0, "Trailing Stop (%)", minval=0.1, maxval=100) trailingStepPercent = input.float(2.0, "Trailing Stop Step (%)", minval=0.1, maxval=100) // WaveTrend Calculation ap = hlc3 esa = ta.ema(ap, n1) d = ta.ema(math.abs(ap - esa), n1) ci = (ap - esa) / (0.015 * d) tci = ta.ema(ci, n2) wt1 = tci wt2 = ta.sma(wt1, 4) // Plotting Original Indicators plot(0, color=color.gray) plot(obLevel1, color=color.red) plot(osLevel1, color=color.green) plot(obLevel2, color=color.red, style=plot.style_line) plot(osLevel2, color=color.green, style=plot.style_line) plot(wt1, color=color.green) plot(wt2, color=color.red, style=plot.style_line) plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80) // Buy and Sell Signals with Risk Management longCondition = ta.crossover(wt1, osLevel1) or ta.crossover(wt1, osLevel2) shortCondition = ta.crossunder(wt1, obLevel1) or ta.crossunder(wt1, obLevel2) // Strategy Entry with Risk Management if (longCondition) entryPrice = close stopLossPrice = entryPrice * (1 - stopLossPercent/100) takeProfitPrice = entryPrice * (1 + takeProfitPercent/100) strategy.entry("Long", strategy.long) strategy.exit("Long Exit", "Long", stop=stopLossPrice, limit=takeProfitPrice, trail_price=close * (1 + trailingStopPercent/100), trail_offset=close * (trailingStepPercent/100)) if (shortCondition) entryPrice = close stopLossPrice = entryPrice * (1 + stopLossPercent/100) takeProfitPrice = entryPrice * (1 - takeProfitPercent/100) strategy.entry("Short", strategy.short) strategy.exit("Short Exit", "Short", stop=stopLossPrice, limit=takeProfitPrice, trail_price=close * (1 - trailingStopPercent/100), trail_offset=close * (trailingStepPercent/100))