
Strategi ini dilakukan dengan mengira purata bergerak 30 hari yang cepat dan purata bergerak 33 hari yang perlahan untuk saham dan membuat masuk LONG atau SHORT apabila mereka berlaku garpu emas atau garpu mati. Ia berhenti dengan serta-merta apabila isyarat sebaliknya berlaku. Ini dapat menangkap perubahan trend dengan berkesan.
Strategi ini berpusat pada pengiraan rata-rata 30 hari cepat dan rata-rata 33 hari perlahan. Garis cepat bertindak balas lebih cepat terhadap perubahan harga dan garis perlahan mempunyai kesan gelombang yang lebih baik.
Melalui reka bentuk silang garis rata-rata yang pantas dan perlahan ini, anda boleh menghasilkan isyarat perdagangan ketika trend bermula, dan berhenti ketika isyarat sebaliknya muncul, dengan berkesan menangkap trend harga garis tengah dan panjang. Pada masa yang sama, anda juga tidak akan terganggu oleh banyak turun naik pasaran.
Strategi ini mempunyai beberapa kelebihan:
Strategi ini mempunyai beberapa risiko:
Risiko ini boleh dikawal dan dikurangkan dengan kaedah seperti pengoptimuman parameter, penyetempatan titik-titik kerugian, dan perdagangan hanya apabila trend jelas.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Melalui ujian dan pengoptimuman, peraturan strategi boleh terus diperbaiki untuk mendapatkan isyarat perdagangan yang lebih dipercayai dalam keadaan pasaran yang berbeza.
Strategi penembusan silang dua garis rata-rata ini agak mudah dan praktikal secara keseluruhan, dengan menggabungkan garis rata-rata cepat dan garis rata-rata perlahan, ia dapat mengenal pasti permulaan trend garis tengah dan panjang dengan berkesan, menghasilkan isyarat perdagangan yang lebih dipercayai. Aturan berhenti-rugi juga mudah dilaksanakan. Dengan pengoptimuman lanjut, strategi ini boleh menjadi sistem kuantitatif yang bernilai untuk memegang jangka panjang.
/*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)