
Strategi Breakout Rata-rata Bergerak Ganda adalah strategi perdagangan kuantitatif berdasarkan rata-rata bergerak cepat dan rata-rata bergerak perlahan. Ia menggunakan rata-rata bergerak indeks dalam dua tempoh yang berbeza sebagai isyarat perdagangan. Isyarat beli dihasilkan apabila rata-rata bergerak cepat melintasi rata-rata bergerak perlahan; isyarat jual dihasilkan apabila rata-rata bergerak cepat melintasi rata-rata bergerak perlahan.
Logik teras strategi ini adalah untuk membentuk isyarat dagangan menggunakan rata-rata bergerak cepat dan rata-rata bergerak perlahan. Strategi ini mentakrifkan kitaran rata-rata bergerak cepat selama 12 hari dan kitaran rata-rata bergerak perlahan selama 26 hari. Kaedah pengiraan adalah seperti berikut:
Dengan menggunakan persilangan rata-rata bergerak cepat dan rata-rata bergerak perlahan untuk menilai trend pasaran dan menghasilkan isyarat perdagangan, adalah strategi rata-rata bergerak ganda yang tipikal.
Strategi penembusan garisan purata bergerak berganda mempunyai kelebihan berikut:
Strategi penembusan garis rata bergerak berganda juga mempunyai risiko:
Penyelesaian:
Strategi penembusan garisan purata bergerak dua kali dapat dioptimumkan dengan:
Strategi penembusan garisan purata bergerak ganda adalah strategi perdagangan kuantitatif yang mudah dan praktikal. Ia mempunyai kelebihan seperti logik strategi yang mudah dan mudah dilaksanakan, tetapi terdapat juga masalah adaptasi pasaran. Kita boleh menjadikannya sistem perdagangan yang menguntungkan secara stabil melalui pengoptimuman parameter, penapisan isyarat, dan kawalan risiko.
/*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")