Estrategia de negociación de media móvil exponencial de Heiken Ashi lenta

El autor:¿ Qué pasa?, Fecha: 2023-12-22 13:18:34
Las etiquetas:

img

Resumen general

Esta estrategia combina las medias móviles Heiken Ashi lentas y exponenciales para identificar tendencias y realizar operaciones largas / cortas durante los mercados de tendencia.

Estrategia lógica

La estrategia utiliza los siguientes indicadores:

  1. Slow Heiken Ashi: Un tipo especial de candelabro calculado utilizando el precio promedio de la barra anterior, filtrando el ruido del mercado e identificando tendencias.

  2. Promedio móvil exponencial: promedios de precios suavizados con ponderación exponencial aplicada.

La lógica de negociación específica es:

  1. Ir largo cuando el precio cruza por encima de 100 días EMA, ir corto cuando el precio cruza por debajo de 100 días EMA.

  2. Posiciones de salida cuando el precio abierto de Heiken Ashi cruza su precio de cierre (señal de reversión potencial).

Análisis de ventajas

La estrategia combina señales de seguimiento de tendencias y de reversión, capturando grandes oscilaciones de precios durante los mercados de tendencias, evitando al mismo tiempo pérdidas excesivas cuando las tendencias se invierten.

  1. La EMA determina la dirección general de la tendencia del mercado, evitando la distracción de las fluctuaciones localizadas.

  2. Los cruces Heiken Ashi proporcionan una detección temprana de posibles reversiones.

  3. El filtro adaptativo KAMA reduce las señales falsas.

Análisis de riesgos

  1. Las rupturas repentinas y grandes de la EMA pueden conducir a pérdidas amplificadas.

  2. Las señales de reversión pueden retrasarse.

  3. Los parámetros deben adaptarse a los diferentes productos y entornos de mercado.

Direcciones de optimización

  1. Incorporar indicadores adicionales como el MACD y las bandas de Bollinger para evitar errores simultáneos de EMA/Heiken Ashi.

  2. Optimizar dinámicamente los parámetros de la EMA en función de la volatilidad del mercado, ajustando las paradas/aumentando la tolerancia al deslizamiento en consecuencia.

  3. Utilice el aprendizaje automático para ajustar automáticamente los parámetros, las reglas de filtro y mejorar la robustez.

Conclusión

La estrategia es relativamente simple y práctica en general, combinando elementos de tendencia y reversión. Con parámetros y controles de riesgo bien ajustados, conserva un potencial de ganancia decente.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-19 10:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("NoScoobies Slow Heiken Ashi and Exponential Moving average Strategy 2.2", overlay=true)

//SHA
p=input(6,title='Period')
fastend=input(0.666,step=0.001)
slowend=input(0.0645,step=0.0001)
kama(close,amaLength)=>
    diff=abs(close[0]-close[1])
    signal=abs(close-close[amaLength])
    noise=sum(diff, amaLength)
    efratio=noise!=0 ? signal/noise : 1
    smooth=pow(efratio*(fastend-slowend)+slowend,2)
    kama=nz(kama[1], close)+smooth*(close-nz(kama[1], close))
    kama
hakamaper=1
Om=sma(open,p)
Hm=sma(high,p)
Lm=sma(low,p)
Cm=sma(close,p)
vClose=(Om+Hm+Lm+Cm)/4
vOpen= kama(vClose[1],hakamaper)
vHigh= max(Hm,max(vClose, vOpen))
vLow=  min(Lm,min(vClose, vOpen))
asize=vOpen-vClose
size=abs(asize)

//MMAR
exponential = input(true, title="Exponential MA")
src = close
ma05 = exponential ? ema(src, 05) : sma(src, 05)
ma10 = exponential ? ema(src, 10) : sma(src, 10)
ma15 = exponential ? ema(src, 15) : sma(src, 15)
ma20 = exponential ? ema(src, 20) : sma(src, 20)
ma25 = exponential ? ema(src, 25) : sma(src, 25)
ma30 = exponential ? ema(src, 30) : sma(src, 30)
ma35 = exponential ? ema(src, 35) : sma(src, 35)
ma40 = exponential ? ema(src, 40) : sma(src, 40)
ma45 = exponential ? ema(src, 45) : sma(src, 45)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
ma55 = exponential ? ema(src, 55) : sma(src, 55)
ma60 = exponential ? ema(src, 60) : sma(src, 60)
ma65 = exponential ? ema(src, 65) : sma(src, 65)
ma70 = exponential ? ema(src, 70) : sma(src, 70)
ma75 = exponential ? ema(src, 75) : sma(src, 75)
ma80 = exponential ? ema(src, 80) : sma(src, 80)
ma85 = exponential ? ema(src, 85) : sma(src, 85)
ma90 = exponential ? ema(src, 90) : sma(src, 90)
ma95 = exponential ? ema(src, 95) : sma(src, 95)
ma100 = exponential ? ema(src, 100) : sma(src, 100)

longcondition=src>ma100
shortcondition=src<ma100
long=longcondition and size<size[1] and (vOpen<vClose or vOpen>vClose)
short=shortcondition and size<size[1] and (vOpen>vClose or vOpen<vClose)
close_long=longcondition and crossunder(open, vClose)
close_short=shortcondition and crossover(open, vClose)
_close=close_long[2] or close_short[2]

if long
    strategy.entry("LONG", strategy.long)
    strategy.close("LONG", when = _close)
if short
    strategy.entry("SHORT", strategy.short)
    strategy.close("SHORT", when = _close)
    


Más.