選股KD近9日是否>80或<20>

  •   118 
  • 最後發表   malcolmchen  2023 六月 14
malcolmchen 發文於   2023/06/11

XQ老師們好,

我想篩選近9日,KD沒有>80的標的,只要沒有>80就return 1。

我跑了以下程式但還是選到近9日KD>80的標的,請問是For loop有問題嗎?謝謝你們

input: Length(9), RSVt(3), Kt(3);
variable: rsv(0), k(0), _d(0), isSet(0), isOversold(1), i(0); 

Stochastic(Length, RSVt, Kt, rsv, k, _d);

For i = 0 to Length
Begin
    if isSet = 0
        if k[i]>80 then
            isOversold = 0;
            isSet  = 1;
            break;
        if k[i]<20 then
            isOversold = 1;
            isSet  = 1;
            break;
    else Ret = isOversold;
End;

Ret = isOversold;

XQ小幫手 發文於   2023/06/14

Hello malcolmchen,

 

KD是種需要用到前期值指標,故資料讀取筆數要設的足夠才能夠計算出正確的數值。

可以參考內建的選股KD腳本來設定。(SetTotalBar(maxlist(Length,6) * 3 + Length);)

 

另外,變數isSet和isOversold都沒有重置,所以會發生在資料預讀筆數符合時就保持在該筆的狀況。

建議您可以修改為:

isSet = 0;

isOversold = 0;

for i = 0 to length begin

    ...

    end;

這樣的方式,避免之前的Bar運算因為符合 >80 或 <20 而 isSet 等於 1 的狀況,卡住isOversold的數值。

 

您可以用print或outputfield 將相關數值輸出確認。

發表回覆
Close