
A estratégia usa o HA para calcular a abertura, a alta, a baixa e a queda da linha K, e determina a cor final da linha K de acordo com a relação entre os preços. Quando o preço sobe, é representado por uma linha em forma de coluna verde, e quando o preço desce, é representado por uma linha em forma de coluna vermelha. A estratégia HA usa a mudança da cor da linha em forma de coluna como sinal de negociação, fazendo zero quando verde fica vermelho e fazendo mais quando vermelho fica verde, e é uma estratégia de inversão típica.
A lógica central da estratégia consiste em calcular a mudança de cor da linha HA para determinar a inversão de preço.
Em primeiro lugar, o valor da linha K é calculado de acordo com a opção de entrada para usar ou não o HA. Se selecionado, o preço de abertura, alta e baixa é obtido a partir dos dados do HA; Se não for usado, é obtido diretamente a partir dos dados originais da linha K.
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
Em seguida, o preço de abertura e de fechamento do ciclo de HA é obtido de acordo com a fórmula de cálculo do HA.
haclose = (haOpen + haHigh + haLow + haClose) / 4
haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2
O preço de venda é calculado de acordo com o preço de abertura e de fechamento da HA.
hahigh = max(haHigh, max(haopen, haclose))
halow = min(haLow, min(haopen, haclose))
De acordo com a relação de preços de abertura e receita do HA, a cor da linha colunária do HA neste período.
hacolor = haclose > haopen ? color.green : color.red
A inversão de preço é determinada pela mudança de cor de HA em dois ciclos consecutivos.
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]
Quando ocorrem os sinais de compra e venda, as posições de compra e venda são abertas separadamente.
strategy.entry("long", 1, when=turnGreen)
strategy.entry("short", 0, when=turnRed)
A posição é fechada quando o sinal de contração ocorre.
strategy.close("long", when=turnRed)
Assim, através da determinação da variação da cor da linha HA, pode-se capturar o ponto de reversão de preço e executar uma estratégia de reversão de negociação.
A estratégia tem as seguintes vantagens:
O uso de melhorias no cálculo da linha K do HA permite filtrar parte do ruído e identificar com mais clareza os pontos de reversão da tendência.
A lógica da estratégia é simples, clara e fácil de entender.
O método de negociação inversa permite capturar a mudança de tendência em tempo hábil e obter lucros mais rápidos.
É possível configurar se os dados da linha K são calculados com o HA ou não, e pode ser adaptado para diferentes mercados.
O gráfico da forma indica candle para facilitar a visualização do ponto de reversão do preço.
Pode ser ajustado por parâmetros de otimização, como o ciclo de negociação, para diferentes variedades.
A estratégia também apresenta alguns riscos que devem ser lembrados:
A negociação de reversão pode ser manipulada, e é necessário garantir que o sinal de reversão seja suficientemente confiável.
Em mercados turbulentos, os sinais de inversão podem ocorrer com frequência, causando sobre-negociação.
Não é possível determinar a duração da tendência, o que pode causar prejuízos ao continuar a tendência original após a reversão.
Indicadores individuais são suscetíveis a falsas rupturas e devem ser usados em combinação com outros indicadores.
Verificar se os parâmetros foram otimizados para evitar a sobre-configuração.
Resolução:
Optimizar os parâmetros para garantir a estabilidade e a confiabilidade do sinal de negociação.
A partir de agora, os investidores poderão investir em ações de alta volatilidade, combinando filtragem de tendências com a prevenção de mercados turbulentos.
O sistema de cessação de prejuízos e o controle de perdas individuais.
A combinação de outros indicadores é confirmada para evitar falsos sinais.
Otimizar os parâmetros para evitar o excesso de ajuste.
A estratégia pode ser melhorada em vários aspectos:
Optimizar os parâmetros do ciclo de negociação para adaptar-se às características de diferentes variedades.
Testes com valores de HA, selecionados de acordo com as características da variedade de transação.
Aumentar as condições de filtragem de tendências para evitar a reversão de mercados de baixa volatilidade.
Estabeleça um stop loss dinâmico e ajuste o seu ponto de parada de acordo com as flutuações do mercado.
Em combinação com outros indicadores, os sinais de transação são confirmados.
Adicionar estratégias de gestão de fundos e ajustar posições.
Expansão de arbitragem multivariada.
Para evitar a sobre-configuração, os parâmetros devem ser ajustados de acordo com os resultados das análises.
Esta estratégia utiliza a vantagem de melhorar a linha média de HA para descobrir possíveis pontos de reversão de preços através da determinação da mudança de cor da linha HA. Em comparação com o uso direto da linha K, a linha média de HA pode filtrar parte do ruído e o sinal de reversão é mais claro. A estratégia implementa a estratégia de negociação de reversão de forma simples e intuitiva, a lógica é simples e clara e é fácil de operar em disco.
/*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)