GetField錯誤導致script無預警停止

  •   30 
  • 最後發表   Blues  昨天
Blues 發文於   2024/05/14

昨天(20240513)執行選股時發現有些股沒有被選出來,

debug後發現是某些欄位沒有資料,導致蓋個股的執行就被中斷,(script沒斷,只是該個股中斷),但xq也沒有報錯,

簡易選股script 如下: 

 

if  Symbol <> "1102.TW" then return;
print(file("debug.txt"), text(date," begin"));
print(file("debug.txt"), text(GetField("營業利益率", "Q")));
print(file("debug.txt"), text(date," end")); 

 0510還抓的到營業利益率

0513就抓不到營業利益率,print也沒有執行到,也沒傳回0,應該是執行被中斷了

 下圖是1102在2024/05/13時看到的財報資料

 

排序方式: 標準 | 最新
Blues 發文於   2024/05/14

今天資料更新後1102已可正常抓取資料

貌似是當日更新季報的的資料未完全匯入XQ導致資料出現問題

比如今日(20240514) 1220更新季報,但有欄位還沒有資料,就會發生問題

Blues 發文於   2024/05/15

2009已在05/08更新了季報,但到今天為止(5/15),在執行 GetField("研發費用率", "Q")時也還是會造成script中止,且無任何錯誤

另外5/8起GetFieldDate("研發費用率", "Q") 已有變成 20240301 

script 如下,log如附件:

if  Symbol = "2009.TW" then ret=1;
if  Symbol <> "2009.TW" then return;
print(file("debug.txt"), text(SYmbol,",",numToStr(date,0)," begin 3"));
print(file("debug.txt"), text(SYmbol,",",numToStr(GetFieldDate("研發費用率", "Q"),0))); //營業利益率
print(file("debug.txt"), text(SYmbol,",",numToStr(GetField("研發費用率", "Q"),2))); //營業利益率
print(file("debug.txt"), text(SYmbol,",",numToStr(date,0)," end"));
outputfield(1,GetFieldDate("研發費用率", "Q"),0,"研發費用率日期");
outputfield(2,GetField("研發費用率", "Q"),2,"研發費用率");

附加文件

XS小編 發文於   2024/05/21

 Hello Blues,

 

就小編所知,這是當該季財報已更新,但其中某些欄位尚未更新的時候,會因為腳本運算時取用尚未更新欄位得到空值而導致中斷。

目前只能夠手動修改腳本避開未更新的欄位。

相關人員有在規劃如何處理類似的欄位問題。

感謝。

 

發表回覆
Close