
Esta estratégia combina o uso de um Heiken Ashi lento e de uma média móvel do índice para identificar tendências, para fazer compras de longo e curto prazo em situações de tendência. Fazer compras quando o preço está acima da EMA de 100 dias, fazer compras quando está abaixo da EMA de 100 dias e, em determinadas condições, fazer compras de baixa posição.
A estratégia utiliza a seguinte combinação de indicadores:
Heiken Ashi: um tipo especial de gráfico de linha K, que é desenhado usando a média da linha K anterior, para filtrar o ruído do mercado e identificar tendências. Isso é possível por meio de um filtro Kama adaptativo.
Média móvel indexada: a média após o alinhamento indexado dos preços, que inclui EMAs de 5 a mais de 100 dias.
A lógica da transação é a seguinte:
Faça mais quando o preço atravessa a EMA de 100 dias; faça menos quando o preço atravessa a EMA de 100 dias.
Condição de posição equilibrada: Quando o preço de abertura de Heiken Ashi cruza seu preço de fechamento (potencial sinal de inversão), a correspondente posição de multi-cabeça é equilibrada por um cruzamento inverso, o que equivale a uma posição de cabeça vazia.
A estratégia combina o discernimento de tendências e sinais de reversão para capturar as flutuações de preços mais significativas em um cenário de tendência, evitando a expansão dos prejuízos por meio de sinais de reversão.
Usar a EMA para determinar a direção da tendência global, evitando ser enganado por choques locais.
O sinal de cruzamento de Heiken Ashi pode ser detectado mais cedo para uma oportunidade de reversão.
Adaptação de filtros Kama reduz a probabilidade de falsos sinais.
Uma ruptura significativa da EMA pode causar a expansão dos prejuízos. O período de detenção pode ser reduzido de forma apropriada ou um stop loss pode ser definido.
Os sinais de inversão podem estar atrasados e pode ser considerado reduzir o tamanho da posição para controlar o risco.
A configuração inadequada dos parâmetros da EMA também pode afetar o desempenho da estratégia e deve ser ajustada de acordo com as diferentes variedades e condições de mercado.
A combinação de vários indicadores de avaliação evita a probabilidade de que os sinais errados sejam emitidos tanto pela EMA quanto pelo Heiken Ashi.
É possível otimizar os parâmetros do EMA em tempo real de acordo com a volatilidade do mercado, apertando o stop loss em alta volatilidade e relaxando o ponto de deslizamento em baixa volatilidade.
Otimizar automaticamente as configurações de parâmetros e as regras de filtragem com base em algoritmos de aprendizagem de máquina, tornando as estratégias mais robustas.
A estratégia é simples e prática em geral, mas, combinada com tendências e reversões, ainda há um bom espaço de lucro com a otimização de parâmetros e o controle de risco. A estratégia pode ser adaptada às mudanças do ambiente de mercado a partir da otimização.
/*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)