Strategi KDJ Sunshine Breakthrough Buy adalah strategi perdagangan kuantitatif berdasarkan indikator KDJ. Strategi ini menggunakan garis J indikator KDJ dan garis D untuk membentuk isyarat beli, membuat banyak masuk ketika melintasi garis D pada garis J. Strategi ini lebih sederhana, mudah dilaksanakan, dan sesuai untuk pemula dalam perdagangan kuantitatif.
Penunjuk teknikal utama yang digunakan dalam strategi ini adalah penunjuk KDJ. Penunjuk KDJ terdiri daripada K, D dan J. Di antaranya:
Nilai K = ((harga penutupan pada hari itu - harga terendah dalam N hari) ÷ ((harga tertinggi dalam N hari - harga terendah) × 100;
D = purata bergerak hari M pada nilai K;
J bernilai = 3K-2D.
Berdasarkan penetapan penunjuk KDJ, apabila nilai J naik melalui nilai D, menunjukkan bahawa harga saham berbalik naik, boleh melakukan lebih banyak; apabila nilai J turun melalui nilai D, menunjukkan bahawa harga saham berbalik turun, boleh melakukan pengurangan.
Strategi ini adalah menggunakan peraturan di atas, apabila melintasi garis D pada garis J, iaitu apabila garpu terbentuk, dinilai sebagai isyarat beli, masuk lebih banyak. ❚ exitsignal adalah garis J lebih besar daripada 100 dan keluar dari posisi lebih banyak.
Menggunakan KDJ untuk menentukan masa pembelian, indeks ini mengambil kira maklumat harga saham turun dan turun, dan lebih dipercayai.
Peraturan penilaian isyarat strategi mudah difahami, mudah diimplementasikan, dan sesuai untuk pemula dalam perdagangan kuantitatif.
Strategi Stop Loss digunakan untuk mengawal risiko.
Terdapat banyak ruang untuk mengoptimumkan parameter strategi, dan pelaksanaan yang fleksibel.
Indeks KDJ mudah membentuk isyarat palsu yang boleh menyebabkan kerugian.
Pembaikan garis pendek pasaran selepas pembelian mungkin menyebabkan stop loss keluar dan tidak dapat menangkap trend besar.
Tetapan parameter yang tidak betul boleh menyebabkan perdagangan yang kerap atau isyarat yang tidak jelas.
Perlu memberi perhatian kepada kesan kos urus niaga terhadap keuntungan keseluruhan.
Kaedah kawalan risiko utama: parameter pengoptimuman yang munasabah, peningkatan indeks pengesanan, pelepasan julat stop loss yang sesuai dan sebagainya.
Mengoptimumkan parameter KDJ untuk mencari kombinasi parameter terbaik.
Menambah syarat penapisan untuk mengelakkan isyarat palsu. Penapisan boleh digabungkan dengan petunjuk atau bentuk lain.
Seting parameter yang berbeza boleh dipilih mengikut jenis pasaran ((bull and bear market)).
Anda boleh melonggarkan margin stop loss dengan sewajarnya untuk mengurangkan kebarangkalian penarikan stop loss.
Ia boleh digabungkan dengan analisis indikator seperti jumlah dagangan untuk mengelakkan penipuan.
Strategi pembelian KDJ secara keseluruhan lebih mudah digunakan, mudah dilaksanakan, dan sangat sesuai untuk pemula yang melakukan perdagangan kuantitatif. Strategi ini mempunyai kelebihan perdagangan tertentu, tetapi juga terdapat beberapa risiko, yang perlu dioptimumkan secara khusus untuk memanfaatkan sepenuhnya nilai strategi. Secara keseluruhan, strategi ini patut diteliti dan diterapkan.
/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// ## !<------------------ Script -------------------------->
//@version=5
strategy('KDJ NVDA', shorttitle='KDJ')
ilong = input(9, title='period')
isig = input(3, title='signal')
bcwsma(s, l, m) =>
_bcwsma = float(na)
_s = s
_l = l
_m = m
_bcwsma := (_m * _s + (_l - _m) * nz(_bcwsma[1])) / _l
_bcwsma
// profit strategy add
profit_m = input.float(1.20,"Profit Margin",minval=1.0,maxval=1.99,step=0.05)
stop_m = input.float(0.98,"Stop Loss Margin",minval=0.0,maxval=1,step=0.05)
// Make input options that configure backtest date range
startDate = input.int(title="Start Date", defval=1, minval=1,maxval=31)
startMonth = input.int(title="Start Month", defval=1,minval=1,maxval=12)
startYear = input.int(title="Start Year", defval=2023,minval=2018,maxval=2024)
endDate = input.int(title="End Date", defval=1, minval=1,maxval=31)
endMonth = input.int(title="End Month", defval=1,minval=1,maxval=12)
endYear = input.int(title="End Year", defval=2024,minval=2018,maxval=2099)
// intialization of variables
// Look if the close time of the current bar
// falls inside the date range
inDateRange = (time >= timestamp(syminfo.timezone, startYear,startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
c = close
h = ta.highest(high, ilong)
l = ta.lowest(low, ilong)
RSV = 100 * ((c - l) / (h - l))
pK = bcwsma(RSV, isig, 1)
pD = bcwsma(pK, isig, 1)
pJ = 3 * pK - 2 * pD
KDJ = math.avg(pD, pJ, pK)
go_long= ta.crossunder(pD,pJ)
if (inDateRange and go_long)
strategy.entry("S",strategy.long,comment="C")
// strategy.exit("S", limit=c*profit_m, stop=c*stop_m, comment="SL/SP")
if (inDateRange and pJ > 100)
strategy.close("S", comment="TP")
// Plot options
// plot(pK, color= #1E88E5)
// plot(pD, color=#FF6F00)
// plot(ma, color=color.yellow)
// bgcolor(pJ>pD? color.green : color.red)
plot(pK, title='% K', color=color.new(color.orange, 0))
plot(pD, title='% D', color=color.new(color.lime, 0))
plot(pJ, title='% J', color=color.new(color.fuchsia, 0))
plot(KDJ, title='KDJ', color=color.new(color.white, 0))
// </PINE> </SCRIPT>
// ## This source code is subject to the terms of the ozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// ## !<------------------ End Script -------------------------->