程式碼編譯除錯請教

  •   31 
  • 最後發表   diloga  5 週前
diloga 發文於   2021/09/20

編譯時沒有錯誤,但是執行時卻提示分母可能為0無法顯示的警示

可以麻煩幫我檢視嗎?以下是程式碼

Input:length1(8),length2(13),length3(26); 

variable: SU(0),SD(0);   

 

if close >= close[1] then   

  SU = CLOSE - CLOSE[1]   

else   

  SU = 0;   

 

if close < close[1] then   

  SD = CLOSE[1] - CLOSE   

else   

  SD = 0;    

 

value1 = (summation(SU,length1)-summation(SD,length1))/(summation(SU,length1)+summation(SD,length1))*100;   

value2 = (summation(SU,length2)-summation(SD,length2))/(summation(SU,length2)+summation(SD,length2))*100; 

value3 = (summation(SU,length3)-summation(SD,length3))/(summation(SU,length3)+summation(SD,length3))*100; 

 

plot1(value1, "CMO1");

plot2(value2, "CMO2");

plot3(value3, "CMO3");

排序方式: 標準 | 最新
GammaCEO 發文於   2021/09/20

你可以把最後變數1~3都加上條件判斷式 if su<>0 and sd<>0 then.....試試看

XQ小幫手 發文於   2021/09/22

Hello diloga,

 

小幫手會建議您在用變數進行除法時可以先判斷分母是否為0。

您的狀況就會是 value1, value2, value3。

舉例來說,value1可以修改成:

if (summation(SU,length1)+summation(SD,length1)) <> 0 then 

    value1 = (summation(SU,length1)-summation(SD,length1))/(summation(SU,length1)+summation(SD,length1))*100

else

    value1 = 0;

附上修改過的指標腳本供您參考。

 

感謝 GammaCEO 的熱心回覆。

附加文件

diloga 發文於   2021/09/23

感激解惑

 

diloga 發文於   2021/09/23

是否判斷式有可能分母為0時都必須利用變數排除法?

 

XQ小幫手 發文於   2021/09/24

Hello diloga,

 

是的,只要是分母可能為0就會需要先檢查,不然執行時發生分母為0的狀況就會報錯。

發表回覆
Close