Estratégia de cruzamento da média móvel

Autora:ChaoZhang, Data: 2023-11-22 16:38:26
Tags:

img

Resumo

A estratégia de cruzamento da média móvel é uma estratégia quantitativa simples, mas eficaz, baseada em médias móveis. Ela usa o cruzamento de uma linha média móvel rápida e uma linha média móvel lenta para gerar sinais de compra e venda. Quando a linha rápida quebra a linha lenta de baixo, um sinal de compra é gerado. Quando a linha rápida quebra a linha lenta de cima, um sinal de venda é gerado.

Estratégia lógica

A lógica central desta estratégia consiste em usar médias móveis para julgar as tendências do mercado. As próprias médias móveis têm a funcionalidade de filtrar o ruído aleatório do mercado. A média móvel rápida pode responder às mudanças de preço mais rapidamente e refletir as últimas tendências, enquanto a média móvel lenta responde mais lentamente às últimas mudanças de preço e representa tendências de médio a longo prazo. A ruptura da linha rápida através da linha lenta significa que a tendência de curto prazo se inverteu para ser consistente com a tendência de médio e longo prazo, gerando assim sinais de negociação.

Especificamente, esta estratégia define primeiro a média móvel rápida sig1 e a média móvel lenta sig2. Em seguida, os pontos de compra e venda são determinados de acordo com as relações de cruzamento entre sig1 e sig2. Quando sig1 atravessa sig2 de baixo, uma condição longa longCondition é gerada. Quando sig1 atravessa sig2 de cima, uma condição curta shortCondition é gerada. A estratégia então coloca ordens quando as condições longas e curtas são atendidas, e define ordens de stop loss e take profit para sair.

Análise das vantagens

As vantagens desta estratégia são significativas:

  1. Lógica simples, fácil de compreender e implementar
  2. Ajuste flexível de parâmetros, pode ser otimizado em diferentes condições de mercado
  3. Pode ser combinado com outros indicadores para filtrar sinais e melhorar a estabilidade
  4. Bom desempenho, por exemplo, a combinação EMA15-EMA30 pode alcançar 83% de taxa de vitória nos dados diários do EURCHF

Análise de riscos

Há também alguns riscos com esta estratégia:

  1. Efeitos graves de serra, configuração de perda de parada é crucial
  2. Desempenho fraco nos mercados de variação e lateral
  3. Requer testes extensos e ajuste de parâmetros para se adequar a diferentes produtos e prazos

Medidas de otimização:

  1. Adicionar outros indicadores para o julgamento para evitar problemas
  2. Ajustar os tipos e parâmetros de autorização de importação para os diferentes produtos
  3. Otimizar os índices de stop loss e take profit para controlar os riscos

Conclusão

Em geral, a estratégia de cruzamento de média móvel é uma estratégia de quantidade com lógica simples, praticidade forte e estabilidade. Com ajuste de parâmetros e otimizações adequadas, pode gerar lucros constantes em vários ambientes de mercado. Vale a pena focar e aplicar para os traders quantitativos.


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

//@version=3
// Simple yet effective MA cross strategy.
// You'll have to tune the parameters to get an optimal win ratio.
// If JPY or XAU or any other currency with pips defined as the 
// second decimal digit are involved, do not forget to set the respective flag on.
//
// Created by vitelot/yanez/Vts, who's the same fellow with different user names
// December 2018 -- Merry Xmas
//
strategy("MA cross strategy Vts", overlay=true, initial_capital=1000, currency="EUR", pyramiding=0)

yr  = input(2016, title="Starting year to analyse")
src = input(close, title="Source")
maType = input( defval="EMA", title="MA Type", options=["SMA","EMA","HMA","McG","WMA"])
//
isJPY = input(false, title="Is JPY or XAU involved?") // JPY and Gold have the pips defined as the 2 decimal digit

maPar1 = input(26, minval=1, title="MA fast period")
maPar2 = input(51, minval=2, title="MA slow period")

atrPar = input(14,minval=1, title="ATR period")
atrMulSL = input(1.5, title="SL ATR multiplicator")
atrMulTP = input(1.0, title="TP ATR multiplicator")

hma(sig, n) => // Hull moving average definition
    wma( 2*wma(sig,round(n/2))-wma(sig,n), round(sqrt(n)))

mcg(sig,length) => // Mc Ginley MA definition
    mg = 0.0
    mg := na(mg[1]) ? ema(sig, length) : mg[1] + (sig - mg[1]) / (length * pow(sig/mg[1], 4))

ma(t,sig,len) =>
    if t =="SMA"
        sma(sig,len)
    else
        if t == "EMA"
            ema(sig,len)
        else
            if t == "HMA"
                hma(sig,len)
            else
                if t == "McG" // Mc Ginley
                    mcg(sig,len)
                else
                    wma(sig,len)
                    
        
sig1 = ma(maType, src, maPar1)
sig2 = ma(maType, src, maPar2)

tickFactor = isJPY? 1e3: 1e5
sl = atrMulSL*atr(atrPar)*tickFactor
tp = atrMulTP*atr(atrPar)*tickFactor

plot(sig1, color=aqua, title="MA1", linewidth=2)
plot(sig2, color=orange, title="MA2", linewidth=2)

longCondition = crossunder(sig2, sig1) and year>=yr // change the >= to == if you like exact years not a range
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1) // exit trade when SL and TP are hit
    strategy.exit("Exit Long", "Long", loss=sl, profit=tp)
if (crossunder(sig1, sig2)) // or when the short condition is met
    strategy.close("Long")

shortCondition = crossover(sig2,sig1) and year>=yr // change the >= to == if you like exact years not a range
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=1)
    strategy.exit("Exit Short", "Short", loss=sl, profit=tp)
if (crossover(sig1,sig2))
    strategy.close("Short")


Mais.