Estratégia de cruzamento de MMA múltiplos

Autora:ChaoZhang, Data: 21 de setembro de 2023 12:12:56
Tags:

Resumo

Esta estratégia combina EMAs de 8 dias, 13 dias, 21 dias e 55 dias e gera sinais longos e curtos quando ocorre um cruzamento entre eles, visando captar tendências de médio e longo prazo.

Estratégia lógica

  1. Calcular as EMA de 8 dias, 13 dias, 21 dias e 55 dias.

  2. Quando as EMAs de 8 dias, 13 dias e 21 dias cruzarem acima da EMA de 55 dias, o sinal longo é acionado.

  3. Quando as EMAs de 8 dias, 13 dias e 21 dias cruzarem abaixo da EMA de 55 dias, o sinal curto é acionado.

  4. Vai longo na cruz de ouro, vai curto na cruz da morte.

  5. Posição próxima no cruzamento de marcha atrás.

Análise das vantagens

  1. Múltiplas combinações de EMA eficazes na filtragem de falsas rupturas.

  2. A EMA de 55 dias como âncora evita ficar presa.

  3. O backtest mostra rendimentos anuais constantes nos últimos 10 anos.

  4. Crossover visual, fácil de operar, amigável para iniciantes.

Análise de riscos

  1. Os parâmetros fixos podem não corresponder a todos os produtos e mercados, sendo necessária uma otimização independente.

  2. Ineficaz em mercados variados, corre o risco de acidentes e paradas frequentes.

  3. Não há stop loss incapaz de limitar a perda de uma única transação.

  4. A frequência de negociação pode ser muito alta ou baixa, precisando de ajustes nos parâmetros.

  5. Amostra de 10 anos limitada, precisamos de dados maiores para verificar a robustez.

Orientações de otimização

  1. Teste combinações de períodos EMA para encontrar a melhor correspondência.

  2. Adicione o filtro de volume para evitar falsos escapes.

  3. Implementar stop loss fixo ou móvel.

  4. Otimizar o dimensionamento das posições para reduzir o risco por transação.

  5. Troque os lados longo e curto.

  6. Expandir os testes para mais produtos e um prazo mais longo.

Resumo

Esta estratégia identifica tendências de médio e longo prazo usando cruzes EMA de forma visual intuitiva. Os pontos fortes são a visibilidade e simplicidade. Mas os parâmetros precisam de mais otimização e não têm controle de risco. Mais indicadores técnicos devem ser introduzidos para filtrar sinais e paradas adicionadas para limitar as perdas. Também requer grandes backtests de amostra em produtos e tempo para refinar e verificar, para se tornar um sistema robusto de tendência.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 6h
basePeriod: 15m
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/
// © ColinMccann18
//@version=4

// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// --------------------------------------------------------------RULES------------------------------------------------------------------------------
// - VISUALLY REPRESENTS THE CROSSING OF 8,13,21,55 EMA'S FROM KROWNS PROGRAM 
strategy(title="CM EMA Trend Cross STRAT", shorttitle="CM EMA Strat", overlay=true)

ema8  = ema(close,8)
ema13 = ema(close, 13)
ema21 = ema(close, 21)
ema55 = ema(close, 55)

//PLOT
plot(ema8,  title="EMA 1",linewidth=2, color=#00eeff)
plot(ema13, title="EMA 2",linewidth=2, color=#fff900)
plot(ema21, title="EMA 3",linewidth=2, color=#42ff0f)
plot(ema55, title="EMA 4",linewidth=2, color=#8b49ff)

//LOGIC---------------------------------------------------------------------------------------------------------------------------------
emacrossover = crossover(ema21, ema55) and ema8 and ema13 > ema55
emacrossunder = crossunder(ema21, ema55) and ema8 and ema13 < ema55

//Long----------------------------------------------------------------------------------------------------------------------------------
longCondition = emacrossover
closelongCondition = emacrossunder

strategy.entry("Long", strategy.long, qty=na, when=longCondition)
strategy.close("Close Long", when=closelongCondition)

//Short----------------------------------------------------------------------------------------------------------------------------------
shortCondition = emacrossunder
closeshortCondition = emacrossover

strategy.entry("Short", strategy.short,qty=na, when=shortCondition)
strategy.close("Close Short", when=closeshortCondition)



Mais.