Strategi ini adalah strategi dagangan algoritma berprestasi tinggi berdasarkan model kuantitatif. Ia menggunakan model Volume Modelius sebagai model asas dan memperluaskan dan mengoptimumkannya. Strategi ini dapat menangkap peluang dagangan kuantitatif di pasaran dan mencapai keuntungan yang stabil.
Inti strategi ini adalah model Volume Modelius. Model ini mengenal pasti peluang perdagangan kuantitatif di pasaran dengan mengesan perubahan harga dan jumlah. Khususnya, strategi menggabungkan harga dekat, harga terbuka, harga tertinggi, harga terendah untuk mengira arah K-line semasa berdasarkan peraturan tertentu. Apabila arah K-line berubah, kualiti peluang perdagangan kuantitatif dinilai berdasarkan jumlah perdagangan. Di samping itu, strategi ini juga menggabungkan indikator SAR dan indikator purata bergerak untuk membantu menentukan masa masuk dan keluar.
Logik dagangan asas adalah untuk pergi panjang apabila penunjuk menembusi dari negatif ke positif dan pergi pendek apabila penunjuk menembusi dari positif ke negatif.
Kelebihan terbesar strategi ini adalah bahawa model Volume Modelius dapat mengenal pasti peluang perdagangan kuantitatif dengan berkesan. Berbanding dengan penunjuk teknikal tradisional, model ini memberi lebih banyak perhatian kepada perubahan jumlah, yang sangat praktikal dalam perdagangan kuantitatif frekuensi tinggi hari ini. Di samping itu, peraturan kemasukan strategi ini agak ketat, yang dapat mengelakkan peluang perdagangan kuantitatif yang hilang sambil mengurangkan kebarangkalian gangguan sebanyak mungkin.
Risiko utama strategi ini adalah bahawa model Volume Modelius sendiri tidak dapat sepenuhnya mengelakkan bunyi bising. Apabila terdapat turun naik pasaran yang tidak normal, ia akan membawa kepada isyarat perdagangan yang salah. Di samping itu, tetapan parameter dalam strategi juga akan mempengaruhi hasil akhir.
Untuk mengawal risiko, parameter boleh diselaraskan dengan sewajarnya dan digabungkan dengan penunjuk lain untuk penilaian tambahan.
Terdapat ruang untuk mengoptimumkan strategi ini. Sebagai contoh, algoritma pembelajaran mesin boleh dipertimbangkan untuk mengoptimumkan tetapan parameter secara dinamik. Atau menggabungkan analisis sentimen dan penunjuk lain untuk meningkatkan ketepatan keputusan. Di samping itu, korelasi antara pelbagai jenis boleh dikaji untuk menubuhkan model arbitrage pelbagai jenis.
Ringkasnya, strategi ini menggunakan kelebihan model kuantitatif Volume Modelius dan merancang satu set strategi perdagangan algoritma dengan kebolehoperasian yang tinggi. Ia boleh ditingkatkan dan ditingkatkan melalui penyesuaian parameter, pengembangan model, pembelajaran mesin, dll. untuk mendapatkan pulangan yang agak baik dan stabil dalam perdagangan sebenar.
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="strategy modelius volume model ", shorttitle="mvm",overlay=true, calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false) method = input(defval="ATR", options=["ATR", "Traditional", "Part of Price"], title="Renko Assignment Method") methodvalue = input(defval=14.0, type=float, minval=0, title="Value") pricesource = input(defval="Close", options=["Close", "Open / Close", "High / Low"], title="Price Source") useClose = pricesource == "Close" useOpenClose = pricesource == "Open / Close" or useClose useTrueRange = input(defval="Auto", options=["Always", "Auto", "Never"], title="Use True Range instead of Volume") isOscillating=input(defval=true, type=bool, title="Oscillating") normalize=input(defval=false, type=bool, title="Normalize") vol = useTrueRange == "Always" or (useTrueRange == "Auto" and na(volume))? tr : volume op = useClose ? close : open hi = useOpenClose ? close >= op ? close : op : high lo = useOpenClose ? close <= op ? close : op : low if method == "ATR" methodvalue := atr(round(methodvalue)) if method == "Part of Price" methodvalue := close/methodvalue currclose = na prevclose = nz(currclose[1]) prevhigh = prevclose + methodvalue prevlow = prevclose - methodvalue currclose := hi > prevhigh ? hi : lo < prevlow ? lo : prevclose direction = na direction := currclose > prevclose ? 1 : currclose < prevclose ? -1 : nz(direction[1]) directionHasChanged = change(direction) != 0 directionIsUp = direction > 0 directionIsDown = direction < 0 barcount = 1 barcount := not directionHasChanged and normalize ? barcount[1] + barcount : barcount vol := not directionHasChanged ? vol[1] + vol : vol res = barcount > 1 ? vol/barcount : vol x=isOscillating and directionIsDown ? -res : res TP = input(0) * 10 SL = input(0) * 10 TS = input(1) * 10 TO = input(3) * 10 CQ = 100 TPP = (TP > 0) ? TP : na SLP = (SL > 0) ? SL : na TSP = (TS > 0) ? TS : na TOP = (TO > 0) ? TO : na longCondition = crossover(x,0) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = crossunder(x,0) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Close Short", "Short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP) strategy.exit("Close Long", "Long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)