Estratégia MACD de vários prazos

Autora:ChaoZhang, Data: 2023-11-28 15:33:35
Tags:

img

Resumo

A Estratégia MACD Multi Timeframe é uma estratégia quantitativa de negociação que rastreia tendências usando o indicador MACD em vários prazos.

Estratégia lógica

A lógica central desta estratégia é calcular a situação de cruzamento do indicador MACD em vários prazos (3 minutos, 5 minutos, 15 minutos, 30 minutos). Em primeiro lugar, o indicador MACD é calculado em cada período de tempo para julgar a tendência de preço (para cima ou para baixo) sob esse período de tempo.

  1. Quando os preços aumentam em todos os prazos, um sinal de compra é gerado.
  2. Quando os preços caem em todos os prazos, um sinal de venda é gerado.

Ao julgar a tendência em diferentes prazos, o ruído do mercado a curto prazo pode ser efetivamente filtrado, tornando os sinais de negociação mais confiáveis.

Vantagens

Esta estratégia tem as seguintes vantagens:

  1. A detecção de tendências em diferentes prazos filtra o ruído e torna os sinais de negociação mais confiáveis.
  2. Os parâmetros do indicador MACD podem ser personalizados para se adequarem a diferentes ambientes de mercado.
  3. Os prazos para o julgamento global podem ser configurados de forma flexível para definir as regras de negociação de forma independente.

Riscos e soluções

Esta estratégia apresenta igualmente os seguintes riscos:

  1. Quando se julga a consistência da tendência em todos os prazos, podem ser ignoradas reversões locais.
  2. A configuração inadequada dos parâmetros MACD pode levar a um mau desempenho do sinal de negociação.

Soluções correspondentes:

  1. As regras de julgamento podem ser moderadamente relaxadas para permitir que as inversões de preços em prazos individuais aproveitem mais oportunidades.
  2. Os parâmetros do MACD devem ser ajustados de acordo com os diferentes mercados para tornar os sinais de negociação mais adequados às tendências atuais.

Orientações de otimização

Esta estratégia pode ser melhorada nos seguintes aspectos:

  1. Aumentar ou diminuir o número de prazos necessários para um julgamento abrangente para encontrar a combinação ideal.
  2. Teste diferentes definições dos parâmetros do indicador MACD.
  3. Ajustar regras específicas de entrada e saída com base nos resultados reais dos backtesting.

Resumo

A Estratégia MACD Multi Timeframe utiliza a capacidade de julgamento de tendência do indicador MACD para detectar movimentos de preços em intervalos de tempo, o que pode efetivamente filtrar o ruído e melhorar a qualidade do sinal.


/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy", overlay=false)

TF_1_time = input("3", "Timeframe 1")
TF_2_time = input("5", "Timeframe 2")
TF_3_time = input("15", "Timeframe 3")
TF_4_time = input("30", "Timeframe 4")

fastLen = input(title="Fast Length",  defval=12)
slowLen = input(title="Slow Length",  defval=26)
sigLen  = input(title="Signal Length",  defval=9)
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)

width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor

TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short)
    
strategy.close("MTF_Long", when=exitCondition_Long)    
strategy.close("MTF_Short", when=exitCondition_Short)

Mais.