Estrategia mejorada de seguimiento de la tendencia de las olas

El autor:¿ Qué pasa?, Fecha: 2024-01-31 15:35:41
Las etiquetas:

img

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:

  1. Calcular el precio medio ap = (alto + bajo + cerrado) / 3

  2. Calcular la EMA de n períodos de ap para obtener esa

  3. Calcular la EMA del período n de la diferencia absoluta entre ap y esa para obtener d

  4. Calcule la línea de tendencia de onda: ci = (ap - esa) / ((0.015*d)

  5. Calcular la EMA de ci para el período n2 para obtener la línea de tendencia de onda final tci, es decir, wt1

  6. Calcular la SMA de 4 períodos de wt1 para obtener wt2

  7. Las líneas de nivel obLevel1/2 y osLevel1/2 de la parcela sobrecompradas/sobrevendidas

  8. Generar una señal de compra cuando wt1 cruza el obLevel2; generar una señal de venta cuando wt1 cruza el osLevel2

  9. Añadir emaFilter promedio móvil y filtro de volumenFiltro de volumen como filtros para evitar señales falsas

  10. Conjunto de pérdidas/beneficios después de la entrada en posiciones de salida

Ventajas:

  1. La línea de tendencia de onda maneja bien las transiciones de tendencia/contratendencia

  2. Mejora de la fiabilidad gracias a dos filtros de media móvil y volumen

  3. Varios parámetros evitan las limitaciones de un solo indicador

  4. 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:

  1. La elección de los parámetros puede conducir a un rendimiento deficiente o a un sobreajuste

  2. No hay orientación definitiva sobre los parámetros óptimos

  3. Ignora las condiciones más amplias del mercado

  4. Riesgo de serraduras en los mercados de rango limitado/de choppy

  5. Falta de reglas de salida además de tomar beneficios/detener pérdidas

Oportunidades de mejora:

  1. Parámetros de ensayo a través de marcos de tiempo/activos para encontrar valores óptimos

  2. Incorporar métricas de volatilidad para evitar regímenes de baja volatilidad

  3. Añadir indicadores como RSI para mejorar la precisión de la señal

  4. Construir un modelo de aprendizaje automático para encontrar parámetros óptimos a medida

  5. 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)




Más.