本益比陣列問題詢問

  •   379 
  • 最後發表   MARK YU  2024 七月 23
MARK YU 發文於   2024/07/14

你好

我想請問以下陣列公式,他可以跑但會有部分股票代號跑不出來,如3661 世芯,可以幫我檢查是那邊語法有問題嗎?主要目的是想用2500天的本益比去抓中位數在哪,並與最新的本益比來比較,看看現在的本益比相較過去歷史本益比中位數差距,感謝

Array: peA[](0);

var:  pe90(0),pe50(0); 

array_SetMaxIndex(peA, 2500);

value2 = 0;

for value1 = 1 to 2500 begin

    if getfield("本益比", "D")[value1] <> 0 then begin 

        value2 += 1;

        peA[value2] = getfield("本益比", "D")[value1];

        end;

    end;

array_SetMaxIndex(peA, value2);

Array_Sort(peA, 1, value2, true);

pe90 = peA[ceiling(value2 * 0.9)];

pe50 = pea[ceiling(value2 * 0.5)];

outputField1(pe90, "90分位數");

outputField2(pe50, "50分位數");

outputField3(GetField("本益比")/pe50, "本益比位置");

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/07/14

我分別測試3661及2330這兩檔,並顯示你跑迴圈時記錄的本益比。發行3661只往前跑到2125天,亦即跑到20151029就打住;而2330則跑到20140423,亦即跑了2500天。你去查詢看看3661在20151029更早一天到底發生了什麼事,應該就知道為何選不出來這檔股票。

MARK YU 發文於   2024/07/15

感謝幫助!

XS小編 發文於   2024/07/18

Hello MARK YU,

 

小編補充,您可以使用 GetFieldStartOffset 來判斷選股欄位歷史資料的長度。

若取得的資料超過可用長度的話會出現錯誤。

感謝 虎科大許教授 的熱心回覆。

虎科大許教授 發文於   2024/07/18

3661的GetFieldStartOffset("Date","D")只有2375筆,要抓2500筆會出錯。選股腳本的執行錯誤是直接顯示選不到股票,看不出錯誤在哪裡。

XS小編 發文於   2024/07/23

Hello MARK YU,

 

小編補充,選股中心的錯誤訊息可以在將 顯示 設定為 執行錯誤的商品 後確認 (參考附圖)。

附加文件

發表回覆
Close