Estratégia inversa de Heikin-Ashi

Autora:ChaoZhang, Data: 2023-11-16 15:44:14
Tags:

img

Resumo

Esta estratégia usa principalmente velas Heikin-Ashi melhoradas para identificar pontos de reversão no preço e capturar mudanças significativas na tendência. Ela pertence a estratégias de negociação de curto prazo. A estratégia calcula os preços de abertura, alta, baixa e fechamento das velas usando HA e determina a cor final com base na relação de preço. Velas verdes representam preços crescentes e velas vermelhas representam preços em queda.

Estratégia lógica

A lógica central da estratégia é detectar mudanças de cor nas velas HA para determinar a reversão do preço.

Em primeiro lugar, obter preços de abertura, alta, baixa e fechamento a partir de dados HA ou dados originais com base no parâmetro de entrada.

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close

haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open  

haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high

haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

Calcule então a corrente HA aberta e fechada de acordo com as fórmulas.

haclose = (haOpen + haHigh + haLow + haClose) / 4  

haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2

Além disso, obtenha os preços mais altos e mais baixos da HA.

hahigh = max(haHigh, max(haopen, haclose))

halow = min(haLow, min(haopen, haclose))  

Determinar a cor da vela HA com base na relação aberta/próxima.

hacolor = haclose > haopen ? color.green : color.red

Identificar os sinais de inversão com base na alteração de cor do HA entre as barras.

turnGreen = haclose > haopen and haclose[1] <= haopen[1]  

turnRed = haclose <= haopen and haclose[1] > haopen[1] 

Abre posições longas/cortas quando os sinais forem acionados.

strategy.entry("long", 1, when=turnGreen)
  
strategy.entry("short", 0, when=turnRed) 

Fechar posições em sinais opostos.

strategy.close("long", when=turnRed)

Ao detectar mudanças de cor da vela HA, a estratégia captura pontos de reversão de preço para negociação de reversão.

Vantagens

As principais vantagens desta estratégia são:

  1. O uso de velas de HA melhoradas filtra o ruído e identifica as reversões com mais clareza.

  2. Lógica simples baseada na mudança de cor HA, fácil de entender e implementar.

  3. A negociação de reversão capta as mudanças de tendência rapidamente para lucro.

  4. Personalizável para usar velas HA ou não para diferentes mercados.

  5. As setas do candelabro indicam visualmente reversões.

  6. Parâmetros como o prazo podem ser otimizados para diferentes produtos.

Riscos

Há também alguns riscos a ter em conta:

  1. O reversal de negociação pode ser vulnerável a armadilhas.

  2. Podem ocorrer falhas frequentes em mercados variados.

  3. Incapaz de determinar a duração da tendência, pode reverter e continuar a tendência.

  4. Indicador único propenso a sinais falsos, deve ser combinado com outros.

  5. A superação deve ser evitada através da otimização.

Soluções:

  1. Otimizar os parâmetros para sinais fiáveis.

  2. Adicionar um filtro de tendência para evitar mercados variados.

  3. Utilize o stop loss para controlar a perda por transação.

  4. Confirmar sinais com outros indicadores para evitar sinais falsos.

  5. Testes antecipados minuciosos para otimizar os parâmetros e evitar a sobreajuste.

Melhoria

A estratégia pode ser melhorada das seguintes formas:

  1. Otimizar o prazo para diferentes produtos.

  2. Ensaiar a utilização de velas HA por características do produto.

  3. Adicione um filtro de tendência para evitar falhas nos mercados variáveis.

  4. Implementar paradas dinâmicas com base na volatilidade do mercado.

  5. Confirmar sinais com indicadores adicionais.

  6. Incorporar o dimensionamento das posições com base na gestão do risco.

  7. Expandir para a negociação de arbitragem de vários produtos.

  8. Ajustar os parâmetros com base nos resultados do backtest para evitar o sobreajuste.

Conclusão

Esta estratégia aproveita os pontos fortes das velas HA aprimoradas para descobrir pontos de reversão potenciais através de mudanças de cor HA. Em comparação com velas normais, HA filtra ruído para sinais mais limpos. A estratégia implementa a lógica de negociação de reversão de uma forma simples e intuitiva que é fácil de usar para negociação ao vivo. Mas os negócios de reversão enfrentam riscos de armadilha e devem ser otimizados para maior precisão do sinal. Combinando com análise de tendências e outros fatores pode formar um sistema mais completo.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Heikin-Ashi Change Strategy", overlay=true)

UseHAcandles    = input(true, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

// Calculation HA Values 
haopen = 0.0
haclose = (haOpen + haHigh + haLow + haClose) / 4
haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2
hahigh = max(haHigh, max(haopen, haclose))
halow = min(haLow, min(haopen, haclose))

// HA colors
hacolor = haclose > haopen ? color.green : color.red

// Signals
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]

// Plotting
bgcolor(hacolor)

plotshape(turnGreen, style=shape.arrowup, location=location.belowbar, color=color.green)
plotshape(turnRed, style=shape.arrowdown, location=location.abovebar, color=color.red)

// Alerts
alertcondition(turnGreen, "ha_green", "ha_green")
alertcondition(turnRed, "ha_red", "ha_red")

strategy.entry("long", 1, when=turnGreen)
//strategy.entry("short", 0, when=turnRed)
strategy.close("long", when=turnRed)


Mais.