Com base na estratégia de cruzamento de médias móveis rápidas e lentas


Data de criação: 2023-11-22 16:38:26 última modificação: 2023-11-22 16:38:26
cópia: 0 Cliques: 622
1
focar em
1617
Seguidores

Com base na estratégia de cruzamento de médias móveis rápidas e lentas

Visão geral

A estratégia de cruzamento de média móvel é uma estratégia de negociação quantitativa simples e eficaz baseada em média móvel. A estratégia usa o cruzamento de média móvel rápida e média móvel lenta como um sinal de compra e venda.

Princípio da estratégia

A lógica central da estratégia é usar as médias móveis para julgar a tendência do mercado. As médias móveis têm a função de se desviar do ruído aleatório do mercado. As médias móveis rápidas respondem mais rapidamente às mudanças de preços, refletindo as tendências mais recentes, enquanto as médias móveis lentas respondem mais lentamente às mudanças de preços mais recentes, representando tendências de médio e longo prazo.

Concretamente, a estratégia define primeiro a média móvel rápida sig1 e a média móvel lenta sig2 ❚ e, em seguida, julga os pontos de venda e compra de acordo com a relação cruzada entre sig1 e sig2 ❚. Quando a sig1 quebra a sig2 a partir de baixo, gera um sinal de compra longCondition; quando a sig1 quebra a sig2 a partir de cima, gera um sinal de venda shortCondition ❚. A estratégia, em seguida, ordena as ordens quando as condições de compra e venda são satisfeitas, e define ordens de parada e parada de saída ❚.

Análise de vantagens

A vantagem desta estratégia é notável:

  1. A lógica é simples, fácil de entender e de implementar.
  2. Ajuste de parâmetros flexível, adaptável a diferentes condições de mercado
  3. Pode ser combinado com outros indicadores para melhorar a estabilidade do sinal de filtragem
  4. Bom desempenho, por exemplo, a combinação EMA15-EMA30 tem uma taxa de vitória de 83% no diagrama EURCHF

Análise de Riscos

A estratégia também tem riscos:

  1. O whipsaw é grave e o Stop Loss é importante.
  2. O que aconteceu com a Bolsa de Valores?
  3. Repetido teste de modelagem é necessário para adaptação a diferentes variedades e ciclos

Mecanismos de otimização:

  1. Adicionar outros indicadores de julgamento e evitar o whipsaw
  2. Ajustar os tipos e parâmetros das médias móveis para diferentes variedades
  3. Optimizar a proporção de stop loss e controlar o risco

Resumir

A estratégia de cruzamento de média móvel é, em geral, uma estratégia de quantificação lógica, simples e prática. Com o ajuste de parâmetros e a otimização adequada, é possível obter lucros estáveis em vários ambientes de mercado.

Código-fonte da estratégia
/*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")