請教一下MACD的篩選寫法

  •   8 
  • 最後發表   pacoman  22 小時前
pacoman 發文於   2026/02/05

請教前輩們,我想用XS寫一個MACD的篩選,在週頻率時,這禮拜OSC數字大於上禮拜,同時MACD要在0軸以上,DIF12-26需要大於0,這樣寫要改進哪個地方?因為篩選出來的標的,有的有符合,有的不太符合,感謝幫忙!!!

截圖圖片

// 設定頻率為「週」,確保計算的是週線資料

SetBarFreq("W");

 

// 定義變數

variable: dif_val(0), macd_val(0), osc_val(0);

 

// 計算 MACD 指標

// 參數預設為: 收盤價, 短天期12, 長天期26, 訊號線9

MACD(Close, 12, 26, 9, dif_val, macd_val, osc_val);

 

// 篩選條件

// 條件1: 這禮拜 OSC 數字大於上禮拜 ([1]代表上一根K棒,即上週)

Condition1 = osc_val > osc_val[1];

 

// 條件2: MACD (訊號線) 在 0 軸以上

Condition2 = macd_val > 0;

 

// 條件3: DIF (12-26) 大於 0

Condition3 = dif_val > 0;

 

// 執行篩選:同時滿足以上三個條件

if Condition1 and Condition2 and Condition3 then 

begin

    ret = 1;

    // 可以在選股結果中顯示數值方便檢查

    OutputField(1, osc_val, 2, "本週OSC");

    OutputField(2, osc_val[1], 2, "上週OSC");

    OutputField(3, dif_val, 2, "DIF");

end;

排序方式: 標準 | 最新
虎科大許教授 發文於   2026/02/05

若你希望outputfield出來的指標數值與技術分析圖表相同,你需要做兩件事:

(1)計算MACD時不要用Close,而應改用weightedClose。

(2)準備資料要足夠,請在程式最前面增加setTotalBar(300);

pacoman 發文於   2026/02/07

謝謝許教授,已經解決了,感恩

發表回覆
Close