Esta estratégia combina médias móveis Heiken Ashi lentas e exponenciais para identificar tendências e fazer negociações longas/cortas durante os mercados de tendência.
A estratégia utiliza os seguintes indicadores:
Slow Heiken Ashi: Um tipo especial de candelabro calculado usando o preço médio da barra anterior, filtrando o ruído do mercado e identificando tendências.
Média Móvel Exponencial: Média de preços suavizada com ponderação exponencial aplicada.
A lógica específica de negociação é a seguinte:
Vá longo quando o preço cruza acima da EMA de 100 dias, vá curto quando o preço cruza abaixo da EMA de 100 dias.
As posições de saída são fechadas quando o preço de abertura de Heiken Ashi
A estratégia combina sinais de tendência e de reversão, capturando grandes oscilações de preços durante os mercados de tendência, evitando perdas excessivas quando as tendências se revertem.
A EMA determina a direção geral da tendência do mercado, evitando a distração de flutuações localizadas.
Os crossovers Heiken Ashi fornecem a detecção precoce de potenciais reversões.
O filtro adaptativo KAMA reduz os falsos sinais.
Considerar períodos de retenção mais apertados ou parar perdas.
Os sinais de reversão podem atrasar-se.
Os parâmetros devem adaptar-se aos diferentes produtos e ambientes de mercado.
Incorporar indicadores adicionais como o MACD e as bandas de Bollinger para evitar erros simultâneos da EMA/Heiken Ashi.
Otimizar dinamicamente os parâmetros da EMA com base na volatilidade do mercado, apertando as paradas/aumentando a tolerância ao deslizamento em conformidade.
Utilize o aprendizado de máquina para ajustar automaticamente parâmetros, regras de filtragem e melhorar a robustez.
A estratégia é relativamente simples e prática em geral, combinando elementos de tendência e reversão. Com parâmetros bem ajustados e controles de risco, ela mantém um potencial de lucro 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)