Estratégia de cruzamento da média móvel de inversão de tendência precisa

Autora:ChaoZhang, Data: 2024-01-22 12:14:29
Tags:

img

Resumo

Esta estratégia é chamada de Golden Cross Death Cross Strategy. Sua ideia central é capitalizar os poderosos sinais gerados pela cruz de ouro e cruz de morte de duas médias móveis de diferentes prazos para capturar inversões de tendência no mercado e lucrar com compras baixas / vendas altas.

Estratégia lógica

Nesta estratégia, nós calculamos as linhas de média móvel simples (SMA) de 50 períodos e 200 períodos. Tradicionalmente, quando a SMA de 50 dias cruza abaixo da SMA de 200 dias, é chamada de cruz de morte, o que sinaliza uma perspectiva de baixa.

A lógica de negociação é simplesmente tomar posições baseadas nesses sinais - curto na cruz da morte e longo na cruz dourada.

Além disso, a estratégia fornece intervalos de datas personalizáveis para backtests. para que possamos examinar a eficácia real desses sinais cruzados em diferentes períodos.

Vantagens

  1. Captura eficazmente pontos de inversão de tendência para posições abertas perto de áreas-chave
  2. A combinação de duas SMAs de períodos diferentes filtra sinais falsos
  3. O recurso de backtesting examina o desempenho real em todos os regimes de mercado
  4. Gráficos limpos exibem visualmente sinais de cruzamento e mudanças de posição

Riscos

  1. A SMA cruza reversões extremas e não pode prevê-las
  2. Os dados dos testes de regresso podem diferir do desempenho em tempo real devido a custos e deslizamentos
  3. As selecções de parâmetros como os períodos SMA afetam muito os resultados
  4. Precisa incorporar fundamentos e técnicas, não apenas negociação mecânica

Para lidar com os riscos, podemos otimizar parâmetros, adicionar filtros, gerenciar riscos, negociar a estratégia, etc. para minimizar riscos.

Oportunidades de melhoria

As principais formas de otimizar esta estratégia incluem:

  1. Teste de SMAs de diferentes combinações de períodos
  2. Adicionando filtros como volume, volatilidade para evitar problemas
  3. Incorporar dados económicos ou notícias para filtro
  4. Implementar mecanismos de stop loss como movimentos/paradas de tempo
  5. Avaliação do desempenho durante diferentes períodos de detenção

Ao examinar os impactos dos parâmetros, podemos descobrir melhores sistemas de cruzamento de médias móveis.

Conclusão

Esta estratégia aproveita o indicador técnico clássico de cruzes médias móveis para capturar pontos de inflexão chave nos mercados. Com lógica simples e recursos de backtest convenientes, ele pode ajudar no rastreamento de tendências como parte de um sistema mais amplo.


/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[S_R__9] - Death and Golden Cross", overlay=true)

// Specific Time Date Range For Backtest
startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31, group='DATE CONFIG')
startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12, group='DATE CONFIG')
startYear = input.int(title='Start Year', defval=2023, minval=1800, maxval=2100, group='DATE CONFIG')

endDate = input.int(title='End Date', defval=31, minval=1, maxval=31, group='DATE CONFIG')
endMonth = input.int(title='End Month', defval=12, minval=1, maxval=12, group='DATE CONFIG')
endYear = input.int(title='End Year', defval=2023, minval=1800, maxval=2100, group='DATE CONFIG')

SPECIFIC_DATE = input.bool(title='USE SPECIFIC DATE ?', defval=false, group='DATE CONFIG')

inDateRange = SPECIFIC_DATE ? time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0) and time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0) : true

// Calculate 50 SMA and 200 SMA
sma50 = ta.sma(close, 50)
sma200 = ta.sma(close, 200)

// Detect a Death Cross (50 SMA crossing below 200 SMA)
deathCross = ta.crossunder(sma50, sma200)
// Detect a Golden Cross (50 SMA crossing above 200 SMA)
goldenCross = ta.crossover(sma50, sma200)

// Strategy Execution
if (inDateRange)
    if (deathCross)
        strategy.entry("Death Cross long", strategy.short)

    if (goldenCross)
        strategy.entry("Golden Cross short", strategy.long)

// Plot SMAs
plot(sma50, color=color.red, title="50 SMA")
plot(sma200, color=color.blue, title="200 SMA")

// Plotting Death Cross signal
plotshape(series=deathCross and inDateRange, title="Death Cross Signal", location=location.belowbar, color=color.red, style=shape.labeldown, text="DEATH CROSS")

// Plotting Golden Cross signal
plotshape(series=goldenCross and inDateRange, title="Golden Cross Signal", location=location.abovebar, color=color.green, style=shape.labelup, text="GOLDEN CROSS")


Mais.