免責聲明:請注意,本文內容僅分享個人改寫的常用的技術工具,一切內容僅供參考,完全不涉及任何投資買賣建議。
本腳本名為「快速KDJ指標」,是用XS語言撰寫的技術指標腳本,專門用於計算並顯示KDJ指標(隨機指標)的相關數值與訊號。KDJ指標是基於KD指標的延伸,常用於股票、期貨或其他金融商品的技術分析,能夠識別超買超賣狀態、趨勢反轉點,以及買賣訊號。腳本不僅計算標準的RSV(原始隨機值)、K值、D值,還額外計算J值(KD的加權變形值),並提供多種穿越訊號偵測功能,包括RSV與D線穿越、K與D線穿越,以及J值的極端超買/超賣與穿越訊號。
腳本的主要特點:- 指標計算:使用內建Stochastic函數快速計算RSV、K、D值,並根據使用者選擇計算標準或變形J值。
- 視覺化呈現:繪製K、D、J、RSV線,並在超買/超賣區間進行填色顯示,輔以基準線(80%、50%、20%)作為參考。
- 訊號偵測:提供8種買賣訊號,幫助使用者識別潛在的進場或出場時機。
- 靈活調整:透過輸入參數可自訂計算週期、平滑權數、J值公式及超買/超賣門檻,適用於不同頻率(如日線、5分K線)的K棒數據。
- 適用範圍:適合用於XQ交易平台或其他支援XS語言的系統,作為指標腳本(Indicator Script)運行。腳本強調效率,避免不必要的陣列或中間變數,符合XS的最佳實務。
此腳本可協助交易者快速判斷市場動能與反轉機會,尤其適合短期波段操作或結合其他指標使用(如移動平均線)。
使用說明
1. 腳本類型與執行環境
- 腳本類型:指標腳本(Indicator Script),適用於技術圖表顯示。
- 執行頻率:可應用於各種K棒頻率(如日線、60分K線、5分K線)。若使用不同頻率數據,請注意調整取值方式(例如使用GetField函數取得多期數據)。
- 平台需求:XQ交易平台或相容XS語言的環境。腳本使用內建函數Stochastic、Plot、PlotFill等,請確保平台支援這些函數。
- 安裝方式:將腳本程式碼複製到XQ編輯器中,儲存為.xs檔案,然後在圖表上載入指標。
2. 輸入參數說明
腳本提供以下輸入參數,使用者可在載入指標時調整(格式:參數名稱(預設值, "中文說明")):
- Length(7, "計算天數"):KDJ計算的K棒週期數。例如,預設7根K棒約等於1.5週日線數據。建議值:短期操作用5-9,長期用14-21。調整此值會影響指標的敏感度(較小值更敏感,易產生假訊號)。
- RSVt(3, "RSVt權數"):RSV的平滑權數,用於計算K、D值的移動平均。預設3,值越大指標越平滑,反之更靈敏。
- JType(0, "J值計算方式"):J值的計算公式選擇。
- 0:標準公式 (J = 3K - 2D),強調K值的權重,更適合捕捉快速反轉。
- 非0:變形公式 (J = 3D - 2K),強調D值的權重,更平穩,適合趨勢追蹤。
- OverBought(80, "超買線"):超買門檻值。當K值超過此線時,視為超買區(填色顯示),建議值80-90。
- OverSold(20, "超賣線"):超賣門檻值。當K值低於此線時,視為超賣區(填色顯示),建議值10-20。
3. 輸出與視覺元素
- 繪製線條:
- Plot1:K值線(標題 "K(%)")。
- Plot2:D值線(標題 "D(%)")。
- Plot3:J值線(標題 "J(%)")。
- Plot4:RSV值線(標題 "RSV")。
- Plot15-17:基準線(上基準線80%、中基準線50%、下基準線20%),作為固定參考水平線。
- 填色顯示:
- 當K值 > OverBought時,在超買線到K值間填色(標題 "超買"),表示潛在賣出壓力。
- 當K值 < OverSold時,在超賣線到K值間填色(標題 "超賣"),表示潛在買入機會。
- 中間區間無填色。
- 訊號標記(使用Plot7-14繪製,值為1時觸發):
- D買 (Plot7):RSV由下而上穿越D線,且D值與K值均<20(超賣區),表示買入訊號。
- D賣 (Plot8):RSV由上而下穿越D線,且D值與K值均>80(超買區),表示賣出訊號。
- K買 (Plot9):K值由下而上穿越D值,且K值<50,表示買入訊號(黃金交叉)。
- K賣 (Plot10):K值由上而下穿越D值,且K值>50,表示賣出訊號(死亡交叉)。
- J超買 (Plot11):J值由≤100穿越>100,表示極端超買(賣出警示)。
- J超賣 (Plot12):J值由≥0穿越<0,表示極端超賣(買入警示)。
- J買 (Plot13):J值由≤0穿越>0,且K值<20,表示J值從超賣區回升(買入訊號)。
- J賣 (Plot14):J值由≥100穿越<100,且K值>80,表示J值從超買區回落(賣出訊號)。
4. 使用建議與注意事項
- 應用情境:
- 短期交易:在盤整市場中使用穿越訊號(如K買/K賣)捕捉反轉;在趨勢市場中,結合J超買/超賣避免假訊號。
- 結合其他指標:建議與成交量或移動平均線搭配使用,例如K買訊號出現時確認成交量放大。
- 訊號過濾:超買/超賣訊號在強勢趨勢中可能持續,勿單獨依賴;穿越訊號適合低頻率K棒(如日線)以減少噪音。
- 風險提示:
- KDJ指標對盤整市場敏感,但強勢趨勢中易產生鈍化(持續超買/超賣)。調整Length參數可緩解。
- 腳本僅計算歷史數據,不保證未來表現。交易前請進行回測,並考慮市場風險。
- 若腳本用於不同頻率數據,請避免直接使用變數存取前期值,改用GetField函數以確保準確性。
- 自訂與擴展:
- 可在腳本末尾添加條件判斷,輸出到選股腳本或交易系統。
- 若需修改顏色或線條樣式,請在Plot函數後添加自訂參數(但腳本已遵守指標注意事項:Plot僅包含數值、名稱與checkbox)。
// 快速KDJ指標
// 本程式計算KDJ指標,包含RSV與D線穿越訊號、K與D線穿越訊號,以及J值超買超賣與穿越訊號
//
input: Length(7, "計算天數"); // KDJ計算的K棒週期數 (例如1.5週約7根K棒)
input: RSVt(3, "RSVt權數"); // RSV平滑權數
input: JType(0, "J值計算方式"); // J值計算方式選擇 (0: 標準公式, 非0: 變形公式)
input: OverBought(80, "超買線"); // 超買門檻值 (例如80)
input: OverSold(20, "超賣線"); // 超賣門檻值 (例如20)
variable: rsv(0); // RSV值
variable: k(0); // K值
variable: _d(0); // D值
variable: j(0); // J值
vars:
UpBaseLine(80), //上基準線
MidBaseLine(50), //中基準線
UnderBaseLine(20); //下基準線
// ------------------------------
// 1. 計算KDJ指標相關數值
//
Stochastic(Length, RSVt, 3, rsv, k, _d); // 計算RSV、K、D值
// ------------------------------
// 2. 計算J值
//
if JType = 0 then
j = 3 * k - 2 * _d // 標準J值公式: 3K - 2D
else
j = 3 * _d - 2 * k; // 變形J值公式: 3D - 2K
// ------------------------------
// 3. 繪製KDJ指標線
//
Plot1(k, "K(%)",checkbox:=1); // 繪製K值線
Plot2(_d, "D(%)",checkbox:=1); // 繪製D值線
Plot3(j, "J(%)",checkbox:=1); // 繪製J值線
Plot4(rsv, "RSV",checkbox:=1); // 繪製RSV值線
// ------------------------------
// 4. 超買超賣區間填色
//
if k > OverBought then begin
// K值位於超買區間,填色顯示
PlotFill(5, OverBought, k, "超買"); // 從超買線到K值進行填色
NoPlot(6); // 清除超賣區間填色
end else if k < OverSold then begin
// K值位於超賣區間,填色顯示
PlotFill(6, OverSold, k, "超賣"); // 從超賣線到K值進行填色
NoPlot(5); // 清除超買區間填色
end else begin
// K值位於中間區間,清除所有填色
NoPlot(5); // 清除超買區間填色
NoPlot(6); // 清除超賣區間填色
end;
// ------------------------------
// 5. 檢測RSV與D線穿越訊號
//
// 訊號1: RSV由下而上穿越D線
if rsv[1] <= _d[1] and rsv > _d and _d < 20 and k < 20 then // RSV前一根低於或等於D值,當前RSV高於D值
Plot7(1, "D買"); // 繪製RSV由下而上穿越D線訊號
// 訊號2: RSV由上而下穿越D線
if rsv[1] >= _d[1] and rsv < _d and _d > 80 and k > 80 then // RSV前一根高於或等於D值,當前RSV低於D值
Plot8(1, "D賣"); // 繪製RSV由上而下穿越D線訊號
// ------------------------------
// 6. 檢測K與D線穿越訊號
//
// 訊號3: K值由下而上穿越D值
if k[1] <= _d[1] and k > _d and k < 50 then // K值前一根低於或等於D值,當前K值高於D值
Plot9(1, "K買"); // 繪製K值由下而上穿越D值訊號
// 訊號4: K值由上而下穿越D值
if k[1] >= _d[1] and k < _d and k > 50 then // K值前一根高於或等於D值,當前K值低於D值
Plot10(1, "K賣"); // 繪製K值由上而下穿越D值訊號
// ------------------------------
// 7. 檢測J值超買超賣與穿越訊號
//
// 訊號5: J值進入極端超買
if j[1] <= 100 and j > 100 then // J值前一根小於或等於100,當前J值大於100
Plot11(1, "J超買"); // 繪製J值進入極端超買訊號
// 訊號6: J值進入極端超賣
if j[1] >= 0 and j < 0 then // J值前一根大於或等於0,當前J值小於0
Plot12(1, "J超賣"); // 繪製J值進入極端超賣訊號
// 訊號7: J值由超賣區回升
if j[1] <= 0 and j > 0 and k < 20 then // J值前一根小於或等於0,當前J值大於0
Plot13(1, "J買"); // 繪製J值由超賣區回升訊號
// 訊號8: J值由超買區回落
if j[1] >= 100 and j < 100 and k > 80 then // J值前一根大於或等於100,當前J值小於100
Plot14(1, "J賣"); // 繪製J值由超買區回落訊號
plot15(UpBaseLine, "上基準線");
plot16(MidBaseLine, "中基準線");
plot17(UnderBaseLine, "下基準線");


















