Strategi ini mengira persilangan antara dua kumpulan purata bergerak SMA dan EMA untuk menentukan arah trend pasaran untuk mengesan perdagangan.
Secara khusus, ia menggunakan satu pasangan purata bergerak pantas dan satu perlahan. Ia pergi lama apabila garis pantas melintasi di atas garis perlahan, dan pergi pendek pada persimpangan ke bawah. Keluar berlaku apabila harga jatuh kembali di bawah garis perlahan atau naik di atas garis pantas.
Kelebihan strategi MA berganda ini adalah peraturan yang mudah dan jelas berdasarkan dua MA dinamik. Menggunakan EMA menawarkan lebih banyak kepekaan dalam menangkap pembalikan.
Secara amnya, strategi pelacakan silang MA berganda sesuai dengan pasaran trend untuk berdagang ke arah momentum. Tetapi penyesuaian parameter yang betul, stop loss yang ketat dan saiz kedudukan adalah penting untuk kestabilan jangka panjang strategi ini.
/*backtest start: 2023-08-11 00:00:00 end: 2023-09-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // strategy("Moving Average Strategy of BiznesFilosof", shorttitle="MAS of BiznesFilosof", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.15, pyramiding=0) //Period startY = input(title="Start Year", defval = 2011) startM = input(title="Start Month", defval = 1, minval = 1, maxval = 12) startD = input(title="Start Day", defval = 1, minval = 1, maxval = 31) finishY = input(title="Finish Year", defval = 2050) finishM = input(title="Finish Month", defval = 12, minval = 1, maxval = 12) finishD = input(title="Finish Day", defval = 31, minval = 1, maxval = 31) //finish = input(2019, 02, 28, 00, 00) timestart = timestamp(startY, startM, startD, 00, 00) timefinish = timestamp(finishY, finishM, finishD, 23, 59) window = time >= timestart and time <= timefinish ? true : false // Lenghth strategy lma1 = input(title="Length MA1", defval = 21, minval=1) exponential1 = input(false, title="exponential") lma2 = input(title="Length MA2", defval = 1, minval=1) exponential2 = input(false, title="exponential") lbars = input(title="Length bars close", defval = 0, minval=0) ma1 = exponential1 ? ema(close, lma1) : sma(close, lma1) ma2 = exponential2 ? ema(close, lma2) : sma(close, lma2) //source = close source = ma2 //open strategy.entry("LongEntryID", strategy.long, comment="LONG", when = crossover(ma2, ma1) and window) strategy.entry("ShortEntryID", strategy.short, comment="SHORT", when = crossunder(ma2, ma1) and window) if crossunder(source, ma1) and strategy.position_size > 0 strategy.close_all() if crossunder(ma2[lbars], ma1[lbars]) and strategy.position_size > 0 and lbars != 0 strategy.close_all() if crossover(source, ma1) and strategy.position_size < 0 strategy.close_all() if crossover(ma2[lbars], ma1[lbars]) and strategy.position_size < 0 and lbars != 0 strategy.close_all() src = close src1 = high src2 = low maH = exponential1 ? ema(src1, lma1) : sma(src1, lma1) maL = exponential1 ? ema(src2, lma1) : sma(src2, lma1) maColor = src>maH ? green : src<maL ? red : blue plot(ma1, title="MA1", color=maColor, linewidth=2, style=line) plot(ma2, title="MA2", color=gray, linewidth=1, style=line)