Estratégia de combinação de cruzamento da média móvel e do MACD

Autora:ChaoZhang, Data: 2023-10-24 13:51:02
Tags:

img

Resumo

Esta estratégia combina o sistema de cruzamento da média móvel e o indicador MACD para implementar uma estratégia de negociação automatizada que vai longo em períodos de tendência e tira lucro / pára em inversões de tendência.

Princípio

A estratégia é baseada principalmente na combinação do sistema de cruzamento da média móvel e do indicador MACD. Especificamente, ela vai longa quando a média móvel de curto prazo cruza a média móvel de longo prazo e vai curta quando a média móvel de curto prazo cruza abaixo da média móvel de longo prazo.

Ao mesmo tempo, o indicador MACD é usado para confirmar sinais de negociação. Somente quando a linha MACD DIFF cruza a linha DEA, um sinal longo será acionado. E uma vez que a linha DIFF cruza abaixo da linha DEA, a posição longa será fechada para um stop loss.

Além disso, o RSI é utilizado para evitar um curto-circuito excessivo, com uma posição curta iniciada apenas quando o RSI está abaixo de 30%.

Para os stop losses, a estratégia adota um método de trailing stop de percentagem fixa, com o stop loss longo definido a 1% abaixo do preço de entrada e o stop loss curto definido a 1% acima do preço de entrada.

Análise das vantagens

A maior vantagem desta estratégia é usar o sistema de média móvel para determinar a direção da tendência principal, em seguida, usar o indicador MACD para sinais de entrada, o que pode efetivamente filtrar falhas.

Além disso, o stop loss porcentual fixo e a tomada de lucro móvel ajudam a manter as perdas dentro de limites aceitáveis, garantindo lucros cedo quando possível.

Análise de riscos

Os principais riscos desta estratégia são:

  1. O sistema de cruzamento da média móvel tem problemas de atraso, o que pode levar a entrada atrasada e falta de melhores pontos de entrada.

  2. O indicador MACD é propenso a gerar sinais falsos. Outros filtros, como KDJ, podem ser adicionados.

  3. O stop loss de percentagem fixa às vezes não pode sair em tempo hábil.

  4. A estratégia pode ter grandes reduções, podendo o dimensionamento das posições ser reduzido para mitigar o risco.

  5. A estratégia só é de longa duração e não pode beneficiar de tendências descendentes.

Orientações de otimização

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Otimizar os parâmetros de MA para sinais mais precisos.

  2. Para efeitos de avaliação do risco, a instituição deve avaliar se o risco de reestruturação da posição em risco é reduzido.

  3. Testar métodos dinâmicos de stop loss, como trailing stops e ATR stops, para controlar melhor os riscos.

  4. Adicionar mecanismos de curto prazo para que a estratégia possa lucrar com tendências de queda.

  5. Otimizar o tamanho das posições e a gestão de fundos para reduzir a retirada máxima.

  6. Teste de desempenho em diferentes produtos e classes de ativos para ampliar a aplicabilidade.

  7. Incorporar algoritmos de aprendizagem de máquina para otimizar automaticamente os parâmetros e reduzir a intervenção manual.

Conclusão

Esta estratégia combina os pontos fortes do sistema de crossover de média móvel e do indicador MACD para alta lucratividade. Melhorias adicionais no ajuste de parâmetros, filtros adicionais, mecanismos de stop loss e mecanismos de curto prazo podem melhorar a estabilidade e reduzir os drawdowns. A incorporação de aprendizado de máquina também pode expandir a aplicabilidade.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-10-23 00:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Toxic_Cat_

//@version=5
// strategy("MA_50_200_CROSS", overlay=true, margin_long=100, margin_short=100)

EMA21 = ta.ema(close, 21)
EMA100 = ta.ema(close, 100)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

plot(EMA21)
plot(EMA100, color = color.orange)

openLong = ta.crossover(EMA21, EMA100) and macdLine > signalLine
openShort = ta.crossunder(EMA21, EMA100) and ta.rsi(close, 14) <= 33

crossunderMACD = ta.crossunder(macdLine, signalLine)


if (strategy.opentrades < 1)
    if openLong 
        strategy.entry("L",strategy.long, 1)

   if openShort
      strategy.entry("S",strategy.short, 1)

// slose long
// if ((strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.03) <= open) 
//     strategy.exit("profit L", "L", limit = close)

// else if strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.01 >= open or crossunderMACD
//     strategy.exit("loss L", "L", stop = close)

// slose short
// if (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03) >= open
//     strategy.exit("profit S", "S", limit = (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03))

// else if strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01 <= open
//    strategy.exit("loss S", "S", stop = (strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01))

















Mais.