Estrategia de Origix Ashi basada en una media móvil suavizada

El autor:¿ Qué pasa?, Fecha: 2024-01-25 15:26:25
Las etiquetas:

img

Resumen general

La idea principal de esta estrategia es utilizar el promedio móvil suavizado para calcular el Heiken Ashi suavizado para identificar las tendencias de precios, y ir largo cuando el precio tiene una cruz de oro con el Heiken Ashi suavizado, y ir corto cuando hay una cruz de muerte.

Estrategia lógica

La estrategia define primero una función smoothedMovingAvg para calcular la media móvil suavizada, que utiliza el valor de la media móvil del período anterior y el precio más reciente para calcular la media móvil suavizada del período actual sobre la base de ciertos pesos.

Luego define una función getHAClose para calcular el precio de cierre de Heiken Ashi basado en los precios de apertura, alto, bajo y cerrado.

En la lógica de la estrategia principal, primero obtiene los precios originales de diferentes períodos, luego utiliza la función smoothedMovingAvg para calcular el promedio móvil suavizado, y luego calcula el precio de cierre Heiken Ashi suavizado a través de la función getHAClose.

Por último, va largo cuando el precio cruza por encima del precio de cierre Heiken Ashi suavizado, y cierra la posición cuando el precio cruza por debajo de él.

Análisis de ventajas

La mayor ventaja de esta estrategia es que mediante el uso de la media móvil suavizada para calcular el Heiken Ashi suavizado, puede determinar con mayor precisión las tendencias de precios y filtrar algo de ruido para evitar generar señales incorrectas durante los períodos agitados.

Análisis de riesgos

Los principales riesgos a los que se enfrenta esta estrategia son:

  1. Los parámetros óptimos deben encontrarse a través de pruebas y optimización repetidas.

  2. Cuando los precios fluctúan bruscamente, la media móvil suavizada puede retrasarse en los cambios de precios, lo que resulta en el desencadenamiento de pérdidas de parada o oportunidades de reversión perdidas.

Para hacer frente a los riesgos mencionados anteriormente, se pueden utilizar métodos tales como el ajuste de los parámetros de suavización, la introducción de mecanismos de stop loss, la reducción del tamaño de las posiciones por operación para reducir los riesgos y mejorar la estabilidad de la estrategia.

Direcciones de optimización

La estrategia también puede optimizarse en los siguientes aspectos:

  1. Introducir parámetros de suavizado adaptativos para ajustar automáticamente los parámetros cuando aumente la volatilidad del mercado.

  2. Combinar con otros indicadores como filtros para evitar emitir señales erróneas durante las consolidaciones de precios.

  3. Añadir mecanismos de stop loss para controlar la pérdida por operación.

  4. Optimizar los productos comerciales, las sesiones comerciales, etc. para centrarse en los productos y las sesiones con más ventajas.

A través de las optimizaciones anteriores, los riesgos de ajuste de la curva de la estrategia pueden reducirse aún más y mejorar la adaptabilidad y la estabilidad de la estrategia.

Conclusión

La lógica general de esta estrategia es clara y fácil de entender. Al calcular el Heiken Ashi suavizado para determinar las tendencias de precios y hacer posiciones largas y cortas en consecuencia. Su mayor ventaja es poder filtrar algo de ruido y mejorar la precisión del juicio de la señal. Pero también hay ciertas dificultades en la optimización de parámetros y riesgos de perder inversiones rápidas.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

 //@version=5
strategy("Smoothed Heiken Ashi Strategy", overlay=true)

// Inputs
g_TimeframeSettings = 'Display & Timeframe Settings'
time_frame = input.timeframe(title='Timeframe for HA candle calculation', defval='', group=g_TimeframeSettings)

g_SmoothedHASettings = 'Smoothed HA Settings'
smoothedHALength = input.int(title='HA Price Input Smoothing Length', minval=1, maxval=500, step=1, defval=10, group=g_SmoothedHASettings)

// Define a function for calculating the smoothed moving average
smoothedMovingAvg(src, len) => 
    smma = 0.0
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len 
    smma

// Function to get Heiken Ashi close
getHAClose(o, h, l, c) =>
    ((o + h + l + c) / 4)

// Calculate smoothed HA candles
smoothedHAOpen = request.security(syminfo.tickerid, time_frame, open)
smoothedMA1close = smoothedMovingAvg(request.security(syminfo.tickerid, time_frame, close), smoothedHALength)
smoothedHAClose = getHAClose(smoothedHAOpen, smoothedHAOpen, smoothedHAOpen, smoothedMA1close)

// Plot Smoothed Heiken Ashi candles
plotcandle(open=smoothedHAOpen, high=smoothedHAOpen, low=smoothedHAOpen, close=smoothedHAClose, color=color.new(color.blue, 0), wickcolor=color.new(color.blue, 0))

// Strategy logic
longCondition = close > smoothedHAClose
shortCondition = close < smoothedHAClose

strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition)

plotshape(series=longCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=shortCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)

Más.