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.
La estrategia utiliza los siguientes indicadores:
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.
Promedio móvil exponencial: promedios de precios suavizados con ponderación exponencial aplicada.
La lógica de negociación específica es:
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.
Posiciones de salida cuando el precio abierto de Heiken Ashi
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.
La EMA determina la dirección general de la tendencia del mercado, evitando la distracción de las fluctuaciones localizadas.
Los cruces Heiken Ashi proporcionan una detección temprana de posibles reversiones.
El filtro adaptativo KAMA reduce las señales falsas.
Las rupturas repentinas y grandes de la EMA pueden conducir a pérdidas amplificadas.
Las señales de reversión pueden retrasarse.
Los parámetros deben adaptarse a los diferentes productos y entornos de mercado.
Incorporar indicadores adicionales como el MACD y las bandas de Bollinger para evitar errores simultáneos de EMA/Heiken Ashi.
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.
Utilice el aprendizaje automático para ajustar automáticamente los parámetros, las reglas de filtro y mejorar la robustez.
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)