Strategi perdagangan kuantitatif yang cekap berdasarkan model kuantitatif tersuai


Tarikh penciptaan: 2023-12-22 13:14:33 Akhirnya diubah suai: 2023-12-22 13:14:33
Salin: 0 Bilangan klik: 658
1
fokus pada
1623
Pengikut

Strategi perdagangan kuantitatif yang cekap berdasarkan model kuantitatif tersuai

Gambaran keseluruhan

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.

Prinsip Strategi

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.

Analisis kelebihan

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.

Analisis risiko

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.

Arah pengoptimuman

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.

ringkaskan

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.

Kod sumber strategi
/*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)