Momentum Crossover Moving Average e MACD Filter Estratégia de velas Heikin-Ashi

Autora:ChaoZhang, Data: 2024-01-02 12:18:03
Tags:

img

Resumo

Esta estratégia utiliza a técnica de velas Heikin-Ashi combinada com sinais de cruzamento de média móvel e indicador MACD para filtragem para construir uma estratégia de tendência.

Estratégia lógica

A estratégia utiliza principalmente três grandes indicadores técnicos:

  1. Ele modifica o preço de fechamento para construir barras de candelabro "sem sombra", que podem exibir mais claramente as verdadeiras tendências de preços, filtrando o ruído excessivo do mercado.

  2. A EMA rápida captura tendências de curto prazo, enquanto a EMA lenta julga direções de tendência de longo prazo. Um sinal de compra é gerado quando a EMA rápida cruza acima da EMA lenta; Um sinal de venda é gerado quando a EMA rápida cruza abaixo da EMA lenta.

  3. Indicador MACD. Combina EMAs rápidas e lentas. Quando a linha MACD está acima da linha de sinal, é um sinal de alta; quando abaixo, é um sinal de baixa.

Os sinais de negociação desta estratégia vêm da cruz dourada / morta das EMAs rápidas e lentas. Para filtrar sinais falsos, o indicador MACD é introduzido para julgamento auxiliar. Somente quando o MACD dá um sinal que se alinha com o crossover da EMA, o sinal de negociação final será acionado, o que reduz muito a probabilidade de negócios errados.

Especificamente, quando a EMA rápida cruza acima da EMA lenta (cruz de ouro) e a linha MACD ultrapassa a linha de sinal (sinal de alta) simultaneamente, é gerado um sinal de compra; quando a EMA rápida cruza abaixo da EMA lenta (cruz morto) e a linha MACD ultrapassa a linha de sinal (sinal de baixa) ao mesmo tempo, é gerado um sinal de venda.

Esta combinação de cruzamento da média móvel e de filtragem MACD pode identificar eficazmente os principais pontos de inflexão no mercado e capturar as tendências dos preços em conformidade.

Vantagens

A estratégia apresenta as seguintes vantagens:

  1. A técnica de Heikin-Ashi oferece um julgamento de tendência mais claro, enquanto a força dos sinais de cruzamento dos dois EMAs também é poderosa.

  2. Risco de retirada relativamente pequeno. O MACD, servindo como indicador auxiliar, pode mitigar os riscos de stop-loss até certo ponto e reduzir eficazmente as perdas indesejadas de liquidação.

  3. Parâmetros mais ajustáveis. Os períodos dos candelabros de Heikin-Ashi, EMAs rápidos / lentos do sistema de média móvel, parâmetros do MACD etc. podem ser ajustados com base nas condições do mercado para tornar a estratégia mais adaptável.

  4. Implementação simples e clara. Usando velas Heikin-Ashi para denotar preços e auxiliado com indicadores comuns para determinação, é fácil de programar, com códigos limpos e concisos que são intuitivos de entender.

  5. Uma maior eficiência na utilização do capital. Seguindo a tendência, a maior parte do tempo a estratégia pode alinhar os movimentos de capital com a direcção principal do mercado e gerar rendimentos de forma mais eficaz.

Riscos

A estratégia apresenta igualmente os seguintes riscos potenciais:

  1. Quando os preços diferem significativamente ou revertem rapidamente no curto prazo, as medidas de stop loss podem falhar, incorrendo em perdas muito além das expectativas.

  2. Possibilidades de erro de julgamento do MACD. O MACD como indicador auxiliar também pode fazer chamadas erradas, resultando na estratégia estabelecendo ou fechando posições erroneamente.

  3. Configurações de parâmetros inflexíveis: as combinações de parâmetros fixos podem não se adaptar ao mercado em constante mudança, perdendo assim boas oportunidades de negociação.

  4. Métodos de seguimento de tendências podem induzir trocas frequentes, aumentando os custos e as perdas de deslizamento.

Para mitigar e reduzir os riscos acima referidos, podem ser adoptadas as seguintes medidas:

  1. Defina pontos de stop-loss para limitar as perdas em negociações individuais.

  2. Ajustar os parâmetros do MACD para diminuir as probabilidades de sinais incorretos.

  3. Construir mecanismos de otimização de parâmetros. empregar aprendizagem de máquina, etc. para ajustar automaticamente combinações de parâmetros para maior adaptabilidade.

  4. Relaxar adequadamente as condições de desencadeamento dos sinais de negociação para reduzir a frequência das negociações ou estabelecer limiares mínimos de variação de preços.

Optimização

Um grande potencial reside em uma maior otimização da estratégia, nomeadamente:

  1. Teste períodos mais longos ou mais curtos para encontrar os que melhor exibem as tendências do mercado.

  2. Ajustar os parâmetros do sistema da média móvel. Modificar os períodos das EMAs rápidas/lentas para descobrir conjuntos de parâmetros ideais.

  3. Optimização multiparâmetro do MACD. Ajuste de parâmetros dos EMAs rápidos/lentos e da linha de sinal do MACD para localizar configurações superiores.

  4. Reforçar os módulos de gestão de riscos, elaborar regras mais científicas de stop-loss/take-profit, integrar o dimensionamento das posições, a gestão de capital, etc.

  5. Adicionar outros indicadores como KD, RSI para confirmação multifatorial, melhorando a qualidade do sinal.

  6. Empregar técnicas de aprendizagem de máquina. Aproveitar redes neurais, algoritmos genéticos, etc. para otimizar em tempo real os parâmetros da estratégia para maior adaptabilidade.

Com combinações iterativas de indicadores técnicos, otimizações contínuas de parâmetros, módulos de controlo de riscos mais fortes, etc., pode-se esperar um aumento significativo do desempenho da estratégia para uma rendibilidade mais estável e eficiente.

Conclusão

Esta estratégia capta tendências de mercado combinando velas de Heikin-Ashi e crossovers médias móveis, auxiliados pela filtragem MACD para detectar pontos de virada de alta confiabilidade e sinais de negociação. Os resultados testados são excelentes, com vantagens como alta probabilidade de vitória, baixos drawdowns, alta capacidade de ajuste. Enquanto isso, o controle de risco também precisa de atenção aos impactos de hedge de movimentos extremos do mercado. Com melhorias contínuas e otimização, a estratégia demonstra grande potencial como uma estratégia de negociação quantitativa altamente eficaz.


/*backtest
start: 2022-12-26 00:00:00
end: 2024-01-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Heikin Ashi Strategy  V1 by nachobuey

strategy("Heikin Ashi Strategy  V2",shorttitle="HAS V2",overlay=true)
res = input(title="Heikin Ashi Candle Time Frame",  defval="15")
hshift = input(0,title="Heikin Ashi Candle Time Frame Shift")
//res1 = input(title="Heikin Ashi EMA Time Frame", type=resolution, defval="180")
res1   = input(title="Time frame (Minutes. Not lower than chart)",defval="300")
mhshift = input(0,title="Heikin Ashi EMA Time Frame Shift")
fama = input(16,"Heikin Ashi EMA Period")
test = input(0,"Heikin Ashi EMA Shift")
sloma = input(21,"Slow EMA Period")
slomas = input(0,"Slow EMA Shift")
macdf = input(false,title="With MACD filter")
res2 = input(title="MACD Time Frame",  defval="60")
macds = input(1,title="MACD Shift")




//Heikin Ashi Open/Close Price
ha_t = heikinashi(syminfo.tickerid)
ha_open = request.security(ha_t, res, open[hshift])
ha_close = request.security(ha_t, res, close[hshift])
mha_close = request.security(ha_t, res1, close[mhshift])

//macd
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
macdl = request.security(ha_t,res2,macdLine[macds])
macdsl= request.security(ha_t,res2,signalLine[macds])

//Moving Average
fma = ema(mha_close[test],fama)
sma = ema(ha_close[slomas],sloma)
plot(fma,title="MA",color=lime,linewidth=2,style=line)
plot(sma,title="SMA",color=red,linewidth=2,style=line)


//Strategy
golong =  crossover(fma,sma) and (macdl > macdsl or macdf == false )
goshort =   crossunder(fma,sma) and (macdl < macdsl or macdf == false )


strategy.entry("Long",strategy.long,when = golong)
strategy.entry("Short",strategy.short,when = goshort)

plotchar(golong,char="L", color=green)
plotchar(goshort,char="S", color=red)

alertcondition(golong, "HAS GO LONG", "OPEN LONG")
alertcondition(goshort, "HAS GO SHORT", "OPEN SHORT")



Mais.