Strategi ini menghasilkan isyarat masuk LONG atau SHORT apabila purata bergerak mudah 30 hari yang cepat dan purata bergerak mudah 33 hari harga saham yang perlahan bersilang. Ia keluar dari kedudukan dengan serta-merta apabila isyarat bertentangan berlaku. Ini dapat menangkap perubahan trend dengan berkesan.
Inti strategi ini adalah untuk mengira MA 30 hari yang cepat dan MA 33 hari yang perlahan. Garis cepat boleh bertindak balas terhadap perubahan harga dengan lebih cepat sementara garis perlahan mempunyai kesan penapisan yang lebih baik. Apabila garis pantas menembusi garis perlahan ke atas, isyarat beli dihasilkan. Ini menunjukkan harga mula meningkat dan garis pantas telah bertindak balas sementara garis perlahan masih tertinggal. Apabila garis pantas menembusi garis perlahan ke bawah, isyarat jual dihasilkan. Ini menunjukkan harga mula menurun sementara garis pantas telah bertindak balas tetapi garis perlahan masih tertinggal.
Melalui reka bentuk silang MA yang cepat dan perlahan, ia boleh menghasilkan isyarat perdagangan apabila trend baru bermula, dan keluar pada isyarat bertentangan, dengan berkesan menangkap trend harga jangka menengah hingga panjang.
Strategi ini mempunyai kelebihan berikut:
Terdapat juga beberapa risiko untuk strategi ini:
Kaedah-kaedah seperti pengoptimuman parameter, penetapan paras kehilangan berhenti, hanya berdagang apabila trend jelas dan lain-lain boleh digunakan untuk mengawal dan mengurangkan risiko tersebut.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Melalui ujian dan pengoptimuman, peraturan strategi boleh terus ditingkatkan untuk mendapatkan isyarat perdagangan yang lebih boleh dipercayai di pelbagai persekitaran pasaran.
Ringkasnya, strategi pecah silang MA berganda ini agak mudah dan praktikal. Dengan menggabungkan MA cepat dan MA perlahan, ia dapat mengenal pasti permulaan trend jangka menengah hingga panjang dengan berkesan dan menghasilkan isyarat perdagangan yang agak boleh dipercayai. Juga, peraturan stop lossnya mudah dilaksanakan. Dengan pengoptimuman lanjut, strategi ini boleh menjadi sistem kuantitatif jangka panjang yang bermanfaat.
/*backtest start: 2022-11-20 00:00:00 end: 2023-11-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //future strategy //strategy(title = "es1!_1minute_hull", default_qty_type = strategy.fixed, initial_capital=250000, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2, calc_on_order_fills=false, calc_on_every_tick=false,pyramiding=0) //strategy.risk.max_position_size(2) //stock strategy strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=1000000, overlay = false)//, calc_on_order_fills=true, calc_on_every_tick=true) //forex strategy //strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true,initial_capital=250000, default_qty_type = strategy.percent_of_equity) //crypto strategy //strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.percent,commission_value=.005,default_qty_value=10000) //strategy.risk.allow_entry_in(strategy.direction.long) // There will be no short entries, only exits from long. testStartYear = 2010 testStartMonth = 1 testStartDay = 1 testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testEndYear = 2039 testEndMonth = 1 testEndDay = 1 testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0) testPeriod() => //true time >= testPeriodStart and time <= testPeriodEnd ? true : false fast_length = 30 slow_length = 33 ema1 = 0.0 ema2 = 0.0 volumeSum1 = sum(volume, fast_length) volumeSum2 = sum(volume, slow_length) //ema1 := (((volumeSum1 - volume) * nz(ema1[1]) + volume * close) / volumeSum1) ema1 := ema(close,fast_length) //ema2 := (((volumeSum2 - volume) * nz(ema2[1]) + volume * close) / volumeSum2) ema2 := ema(close,slow_length) plot(ema1,color=#00ff00, linewidth=3) plot(ema2, color=#ffff00, linewidth=3) go_long = crossover(ema1,ema2) go_short = crossunder(ema1,ema2) if testPeriod() strategy.entry("long_ride", strategy.long, when=go_long) strategy.entry("short_ride", strategy.short,when=go_short) strategy.close("long_ride",when=go_short) strategy.close("short_ride",when=go_long)