Strategi Perdagangan Kuantitatif Kotak Getaran


Tarikh penciptaan: 2023-12-27 14:45:41 Akhirnya diubah suai: 2023-12-27 14:45:41
Salin: 0 Bilangan klik: 956
1
fokus pada
1623
Pengikut

Strategi Perdagangan Kuantitatif Kotak Getaran

Gambaran keseluruhan

Strategi perdagangan kuantitatif kotak harta gemetar adalah strategi perdagangan garis pendek yang menggunakan saluran kotak Darvas untuk menangkap trend pasaran. Strategi ini bergantung kepada indikator kotak harta gemetar untuk menilai pergerakan pasaran dan mencari peluang perdagangan.

Prinsip Strategi

  • Tetapkan panjang kotak goyang menggunakan parameter length. Panjang lalai dalam strategi ini adalah 5 K-root.
  • Untuk menilai trend, anda perlu melihat pada titik tinggi dan titik rendah, kemudian anda perlu melakukan lebih banyak pengurangan.
  • Apabila harga menembusi kotak hadiah, garis TopBox berwarna hijau akan muncul di carta.
  • Apabila harga jatuh di bawah kotak, garis BottomBox berwarna merah akan muncul di carta.
  • Menggunakan sistem pelbagai garisan sebagai penunjuk penilaian tambahan. Apabila harga lebih tinggi daripada garisan rata-rata, lebih rendah daripada garisan rata-rata kosong.
  • Penggunaan RVI untuk menentukan kawasan overbought dan oversold. Apabila RVI lebih tinggi daripada garis isyarat, isyarat overbought. Apabila RVI lebih rendah daripada garis isyarat, isyarat kosong.

Setelah penilaian gabungan beberapa indikator di atas, masuk. Stop loss adalah di seberang kotak hadiah. Stop EXIT menggunakan arah RVI untuk menutup pesanan.

Analisis kelebihan

  • Menggunakan saluran kotak hadiah untuk menilai arah trend pasaran, mengelakkan peluang untuk terlepas trend besar.
  • Saluran kotak harta karun mudah terbentuk, dan frekuensi untuk mendapatkan isyaratnya tinggi.
  • Tetapan stop loss kotak harta adalah munasabah dan dapat mengawal stop loss tunggal dengan baik.
  • Multivariate Average and RVI Assisted Judgment, yang boleh meningkatkan ketepatan keputusan.

Analisis risiko

  • Kedudukan henti rugi kotak harta gemetar lebih luas, risiko kerugian tunggal lebih besar.
  • Jika anda mempunyai lebih daripada satu pemegang saham, anda mungkin akan mengalami kerugian akibat penyesuaian jangka pendek.
  • Arah pembentukan saluran kotak harta tidak selalu betul, terdapat isyarat yang salah.
  • Parameter perlu diselaraskan dengan betul untuk menggunakan penunjuk tambahan dengan kotak hadiah.

Risiko boleh dikurangkan dengan pengetatan yang sesuai pada titik hentian. Selain itu, parameter penunjuk bantuan juga perlu disesuaikan dengan ujian untuk berfungsi sebagai penyaringan terbaik.

Arah pengoptimuman

  • Uji parameter kotak hadiah dengan panjang yang berbeza untuk mencari panjang terbaik.
  • Mengoptimumkan parameter untuk penunjuk tambahan agar sesuai dengan kotak hadiah.
  • Cubalah dengan penunjuk tambahan untuk mengesahkan isyarat lebih lanjut, seperti KDJ, MACD dan sebagainya.
  • Ujian terhadap keadaan stop loss dan stop loss untuk menjadikan strategi lebih stabil.

ringkaskan

Strategi perdagangan kuantitatif kotak harta gemetar secara keseluruhan adalah strategi perdagangan garis pendek yang lebih aktif. Ia dapat menangkap perubahan trend pasaran dengan tepat pada masanya, menggunakan saluran kotak harta untuk membuka kedudukan; dan kombinasi dengan petunjuk tambahan dapat meningkatkan ketepatan keputusan.

Kod sumber strategi
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © xxy_theone
// https://www.youtube.com/watch?v=YYxlnFOX9sQ
// This strategy script has been made to backtest the strategy explained in the video above


//@version=5
strategy(shorttitle = "Darvas Box Test", title="TradeIQ Darvas Box Test", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, currency=currency.USD)

// === INPUT BACKTEST RANGE ===
var GRP1 = "Backtest Range"
fromDate = input(timestamp("7 Mar 2022 00:00 +0000"), "From", group=GRP1)
toDate = input(timestamp("19 Mar 2022 23:59 +0000"), "To", group=GRP1)
window() =>  true


var GRP3 = "Darvas Box"
boxp=input(5, "Box Length", group=GRP3)

LL = ta.lowest(low,boxp)
k1=ta.highest(high,boxp)
k2=ta.highest(high,boxp-1)
k3=ta.highest(high,boxp-2)

NH =  ta.valuewhen(high>k1[1],high,0)
box1 =k3<k2
TopBox = ta.valuewhen(ta.barssince(high>k1[1])==boxp-2 and box1, NH, 0)
BottomBox = ta.valuewhen(ta.barssince(high>k1[1])==boxp-2 and box1, LL, 0)


plot(TopBox, linewidth=3, color=color.green, title="TBbox") 
plot(BottomBox, linewidth=3, color=color.red, title="BBbox")


var GRP4 = "MavilimW"

fmal=input(3,"First Moving Average length", group=GRP4)
smal=input(5,"Second Moving Average length", group=GRP4)
tmal=fmal+smal
Fmal=smal+tmal
Ftmal=tmal+Fmal
Smal=Fmal+Ftmal

M1= ta.wma(close, fmal)
M2= ta.wma(M1, smal)
M3= ta.wma(M2, tmal)
M4= ta.wma(M3, Fmal)
M5= ta.wma(M4, Ftmal)
MAVW= ta.wma(M5, Smal)
col1= MAVW>MAVW[1]
col3= MAVW<MAVW[1]
colorM = col1 ? color.blue : col3 ? color.red : color.yellow

plot(MAVW, color=colorM, linewidth=2, title="MAVW")


var GRP5 = "Relative Vigor Index"
len = input.int(10, title="Length", minval=1, group=GRP5)
rvi = math.sum(ta.swma(close-open), len)/math.sum(ta.swma(high-low),len)
sig = ta.swma(rvi)
offset = input.int(0, "Offset", minval = -500, maxval = 500, group=GRP5)
//plot(rvi, color=#008000, title="RVGI", offset = offset)
//plot(sig, color=#FF0000, title="Signal", offset = offset)


var longStopSet = false

long = ta.crossover(close,TopBox) and close > MAVW ? true : false
longClose = strategy.opentrades.profit(strategy.opentrades-1)>0 and ta.crossunder(rvi,sig) ? true : false
strategy.entry("Long Position", strategy.long, when = long and window() and strategy.position_size==0 and strategy.closedtrades<100)
if(longStopSet==false and strategy.position_size > 0)
    strategy.exit("exit", "Long Position", stop=BottomBox)
    longStopSet := true
if(strategy.position_size==0)
    longStopSet := false
strategy.close("Long Position", when = longClose)

var shortStopSet = false

short = ta.crossunder(close,BottomBox) and close < MAVW ? true : false
shortClose = strategy.opentrades.profit(strategy.opentrades-1)>0 and ta.crossover(rvi,sig) ? true : false
strategy.entry("Short Position", strategy.short, when = short and window() and strategy.position_size==0 and strategy.closedtrades<100)
if(shortStopSet==false and strategy.position_size < 0)
    strategy.exit("exit", "Short Position", stop=TopBox)
    shortStopSet := true
if(strategy.position_size==0)
    shortStopSet := false
strategy.close("Short Position", when = shortClose)