Strategi ini menghasilkan isyarat perdagangan dengan mengira jumlah perbezaan antara ROC dan SMA.
Strategi ini mula-mula mengira SMA dengan panjang l dan ROC. Kemudian ia mengira perbezaan k antara harga penutupan dan SMA. Seterusnya ia menjumlahkan k untuk s hari dan mendapat jumlah. Apabila jumlah > 0, ia pergi panjang. Apabila jumlah <0, ia pergi pendek.
Secara khusus, dalam kod:
Hitung SMA dengan panjang l, dapatkan a.
Hitung ROC dengan panjang l, dapatkan r.
Mengira perbezaan antara harga penutupan dan SMA: k = penutupan - a.
Menjumlahkan k untuk s hari, mendapatkan jumlah.
Jika jumlah>0, kedudukan panjang; jika jumlah<0, kedudukan pendek.
Keluar apabila jumlah <0 untuk panjang, dan jumlah>0 untuk pendek.
Kuncinya adalah untuk meringkaskan perbezaan k dan menggunakan tanda jumlah untuk isyarat perdagangan. Apabila k > 0 untuk hari-hari kebelakangan ini, harga meningkat, jadi pergi panjang. Apabila k < 0, harga menurun, jadi pergi pendek.
Strategi perdagangan jangka pendek yang mudah ini mempunyai kelebihan berikut:
Indikator yang digunakan adalah mudah dan mudah difahami.
Menapis dengan perbezaan penunjuk boleh mencari peluang perdagangan yang lebih tepat.
Menyimpulkan perbezaan dapat menangkap lebih baik trend jangka pendek.
Parameter l dan s boleh diselaraskan untuk kitaran yang berbeza.
Logiknya jelas dan mudah diubah dan dioptimumkan.
Kecekapan penggunaan modal yang tinggi untuk perdagangan jangka pendek yang kerap.
Terdapat juga beberapa risiko:
Risiko yang lebih tinggi dalam perdagangan jangka pendek, kerugian adalah mungkin.
Parameter yang tidak betul boleh membawa kepada perdagangan berlebihan atau peluang yang hilang.
Sukar untuk menyesuaikan diri dengan pembalikan trend, tiada stop loss boleh membawa kepada kerugian besar.
Penyesuaian parameter yang kerap sangat bergantung kepada pengalaman peniaga.
Frekuensi perdagangan yang tinggi boleh meningkatkan kos transaksi dan slippage.
Penyelesaian:
Sesuaikan parameter dengan betul untuk mengurangkan kekerapan perdagangan.
Tambah penunjuk trend untuk mengenal pasti pembalikan.
Mengoptimumkan stop loss untuk mengawal kerugian perdagangan tunggal.
Tambah pengoptimuman parameter automatik untuk mengurangkan pergantungan pada pengalaman.
Mengoptimumkan model pelaksanaan pesanan untuk mengurangkan kos transaksi.
Strategi ini boleh dioptimumkan lagi dalam aspek berikut:
Mengoptimumkan kaedah pengiraan parameter, seperti algoritma genetik, untuk menjadikan parameter adaptif.
Tambah lebih banyak penunjuk dan penapis untuk meningkatkan kualiti isyarat.
Meningkatkan strategi stop loss, seperti trailing stop loss.
Mengoptimumkan strategi pengurusan wang seperti kawalan titik risiko.
Mengoptimumkan model pelaksanaan pesanan dengan trend berikut, kawalan slippage dan lain-lain
Tambah backtesting dan modul pengoptimuman automatik.
Tambah penilaian kuantitatif kualiti isyarat.
Dengan pengoptimuman ini, strategi ini boleh menjadi sistem perdagangan jangka pendek yang lebih komprehensif, pintar, stabil dan boleh dikawal.
Ringkasnya, strategi ini menghasilkan isyarat mudah dari penunjuk, dengan logik yang jelas dan pelaksanaan yang mudah. Dengan pengoptimuman lebih lanjut dalam parameter, stop loss, pengurusan wang dan lain-lain, ia boleh menjadi strategi perdagangan kuantitatif yang berbaloi. Tetapi tidak ada strategi yang sempurna. Pedagang masih perlu menerapkannya secara rasional berdasarkan keutamaan risiko peribadi.
/*backtest start: 2023-10-06 00:00:00 end: 2023-11-05 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false) l = input(defval=170,title="Length for indicator") s = input(title="Length of summation",defval=18) a= sma(close,l) r=roc(close,l) k=close-a sum = 0 for i = 0 to s sum := sum + k[i] //plot(a,color=yellow,linewidth=2,transp=0) //bc = iff( sum > 0, white, teal) //plot(sum,color=bc, transp=20, linewidth=3,style=columns) //plot(sma(sum,3),color=white) //hline(0) inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na ////buyEntry = crossover(source, lower) ////sellEntry = crossunder(source, upper) if sum>0 strategy.entry("Long", strategy.long, oca_name="Long", comment="Long") else strategy.cancel(id="Long") if sum<0 strategy.entry("Short", strategy.short, oca_name="Short", comment="Short") else strategy.cancel(id="Short") strategy.initial_capital = 50000 plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2) hline(0) //longCondition = sum>0 //exitlong = sum<0 //shortCondition = sum<0 //exitshort = sum>0 //strategy.entry(id = "Long", long=true, when = longCondition) //strategy.close(id = "Long", when = exitlong) //strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong) //strategy.entry(id = "Short", long=false, when = shortCondition) //strategy.close(id = "Short", when = exitshort) //strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)