
Esta estratégia é uma estratégia de negociação de inversão de dinâmica baseada no MACD. Ela gera o MACD calculando a diferença entre a média móvel rápida e a média móvel lenta. Quando o MACD é positivo, gera um sinal de venda; Quando o MACD é negativo, gera um sinal de compra.
O indicador central desta estratégia é o MACD, que é composto por uma média móvel rápida, uma média móvel lenta e uma linha de sinalização. Primeiro, calcula-se a EMA rápida e a EMA lenta, com o parâmetro EMA rápido definido como 12 dias e o parâmetro EMA lento definido como 26 dias, e depois calcula-se o diferencial entre os dois como o indicador MACD. O indicador MACD reflete a tendência de mudança do preço das ações através do conceito de dinâmica.
Para filtrar o ruído, a estratégia introduz um indicador de linha de sinal, para um tratamento adicional de suavização do MACD. O parâmetro da linha de sinal é definido como o EMA de 9 dias. Finalmente, o diferencial entre o MACD e a linha de sinal é calculado como um sinal de negociação.
As principais vantagens desta estratégia são:
O indicador MACD é usado para determinar os pontos de reversão do preço das ações, capturando oportunidades de reversão de curto prazo.
Combinado com o processamento suave da linha de sinal, filtra parte do sinal de troca de ruído, reduzindo o falso sinal.
Os parâmetros da estratégia são definidos livremente, o comerciante pode ajustar os parâmetros de acordo com a situação real, respondendo de forma flexível às mudanças do mercado.
A lógica de cálculo é simples, clara e fácil de entender, apropriada para iniciantes em pesquisa.
A combinação de indicadores e sinais é variada, com amplo espaço para otimização de estratégias e uma forte escalabilidade.
A estratégia também apresenta alguns riscos:
A frequência de negociação e os custos de negociação podem ser aumentados devido ao rastreamento de reversões de curto prazo nos preços das ações.
Os indicadores MACD são propensos a produzir falsos sinais durante a ascensão ou queda unilateral do preço das ações por um longo período.
Se os parâmetros não forem corretos, o sinal gerará atraso e poderá perder o melhor ponto de entrada.
A estratégia é simples, e os efeitos de negociação são reduzidos em condições de mercado complexas.
Os riscos acima mencionados podem ser melhorados através do seguinte:
Parâmetros de otimização para reduzir a frequência de negociação. Por exemplo, aumentar o parâmetro de ciclo da linha de sinal.
Aumentar as condições de filtragem para evitar o encurralamento nas tendências de longo prazo. Por exemplo, combinando outros indicadores de rastreamento para determinar as tendências de longo prazo.
Use a lista de preços para encontrar o melhor preço.
Adicionar mais fatores para julgar o estado do mercado e evitar transações em mercados anormais.
Esta estratégia pode ser melhorada nos seguintes aspectos:
Optimizar os parâmetros MACD e os parâmetros da linha de sinal para encontrar a melhor combinação de parâmetros.
Adicionar outros indicadores auxiliares para avaliar tendências de curto e longo prazo, evitando negociações adversas. Por exemplo, adicionar indicadores de médias móveis, indicadores de Bollinger Bands, etc.
Combinação de indicadores de volume de transação, como o indicador de maré de energia, para evitar brechas falsas.
Para uma estratégia mais adaptável, os parâmetros são agrupados de acordo com as características de cada ação.
Aumentar a definição de preços de stop loss e de stop-loss e controlar os níveis de perdas e lucros individuais.
Avaliar a qualidade das ações, por exemplo, indicadores financeiros, mudanças de classificação, etc.
Essas iniciativas de otimização podem aumentar a estabilidade, a taxa de vitória e o nível de lucro da estratégia. Além disso, também estabelecem a base para o desenvolvimento e a melhoria contínua da estratégia.
Esta estratégia é uma típica estratégia de negociação de reversão de curto prazo. Ela usa um indicador simples e claro do MACD para refletir as mudanças no volume de ações, auxiliado por uma linha de sinal para determinar pontos de entrada específicos.
É claro que qualquer indicador único e estratégia simples não se adaptam perfeitamente a uma variedade de situações de mercado complexas. Os investidores devem estar atentos aos riscos, escolher estratégias de acordo com suas próprias situações e preferências de risco, além de estar constantemente atentos ao comportamento do mercado, otimizar os parâmetros da estratégia e as regras de negociação.
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//study(title="MACD Strategy by Sedkur", shorttitle="MACD Strategy by Sedkur")
strategy (title="MACD Strategy by Sedkur", shorttitle="MACD 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)
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)
strategy.entry("buy", strategy.long, comment="buy", when = hist[1] <= hist and buyh<=hist and year>=dyear)
strategy.entry("sell", strategy.short, comment="sell", when = hist[1] >= hist and sellh>=hist and year>=dyear)