關於月營收抓取創前期新低的腳本

  •   154 
  • 最後發表   love07050618  2023 九月 26
love07050618 發文於   2023/09/17

https://xshelp.xq.com.tw/XSHelp/?HelpName=GetFieldStartOffset&group=GENERALFUNC

想請教一下,關於月營收抓取創前期新低的腳本,我有參考此篇文章寫了一個但是卻找不到選股,想知道哪邊寫錯了?想知道正確完整的寫法 謝謝

value1 = GetFieldStartOffset("月營收", "M");
if value1 = 0 then begin
 ret = 1; // 只有1期, 就當成創新低了吧
 outputField1(GetField("月營收", "M"),"月營收");
end else if value1 < 0 then begin
 // 算出前N期的最小值
 value2 = Lowest(GetField("月營收", "M")[1], value1);
 if GetField("月營收", "M") < value2 then ret = 1;
 outputField1(GetField("月營收", "M"),"月營收");
end;

{

月營收,創前期(季),最小值,新低

}

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/09/26

 Hello love07050618,

 

小幫手建議您先閱覽教學區,裡面有XS語法的基礎和應用可以閱覽。

 

GetFieldStartOffset 裡面有說明,該函數只會回傳 -1 (無此欄位,或是欄位的初始點超過目前bar的位置) 或以上的數值。

所以 else if value1 < 0 這一段是不符合的,因為當 value1 為 -1 時該欄位並沒有資料。

 

判斷當月營收是否創掛牌新低的正確寫法應為:

value1 = GetFieldStartOffset("月營收", "M");

if value1 = 0 then begin 

    ret = 1;  // 只有1期, 就當成創新低了吧

    outputField1(GetField("月營收", "M"),"月營收");

    end 

else if value1 > 0 then begin

    // 算出前N期的最小值

    value2 = Lowest(GetField("月營收", "M")[1], value1);

    if GetField("月營收", "M") < value2 then ret = 1;

    outputField1(GetField("月營收", "M"),"月營收");

    end;

  • 按讚來自於
  • youthful
love07050618 發文於   2023/09/26

感謝小幫手的解答!

發表回覆
Close