Esta estratégia toma decisões de negociação com base na tendência do histograma MACD

Autora:ChaoZhang, Data: 2024-01-25 14:31:57
Tags:

img

Resumo

Esta estratégia faz decisões de negociação com base na tendência do Histograma MACD. Utiliza as tendências ascendentes e descendentes do Histograma para gerar sinais de compra e venda.

Estratégia lógica

A estratégia usa a linha rápida, linha lenta e Histograma do indicador MACD. Primeiro calcule a EMA rápida e a EMA lenta. Em seguida, subtraia a EMA lenta da EMA rápida para obter MACD e subtraia o sinal que é a média móvel do MACD para obter o Histograma.

Quando o histograma continua a subir durante o período definido, um sinal de compra é gerado.

Quando o histograma continua a diminuir durante o período definido, um sinal de venda é gerado.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. Utilizando a característica de tendência do histograma MACD, pode capturar os pontos de virada das mudanças de preços e aumentar a lucratividade.

  2. Combinando com a condição de subida ou queda consecutiva do Histograma, algumas negociações ruidosas podem ser filtradas para reduzir perdas desnecessárias.

  3. Permitindo a personalização dos parâmetros do MACD e do período de tendência do histograma, ele pode ser ajustado para atender a diferentes produtos e sessões de negociação.

  4. A lógica da estratégia é simples e clara, fácil de compreender e modificar, e também conveniente de combinar com outros indicadores ou estratégias.

Análise de riscos

A estratégia apresenta também alguns riscos:

  1. Os indicadores de tendência precisam ser combinados para filtrar.

  2. Após o Histograma subir ou cair, a linha MACD pode não conseguir atravessar a linha de sinal, incapaz de sair lucrativamente.

  3. O custo de negociação e o deslizamento não são considerados.

  4. Configurações incorretas de parâmetros (por exemplo, período MACD, período de tendência do histograma) podem piorar o desempenho da estratégia.

Estes riscos podem ser controlados e reduzidos através de métodos como a combinação com indicadores de tendência, a definição de um mecanismo de stop loss, a otimização de parâmetros, etc.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Combinar outros indicadores para determinar a direcção geral da tendência, evitando a negociação em intervalos oscilantes.

  2. Adicionar um mecanismo de stop loss, por exemplo, stop loss quando o MACD quebra novamente a linha de sinal para baixo.

  3. Otimizar os parâmetros do MACD para se adequarem aos produtos de diferentes frequências, por exemplo, reduzir os parâmetros de período para dados de alta frequência.

  4. Otimizar o período mínimo de ascensão ou queda consecutiva do histograma, equilibrando a frequência e a confiabilidade do sinal.

  5. Tente a lógica dos sinais de rastreamento após falha de fuga, ou seja, o sinal de rastreamento reverso após a inversão do histograma.

  6. Combinar outros indicadores, como indicadores de volume ou volatilidade, para avaliar o calor do mercado e os sinais de filtragem.

Conclusão

Em conclusão, a estratégia de tendência do histograma do MACD realiza o julgamento dos pontos de virada da mudança de preço capturando as mudanças de tendência do histograma. Combinando a otimização de parâmetros e indicadores de combinação pode efetivamente filtrar sinais errados. Como uma importante ferramenta de julgamento auxiliar na negociação quantitativa, esta estratégia fornece uma idéia de negociação simples e prática usando o histograma do MACD.


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

//@version=4
//study(title="Histogram Strategy by Sedkur", shorttitle="Histogram Strategy by Sedkur")
strategy (title="Histogram Trends Strategy by Sedkur", shorttitle="Histogram Trends Strategy by Sedkur")


/// Getting inputs
dyear = input(title="Year", type=input.integer, defval=2017, minval=1950, maxval=2500)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
hist_length = input(title="Trend of Histogram Number", type=input.integer, defval=1, minval=1, maxval=100)
//buyh = input(title="Buy histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
//sellh = input(title="Sell histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

/// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
//plot(macd, title="MACD", color=col_macd, transp=0)
//plot(signal, title="Signal", color=col_signal, transp=0)

//bullish = hist[1] <= hist and buyh<=hist?true:false
//bearish = hist[1] >= hist and sellh>=hist?true:false
bull=0
bear=0


for i=0 to hist_length
    if (hist[i+1] <= hist[i])
        bull:=bull+1
bullish = bull==hist_length+1?true:false   

for j=0 to hist_length
    if (hist[j+1] >= hist[j])
        bear:=bear+1
bearish = bear==hist_length+1?true:false 



//bullish = hist[1] <= hist and hist[2] <= hist and hist[3] <= hist and hist[4] <= hist and hist[5] <= hist?true:false
//bearish = hist[1] >= hist and hist[2] >= hist and hist[3] >= hist and hist[4] >= hist and hist[5] >= hist?true:false

strategy.entry("buy", strategy.long, comment="buy", when = bullish and year>=dyear)
strategy.entry("sell", strategy.short, comment="sell", when = bearish and year>=dyear)


Mais.