Visión general: Esta es una estrategia de seguimiento de tendencias que utiliza el oscilador de tendencias de onda para identificar tendencias. Cálcula promedios móviles exponenciales del precio promedio y la diferencia de precio absoluto para trazar una línea de tendencia de onda. Las señales comerciales se generan cuando la línea de tendencia de onda cruza las zonas de sobrecompra / sobreventa.
Estrategia lógica:
Calcular el precio medio ap = (alto + bajo + cerrado) / 3
Calcular la EMA de n períodos de ap para obtener esa
Calcular la EMA del período n de la diferencia absoluta entre ap y esa para obtener d
Calcule la línea de tendencia de onda: ci = (ap - esa) / ((0.015*d)
Calcular la EMA de ci para el período n2 para obtener la línea de tendencia de onda final tci, es decir, wt1
Calcular la SMA de 4 períodos de wt1 para obtener wt2
Las líneas de nivel obLevel1/2 y osLevel1/2 de la parcela sobrecompradas/sobrevendidas
Generar una señal de compra cuando wt1 cruza el obLevel2; generar una señal de venta cuando wt1 cruza el osLevel2
Añadir emaFilter promedio móvil y filtro de volumenFiltro de volumen como filtros para evitar señales falsas
Conjunto de pérdidas/beneficios después de la entrada en posiciones de salida
Ventajas:
La línea de tendencia de onda maneja bien las transiciones de tendencia/contratendencia
Mejora de la fiabilidad gracias a dos filtros de media móvil y volumen
Varios parámetros evitan las limitaciones de un solo indicador
Los riesgos derivados de las pérdidas y de las pérdidas no derivadas de los riesgos derivados de las pérdidas y de las pérdidas no derivadas de las pérdidas
Riesgos y limitaciones:
La elección de los parámetros puede conducir a un rendimiento deficiente o a un sobreajuste
No hay orientación definitiva sobre los parámetros óptimos
Ignora las condiciones más amplias del mercado
Riesgo de serraduras en los mercados de rango limitado/de choppy
Falta de reglas de salida además de tomar beneficios/detener pérdidas
Oportunidades de mejora:
Parámetros de ensayo a través de marcos de tiempo/activos para encontrar valores óptimos
Incorporar métricas de volatilidad para evitar regímenes de baja volatilidad
Añadir indicadores como RSI para mejorar la precisión de la señal
Construir un modelo de aprendizaje automático para encontrar parámetros óptimos a medida
Las operaciones de liquidación de los activos de la entidad que no sean objeto de una operación de liquidación de los activos de la entidad que no sean objeto de una operación de liquidación de los activos de la entidad que no sean objeto de una operación de liquidación de los activos de la entidad que no sean objeto de una operación de liquidación de los activos.
Conclusión:
Es una estrategia de seguimiento de tendencias que incorpora el indicador de tendencia de onda con filtros adicionales. Capitaliza la capacidad de la línea de tendencia de onda para identificar transiciones de tendencia, utiliza filtros de promedio móvil y volumen para evitar señales falsas, y tiene como objetivo capturar la mayoría de las tendencias a medio / largo plazo.
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bush Strategy test", shorttitle="Nique Audi", overlay=false) // Paramètres n1 = input(10, title="Channel Length") n2 = input(21, title="Average Length") obLevel1 = input(60, title="Over Bought Level 1") obLevel2 = input(53, title="Over Bought Level 2") osLevel1 = input(-65, title="Over Sold Level 1") osLevel2 = input(-60, title="Over Sold Level 2") takeProfitPercentage = input(1, title="Take Profit (%)") stopLossPercentage = input(0.50, title="Stop Loss (%)") // Calculs 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) // Tracé des lignes 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) // Tracé de la différence entre wt1 et wt2 en bleu hline(0, "Zero Line", color=color.gray) // Conditions d'entrée long et court longCondition = ta.crossover(wt1, obLevel2) shortCondition = ta.crossunder(wt1, osLevel2) // Tracé des signaux d'achat et de vente plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal") plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal") // Conditions d'entrée et de sortie strategy.entry("Long", strategy.long, when=longCondition) strategy.entry("Short", strategy.short, when=shortCondition) // Niveaux de prise de profit pour les positions longues et courtes longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentage / 100) shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentage / 100) // Vérification si les niveaux de prise de profit sont atteints longTakeProfitReached = strategy.position_size > 0 and high >= longTakeProfitLevel shortTakeProfitReached = strategy.position_size < 0 and low <= shortTakeProfitLevel // Tracé des formes de prise de profit plotshape(series=longTakeProfitReached, style=shape.xcross, location=location.belowbar, color=color.blue, size=size.small, title="Take Profit Long") plotshape(series=shortTakeProfitReached, style=shape.xcross, location=location.abovebar, color=color.blue, size=size.small, title="Take Profit Short") // Niveaux de stop loss pour les positions longues et courtes longStopLossLevel = strategy.position_avg_price * (1 - stopLossPercentage / 100) shortStopLossLevel = strategy.position_avg_price * (1 + stopLossPercentage / 100) // Vérification si les niveaux de stop loss sont atteints longStopLossReached = strategy.position_size > 0 and low <= longStopLossLevel shortStopLossReached = strategy.position_size < 0 and high >= shortStopLossLevel // Tracé des formes de stop loss plotshape(series=longStopLossReached, style=shape.xcross, location=location.belowbar, color=color.red, size=size.small, title="Stop Loss Long") plotshape(series=shortStopLossReached, style=shape.xcross, location=location.abovebar, color=color.red, size=size.small, title="Stop Loss Short") // Fermeture des positions en cas de prise de profit ou de stop loss strategy.close("Long", when=longTakeProfitReached or longStopLossReached) strategy.close("Short", when=shortTakeProfitReached or shortStopLossReached)