Estratégia MACD de vários períodos de tempo


Data de criação: 2023-11-28 15:33:35 última modificação: 2023-11-28 15:33:35
cópia: 0 Cliques: 1201
1
focar em
1617
Seguidores

Estratégia MACD de vários períodos de tempo

Visão geral

A estratégia MACD de multi-tempo é uma estratégia de negociação quantitativa que utiliza o indicador MACD para realizar o acompanhamento de tendências em vários períodos de tempo. A estratégia emite um sinal de negociação calculando o indicador MACD em diferentes períodos de tempo (de 3 minutos, 5 minutos, 15 minutos e 30 minutos) para determinar se a movimentação de preços entre os diferentes períodos é consistente.

Princípio da estratégia

A lógica central da estratégia é calcular a interseção do MACD em vários períodos de tempo: 3 minutos, 5 minutos, 15 minutos e 30 minutos. Primeiro, o MACD é calculado em cada período de tempo e, de acordo com o MACD, os preços subiram ou caíram nesse período de tempo.

  1. Quando os preços sobem em todos os quadros temporais, geram um sinal de compra;
  2. Quando os preços caem em todos os quadros de tempo, um sinal de venda é gerado.

A análise de tendências por meio de quadros de tempo permite eliminar o ruído do mercado de curto prazo e tornar os sinais de negociação mais confiáveis.

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. Detecção de tendências em intervalos de tempo, filtrando o ruído e tornando os sinais de negociação mais confiáveis;
  2. Os parâmetros do indicador MACD podem ser customizados para se adaptar a diferentes condições de mercado;
  3. A configuração flexível requer um prazo de julgamento abrangente e regras de negociação personalizadas.

Riscos estratégicos e soluções

A estratégia também apresenta os seguintes riscos:

  1. A tendência para o crescimento da população em todos os quadros temporais pode ter sido uma oportunidade perdida para uma reversão local.
  2. A configuração incorreta dos parâmetros do indicador MACD pode causar uma má eficácia do sinal de negociação.

Solução:

  1. A flexibilidade apropriada das regras de arbitragem global permitirá a reversão dos preços em cada período de tempo, aproveitando mais oportunidades;
  2. A necessidade de ajustar os parâmetros do indicador MACD de acordo com os diferentes mercados para que os sinais de negociação sejam mais adequados à atual situação.

Direção de otimização

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Aumentar ou diminuir o número de prazos necessários para o julgamento integrado, procurando a melhor combinação;
  2. Teste diferentes configurações de parâmetros do MACD;
  3. Adaptar as regras de entrada e saída específicas de acordo com a situação real.

Resumir

A estratégia MACD de quadros temporais múltiplos utiliza a função de determinação de tendências do indicador MACD, permitindo a detecção de movimentos de preços em quadros temporais, filtrando efetivamente o ruído e melhorando a qualidade do sinal. A estratégia pode ser ajustada com parâmetros e regras de otimização, adaptando-se flexivelmente a diferentes variedades e condições de mercado, com uma forte praticidade.

Código-fonte da estratégia
/*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)