
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.
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 ❚.
A vantagem desta estratégia é notável:
A estratégia também tem riscos:
Mecanismos de otimização:
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.
/*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")