某些股票無法顯示

  •   255 
  • 最後發表   凡恩大叔  2025 六月 17
凡恩大叔 發文於   2025/06/01

我的選股範圍是自選股, 包含 3406玉晶光, 5536聖輝, 6532瑞耘, 2317鴻海, 2382廣達, 4968立積, 3035智原, 6196帆宣, 2449京元電, 3035敬鵬.

底下程式碼無法跑不出 2449與 3035, 為何

 

variable:PEL(0), PEH(0), PEScale(0);

variable:PEStaDev(0), PEAve(0), PEF(0), PENow(0), PEAve60(0);

variable:PriceF1(0),PriceF2(0),PriceF3(0),PriceF4(0),PriceF5(0),PriceF6(0); 

variable:i(0), ii(0), iii(0),iiii(0),iiiii(0),iiiiii(0), k(1), x(21);

Array:RevMArr[33](0), RevQArr[11](0), RevCtArr[11](0), RevCtbArr[11](0), NPMArr[10](0), NPArr[10](0);

variable:RevM0(0), RevQ0(0), RevCt0(0), RevCtb0(0), NPM0(0), NP0(0);

variable:AveNPM(0), RevQF1(0), RevQF2(0), EPSF(0), StockQty(0), EPSNow(0);

variable:x4(0),x5(0), x6(0);

 

//for i = 0 to 40 RevMArr[i] = getField("月營收", "M")[i];

for ii = 1 to 11 RevQArr[ii] = getField("營業收入淨額", "Q")[ii]/100;//億

for iii = 1 to 11 RevCtArr[iii] = getfield("預收款項", "Q")[iii] / 100; //億

for iiii = 11 downto 2 RevCtbArr[iiii] = RevQArr[iiii-2] / RevCtArr [iiii];

//for iiiii = 1 to 10 NPMArr[iiiii] = getfield("稅後淨利率", "Q")[iiiii];//這個算法有問題

for iiiiii = 1 to 10 NPArr[iiiiii] = getfield("本期稅後淨利", "Q")[iiiiii]/100;//億

if getField("收盤價", "D") > 1

then ret=1;

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/06/02

看不出來你跑這些迴圈做什麼。它們與選股條件並沒有關係, 而且都只計算跑完迴圈的值(這樣的話,根本不必跑迴圈)。

凡恩大叔 發文於   2025/06/08

這只是完整程式的一部份, 我逐步收斂, 發現是這段代碼造成影響, 所以想請問為何會影響

虎科大許教授 發文於   2025/06/08

應該是資料筆數不足造成。你的主頻率是日,會使用到過去40個月(14季),試著setTotalBar(900)看看。

XS小編 發文於   2025/06/17

Hello 凡恩大叔,

 

小編補充,您可以在選股中心切換顯示的商品,若切換到顯示 執行錯誤的商品 的話,可以看到2449錯誤的原因是除以零 (參考附圖)。

 

是因為腳本中 RevQArr[iiii-2] / RevCtArr [iiii] 所導致,改為

for iiii = 11 downto 2 begin 

    if RevCtArr [iiii] <> 0 then RevCtbArr[iiii] = RevQArr[iiii-2] / RevCtArr [iiii] else RevCtbArr[iiii] = 0;

    end;

就可以正常顯示。

 

另外選股中心在執行時預設會使用腳本中包含的欄位所有資料,故不需另外設定 SetBackBar 來指定取得資料長度。

附加文件

發表回覆
Close