
A estratégia de breakout de média móvel dupla é uma estratégia de negociação quantitativa baseada em média móvel rápida e média móvel lenta. Ela usa a média móvel indexada de dois períodos diferentes como sinal de negociação. Um sinal de compra é gerado quando a média móvel rápida atravessa a média móvel lenta e um sinal de venda é gerado quando a média móvel rápida atravessa a média móvel lenta.
A lógica central da estratégia é a de usar a média móvel rápida e a média móvel lenta para formar um sinal de negociação. A estratégia define um período de média móvel rápida de 12 dias e um período de média móvel lenta de 26 dias. O método de cálculo é o seguinte:
Uma estratégia típica de dupla média móvel para determinar a tendência do mercado e gerar sinais de negociação através da interseção de uma média móvel rápida e uma média móvel lenta.
A estratégia de ruptura de dupla média móvel tem as seguintes vantagens:
A estratégia de quebra de dupla média móvel também tem riscos:
Solução:
A estratégia de ruptura de dupla linha média móvel pode ser otimizada em:
A estratégia de ruptura de dupla linha de equilíbrio móvel é uma estratégia de negociação quantitativa simples e prática. Ela possui vantagens como a lógica da estratégia é simples e fácil de implementar, mas há também alguns problemas de adaptabilidade ao mercado. Podemos torná-la um sistema de negociação de lucro estável por meio de otimização de parâmetros, filtragem de sinais e controle de risco.
/*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")