選股腳本問題執行錯誤

  •   166 
  • 最後發表   阿博  2022 十二月 14
阿博 發文於   2022/12/10

小編你好,我的程式執行選股的時候如果選之前的日期去執行會有一堆顯示"除以零50501"的錯誤,但是我程式碼中的除式應該都不會是0,所以要再麻煩小編幫我看一下了,非常感謝

程式碼如下

 

input:l_foreign(3,"外本比大於");
input:l_Quote(-3,"漲跌幅%");

//value1 = GetField("股本(億)", "D");
value1 = GetField("最新股本");
value2 = GetField("外資買賣超", "D");
value3 = value2 / ((value1)*10000)*100 ; //外本比;

if value1<>0 and value3>=l_foreign
    then begin
        value20 = c;
        value21 = 1;
        value22 = date;
        value23 = value3;
    end;

if value1<>0 and (value20-close)/(value20)*100 > l_Quote and value21 = 1  
    then begin
        value21 = 0;
        ret = 1;
    end;


OutputField1(value22,"基準日期");
OutputField2(value23,"基準外本比");
OutputField3(value20,"基準收盤價");
OutputField4((c - value20)/value20*100,"漲跌幅");
OutputField5(value1,"最新股本");
OutputField6(value2,"外資買賣超");

附加文件

XQ小幫手 發文於   2022/12/14

Hello 阿博,

 

內建變數 (ex. value20) 的初始值會是0。

所以如果您的條件中 value1<>0 and value3>=l_foreign 不符合的話,value20 ~ value23 都會是0。

這就導致 OutputField4((c - value20)/value20*100,"漲跌幅"); 會出錯。

另外當選股欄位為空值時,系統會補0,這點也有可能會造成除以0的狀況。

 

發表回覆
Close