Strategi KDJ adalah strategi dagangan kuantitatif berdasarkan indikator KDJ. Strategi ini menggunakan penyeberangan emas garis J dan D pada indikator KDJ untuk membentuk isyarat pembelian, melakukan banyak masuk ketika melintasi garis D pada garis J. Strategi ini lebih mudah, mudah dilaksanakan, dan sesuai untuk pemula yang berdagang kuantitatif.
Indikator teknikal utama yang digunakan dalam strategi ini ialah indikator KDJ. Indikator KDJ mengandungi garis K, D dan J. Di antaranya:
Nilai K = (Kehadiran harga pada hari itu - harga terendah dalam N hari) ÷ (Hadiah tertinggi dalam N hari - harga terendah) × 100;
Nilai D = purata bergerak hari M untuk nilai K;
J = 3K-2D.
Mengikut tetapan penunjuk KDJ, apabila nilai J memakai nilai D, menunjukkan harga saham terbalik naik, lebih banyak boleh dilakukan; apabila nilai J memakai nilai D, menunjukkan harga saham terbalik turun, boleh dilakukan kosong.
Strategi ini adalah untuk menggunakan peraturan di atas, apabila garis J melintasi garis D, iaitu apabila garpu emas terbentuk, memutuskan sebagai isyarat beli, masuk lebih banyak; isyarat keluar adalah untuk keluar lebih banyak jika garis J lebih besar daripada 100.
Penggunaan indikator KDJ untuk menentukan masa membeli adalah lebih dipercayai.
Peraturan penghakiman isyarat strategi adalah mudah, jelas, mudah difahami dan sesuai untuk pemula perdagangan kuantitatif.
Dengan menggunakan strategi pencegahan, risiko boleh dikawal dengan berkesan.
Parameter strategi mengoptimumkan ruang yang besar, pelaksanaan yang fleksibel.
Indikator KDJ mudah membentuk isyarat palsu yang boleh menyebabkan kerugian.
Penyesuaian jangka pendek pasaran selepas membeli mungkin menyebabkan penyingkiran stop loss dan tidak dapat menangkap trend besar.
Tetapan parameter yang tidak betul boleh menyebabkan perdagangan yang kerap atau isyarat yang tidak jelas.
Perhatian perlu diberikan kepada kesan kos urus niaga terhadap keuntungan keseluruhan.
Kaedah kawalan risiko utama: optimum parameter yang munasabah, peningkatan indeks penjejakan, pelebaran julat stop loss yang sesuai, dan lain-lain.
Mengoptimumkan parameter KDJ, mencari kombinasi parameter yang terbaik.
Menambah keadaan penapisan untuk mengelakkan isyarat palsu.
Seting parameter yang berbeza boleh dipilih mengikut jenis pasaran.
Jangkaan stop loss boleh dilepaskan dengan sewajarnya untuk mengurangkan kemungkinan stop loss keluar.
Ini boleh disatukan dengan analisis penunjuk seperti jumlah dagangan untuk mengelakkan penipuan.
Strategi pembelian KDJ secara keseluruhan adalah mudah, mudah digunakan, dan sangat sesuai untuk pemula yang ingin melakukan perdagangan kuantitatif. Strategi ini mempunyai kelebihan perdagangan tertentu, tetapi juga terdapat beberapa risiko yang memerlukan pengoptimuman yang disasarkan untuk mewujudkan nilai strategi secara menyeluruh. Secara keseluruhan, strategi ini patut dipelajari dan digunakan.
/*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 -------------------------->