
Strategi ini adalah strategi perdagangan kuantitatif yang efisien yang dibuat khusus berdasarkan model kuantitatif. Strategi ini menggunakan model Volume Modelius sebagai model dasar, dan di atasnya melakukan perluasan dan pengoptimalan. Strategi ini dapat menangkap peluang perdagangan kuantitatif di pasar dan menghasilkan keuntungan yang stabil.
Inti dari strategi ini adalah model Volume Modelius. Model ini menggunakan perubahan harga, volume transaksi untuk mengidentifikasi peluang perdagangan kuantitatif di pasar. Secara khusus, strategi ini digabungkan dengan menggunakan harga tutup, harga terbuka, harga tertinggi, harga terendah, untuk menghitung arah garis K saat ini sesuai dengan aturan tertentu.
Logika dasar perdagangan adalah, ketika indikator dari nilai negatif ke nilai positif, lakukan lebih banyak; ketika indikator dari nilai positif ke nilai negatif, lakukan lebih sedikit. Selain itu, strategi ini juga mengatur stop loss, stop loss, dan tracking stop loss untuk mengendalikan risiko.
Keuntungan terbesar dari strategi ini adalah bahwa model Volume Modelius dapat digunakan untuk mengidentifikasi peluang perdagangan kuantitatif secara efektif. Model ini lebih fokus pada perubahan volume perdagangan dibandingkan dengan indikator teknis tradisional, yang sangat praktis dalam perdagangan kuantitatif frekuensi tinggi saat ini. Selain itu, aturan masuk strategi lebih ketat, yang dapat secara efektif menghindari kehilangan peluang perdagangan kuantitatif dan mengurangi kemungkinan kekacauan.
Risiko utama dari strategi ini adalah bahwa model Volume Modelius sendiri tidak dapat sepenuhnya menghindari kebisingan. Ketika pasar mengalami fluktuasi yang tidak biasa, dapat menyebabkan kesalahan sinyal perdagangan. Selain itu, pengaturan parameter dalam strategi juga dapat mempengaruhi hasil akhir.
Untuk mengontrol risiko, parameter dapat disesuaikan dengan tepat, dan dikombinasikan dengan indikator lain untuk penilaian tambahan. Selain itu, perlu juga pengaturan yang masuk akal dari stop loss, stop stop position.
Strategi ini juga memiliki ruang untuk optimasi tertentu. Misalnya, Anda dapat mempertimbangkan untuk mengoptimalkan parameter pengaturan secara dinamis dengan algoritma pembelajaran mesin. Atau dengan indikator seperti analisis emosi untuk meningkatkan akurasi keputusan. Selain itu, Anda juga dapat mempelajari hubungan antara varietas yang berbeda dan membangun model arbitrage multi-varietas.
Secara keseluruhan, strategi ini memanfaatkan keunggulan model kuantitatif Volume Modelius untuk merancang strategi perdagangan kuantitatif yang lebih kuat. Strategi ini dapat dioptimalkan melalui penyesuaian parameter, perluasan model, dan pembelajaran mesin untuk mendapatkan keuntungan yang lebih stabil dalam perdagangan nyata.
/*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)