A estratégia de ruptura da média móvel dupla é uma estratégia quantitativa de negociação baseada em uma média móvel rápida e uma média móvel lenta. Ela usa duas médias móveis exponenciais (EMA) com períodos diferentes como sinais de negociação. Quando a EMA rápida cruza acima da EMA lenta, um sinal de compra é gerado. Quando a EMA rápida cruza abaixo da EMA lenta, um sinal de venda é gerado.
A lógica central desta estratégia é usar uma média móvel rápida e uma média móvel lenta para formar sinais de negociação. A estratégia define o período EMA rápido como 12 dias e o período EMA lento como 26 dias.
Usar o cruzamento da média móvel rápida e lenta para determinar as tendências do mercado e gerar sinais de negociação é uma estratégia típica de média móvel dupla.
A estratégia de ruptura da média móvel dupla tem as seguintes vantagens:
A estratégia de ruptura da média móvel dupla também apresenta alguns riscos:
Soluções:
A estratégia de ruptura da média móvel dupla pode ser otimizada nos seguintes aspectos:
A estratégia de ruptura de média móvel dupla é uma estratégia quantitativa simples e prática. Ela tem vantagens como lógica e implementação fáceis, e também tem algumas questões de adaptabilidade ao mercado. Podemos torná-la um sistema de negociação lucrativo estável por meio da otimização de parâmetros, filtragem de sinal, controle de risco, etc. No geral, a estratégia de média móvel dupla é um ótimo protótipo de estratégia que vale a pena pesquisa e aplicação aprofundada para os traders quantitativos.
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CDC Action Zone V.2", overlay=true) // CDC ActionZone V2 29 Sep 2016 // CDC ActionZone is based on a simple 2MA and is most suitable for use with medium volatility market // 11 Nov 2016 : Ported to Trading View with minor UI enhancement LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"]) src = input(title="Data Array",type=input.source,defval=ohlc4) prd1=input(title="Short MA period", type=input.integer,defval=12) prd2=input(title="Long MA period",type=input.integer,defval=26) AP = ema(src,2) Fast = ema(AP,prd1) Slow = ema(AP,prd2) Bullish = Fast>Slow Bearish = Fast<Slow Green = Bullish and AP>Fast Red = Bearish and AP<Fast Yellow = Bullish and AP<Fast Blue = Bearish and AP>Fast Buy = Bullish and Bearish[1] Sell = Bearish and Bullish[1] alertcondition(Buy,"Buy Signal","Buy") alertcondition(Sell,"Sell Signal","Sell") //Plot l1=plot(Fast,"Fast", linewidth=1,color=color.red) l2=plot(Slow,"Slow", linewidth=2,color=color.blue) bcolor = Green ? color.lime : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na barcolor(color=bcolor) fill(l1,l2,bcolor) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2000, title = "From Year", minval = 1920) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 1921) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" if LSB == "Long only" and Buy and window() strategy.entry("L",true) if LSB == "Long only" and Sell and window() strategy.close("L",qty_percent=100,comment="TP Long") if LSB == "Both" and Buy and window() strategy.entry("L",true) if LSB == "Both" and Sell and window() strategy.entry("S",false) if LSB == "Short only" and Sell and window() strategy.entry("S",false) if LSB == "Short only" and Buy and window() strategy.close("S",qty_percent=100,comment="TP Short")