Estratégia de cruzamento de médias móveis de vários níveis para mestres quant

Autora:ChaoZhang, Data: 2024-01-12 12:11:02
Tags:

img

Resumo

Esta estratégia utiliza o princípio de cruzamento de linhas de média móvel de vários níveis para capturar tendências de médio e longo prazo e alcançar lucros constantes. Emprega três conjuntos de médias móveis rápidas, médias e lentas com diferentes parâmetros e toma decisões de negociação com base em seus cruzamentos. Em comparação com estratégias tradicionais com apenas dois conjuntos de médias móveis, esta estratégia de cruzamento de média móvel de vários níveis pode filtrar mais sinais falsos e melhorar a taxa de vitória da estratégia.

Estratégia lógica

A estratégia usa três conjuntos de médias móveis: a média móvel rápida MAshort, a média móvel de velocidade média MAmid e a média móvel lenta MAlong. MAshort tem um parâmetro de 9, responde o mais rápido e é usado para capturar sinais de curto prazo; MAmid tem um parâmetro de 50, tem uma velocidade média e é usado para confirmar a tendência; MAlong tem um parâmetro de 100, responde o mais lento e é usado para determinar a direção da tendência de longo prazo.

A lógica de negociação específica da estratégia é: quando a linha de média móvel de velocidade média MAmid cruza acima da linha de média móvel lenta MAlong, isso indica que o ímpeto ascendente do preço da ação está se formando. Neste momento, a estratégia é longa; quando a média móvel rápida MAshort cruza abaixo da média móvel de velocidade média MAmid, isso indica que ocorreu uma inversão de tendência de curto prazo e a estratégia sai de sua posição neste momento.

A maior vantagem desta estratégia é que, ao combinar múltiplas médias móveis, ela pode efetivamente filtrar sinais falsos e escolher apenas breakouts relativamente fortes durante uma tendência de alta de médio e longo prazo para abrir posições longas.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. Os parâmetros da estratégia são otimizados para corresponder efetivamente às tendências de médio e longo prazo com uma taxa de ganho relativamente elevada.
  2. O projeto de média móvel de vários níveis filtra ruído e falsos sinais.
  3. É adequado para todos os tipos de ações e criptomoedas com resultados de backtesting históricos relativamente bons.
  4. A frequência de operações é baixa e cada posição de abertura ocupa 30% dos fundos e o risco é controlado.
  5. O período de tempo é configurável, o que proporciona flexibilidade para a negociação em tempo real.

Análise de riscos

Esta estratégia apresenta igualmente os seguintes riscos:

  1. A probabilidade de reversões de tendência a longo prazo é relativamente pequena, mas quando ocorre, a magnitude do stop loss pode ser grande.
  2. A frequência de negociação é baixa e, por conseguinte, apresenta o problema da utilização ineficiente do capital.
  3. Os parâmetros da estratégia devem ser otimizados para diferentes tipos de negociação, o que limita o âmbito de aplicação.

Para fazer face a estes riscos, iremos ampliar ainda mais a aplicabilidade da estratégia, controlando simultaneamente o drawdown máximo com técnicas de stop loss.

Orientações de otimização

Esta estratégia pode também ser otimizada das seguintes formas:

  1. Otimizar o parâmetro dias da média móvel para encontrar a melhor combinação de parâmetros
  2. Adicionar indicadores de volume para confirmar e evitar problemas de ajuste da curva
  3. Defina a perda máxima para a estratégia, como 20% de retirada máxima, para forçar a parada de perda
  4. Incorporar modelos de aprendizagem automática para avaliar tendências e melhorar a adaptabilidade da estratégia

Resumo

Esta estratégia pertence a uma estratégia quantitativa típica de médio e longo prazo que, com a premissa de controlar os riscos de negociação, obtém lucros contínuos combinando médias móveis de vários níveis com tendências de médio e longo prazo. Em comparação com um único indicador, esta estratégia incorpora vários parâmetros e pode identificar efetivamente fortes sinais de tendência de médio e longo prazo. Através de otimização adicional, esta estratégia pode ser aplicada a mais variedades e desempenha um papel importante na negociação quantitativa.


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 00:00:00
period: 1h
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/
// © Coinrule

//@version=4
strategy(shorttitle='Multi Moving Average Crossing',title='Multi Moving Average Crossing (by Coinrule)', overlay=true, initial_capital=1000,  default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

//MA inputs and calculations
inlong=input(100, title='MAlong')
inmid=input(50, title='MAmid')
inshort=input(9, title='MAfast')

MAlong = sma(close, inlong)
MAshort= sma(close, inshort)
MAmid= sma(close, inmid)


//Entry 
bullish = crossover(MAmid, MAlong)

strategy.entry(id="long", long = true, when = bullish and window())

//Exit
bearish = crossunder(MAshort, MAmid)

strategy.close("long", when = bearish and window())

plot(MAshort, color=color.orange, linewidth=2)
plot(MAmid, color=color.red, linewidth=2)
plot(MAlong, color=color.blue, linewidth=2)


Mais.