
A estratégia baseia-se no histograma do indicador MACD para tomar decisões de negociação. Utiliza a tendência ascendente e a tendência descendente do histograma para gerar sinais de compra e venda.
A estratégia usa a linha rápida, a linha lenta e o histograma dos indicadores MACD. Primeiro, calcula-se a EMA da linha rápida e a EMA da linha lenta. Em seguida, a linha rápida é subtraída da linha lenta para obter o MACD, e o MACD é subtraído da sua média móvel.
Quando o Histogram continua a subir e atinge o seu ciclo, gera um sinal de compra. Isso indica que o MACD está acelerando para cima e quebrando sua linha de sinal, prevendo que o preço pode subir.
Quando o histograma de tendências de queda contínua atinge um período definido, gera um sinal de venda. Isso significa que o MACD está acelerando para baixo e quebrando sua linha de sinal, prevendo que o preço possa cair.
A estratégia tem as seguintes vantagens:
O MACD Histogram é uma ferramenta de tendência para capturar os pontos de inflexão dos preços e aumentar a probabilidade de lucro.
A combinação de condições de ciclo com um Histogram em ascensão ou descensão contínua pode filtrar parte da transação de ruído e reduzir perdas desnecessárias.
Permite personalizar os parâmetros MACD e o ciclo de tendência do Histograma, que pode ser ajustado para adaptar-se a diferentes variedades e períodos de negociação.
A lógica da estratégia é simples e clara, fácil de entender e modificar, e também é fácil de usar com outros indicadores ou combinações de estratégias.
A estratégia também apresenta alguns riscos:
Quando o preço está na faixa de oscilação, pode produzir sinais errôneos, que necessitam de filtragem em combinação com indicadores de tendência.
Depois que o histograma sobe ou desce, a linha MACD pode não ser capaz de quebrar a linha de sinal, não pode obter lucro para sair, e precisa de um stop loss para controlar o risco.
Os ganhos em tempo real podem ser reduzidos sem considerar os custos de transação e os pontos de deslizamento.
A configuração de parâmetros (como o ciclo MACD, o ciclo de tendência do histograma, etc.) imprópria pode levar a uma falha na eficácia da estratégia, necessitando de otimização para variedades e períodos.
Estes riscos podem ser controlados e reduzidos por meio de combinações com indicadores de tendência, configuração de mecanismos de parada de perdas e parâmetros de otimização.
A estratégia pode ser otimizada em várias direções:
Combine com outros indicadores para avaliar a direção geral da tendência, evitando oscilações de negociação. Por exemplo, a linha de 20 dias para avaliar a tendência da linha média e longa.
Aumentar o mecanismo de suspensão. Por exemplo, o MACD é interrompido quando a linha de sinalização cai novamente.
Optimizar os parâmetros MACD para variedades com diferentes ciclos. Por exemplo, os parâmetros de ciclo podem ser reduzidos para dados de alta frequência.
Otimizar o número mínimo de ciclos de ascensão ou descensão contínua do histograma, equilibrando a frequência e a confiabilidade do sinal.
A lógica da estratégia de rastrear o sinal após o fracasso da tentativa de breakout.
Combinação com outros indicadores, como o indicador de energia, o indicador de volatilidade, etc. para avaliar o calor do mercado e filtrar os sinais.
A estratégia de Histogram Trend do MACD capta as mudanças de tendência do Histogram e permite o julgamento de pontos de inflexão de mudanças de preço. Combinado com a otimização de parâmetros e o julgamento de indicadores combinados, pode efetivamente eliminar sinais errados. O Histogram do MACD é uma ferramenta auxiliar de julgamento muito importante na negociação quantitativa, a estratégia fornece um pensamento comercial simples e prático.
/*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)