
Strategi ini adalah strategi dagangan kuantitatif yang cekap dan disesuaikan berdasarkan model kuantitatif. Strategi ini menggunakan model Volume Modelius sebagai model asas, dan mengembangkan dan mengoptimumkannya. Strategi ini dapat menangkap peluang dagangan kuantitatif di pasaran dan menghasilkan keuntungan yang stabil.
Pusat strategi ini adalah model Modelis Volume. Model ini menggunakan perubahan harga, jumlah transaksi untuk mengenal pasti peluang perdagangan kuantitatif di pasaran. Khususnya, strategi ini digabungkan dengan harga tutup, harga terbuka, harga tertinggi, harga terendah, dan arah K-bar yang semasa dikira mengikut peraturan tertentu.
Logik perdagangan asas adalah, apabila penunjuk dari nilai negatif ke nilai positif, buat lebih banyak; apabila penunjuk dari nilai positif ke nilai negatif, buat kosong. Di samping itu, strategi ini juga menetapkan stop loss, stop loss, dan tracking stop loss untuk mengawal risiko.
Kelebihan terbesar strategi ini adalah penggunaan Modelus Volume Model yang dapat mengenal pasti peluang perdagangan kuantitatif dengan berkesan. Model ini lebih memberi perhatian kepada perubahan jumlah perdagangan berbanding dengan petunjuk teknologi tradisional, yang sangat praktikal dalam perdagangan kuantitatif frekuensi tinggi sekarang. Selain itu, peraturan masuk strategi ini lebih ketat, yang dapat menghalang peluang perdagangan kuantitatif yang terlewatkan dengan berkesan dan juga dapat meminimumkan kemungkinan ketidakselarasan.
Risiko utama strategi ini adalah bahawa model Volume Modelius sendiri tidak dapat sepenuhnya mengelakkan bunyi. Apabila pasaran mengalami turun naik yang luar biasa, ia boleh menyebabkan isyarat perdagangan menjadi salah. Selain itu, tetapan parameter dalam strategi juga mempengaruhi hasil akhir.
Untuk mengawal risiko, parameter boleh diselaraskan dengan sewajarnya, dan digabungkan dengan petunjuk lain untuk membuat penilaian tambahan. Selain itu, anda juga perlu menetapkan kedudukan hentian dan hentian dengan munasabah.
Strategi ini juga mempunyai ruang untuk pengoptimuman. Sebagai contoh, anda boleh mempertimbangkan untuk mengoptimumkan parameter secara dinamik dengan menggunakan algoritma pembelajaran mesin. Atau dengan menggunakan indikator seperti analisis emosi untuk meningkatkan ketepatan keputusan. Selain itu, anda juga boleh mengkaji hubungan antara pelbagai baka untuk membina model penarikan pelbagai baka.
Secara keseluruhannya, strategi ini menggunakan kelebihan model kuantitatif Volume Modelius untuk merancang strategi perdagangan kuantitatif yang lebih kuat. Ia boleh dioptimumkan dengan cara penyesuaian parameter, model lanjutan, pembelajaran mesin, dan lain-lain untuk mendapatkan keuntungan yang lebih 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)