Closed(1)數值會失準

  •   233 
  • 最後發表   傳聖  2018 五月 24
傳聖 發文於   2018/05/22

您好,想請教一下,我今天寫了一個選股邏輯,發現程式內容會影響Closed(1)取出來的數值,提供程式碼如下:

input: DayLength(20);

//Value2 = Average(GetField("SharesUnderCentralCustody"),DayLength); //計算DatLen集保張數的平均值

SetOutputName1("股價1日前價格");   

OutputField1(closed(1));

ret =1;

第一筆台泥輸出前一日價格是46元沒有問題(5/21收盤價)

但是當我將第二行註解拿掉,重新編譯過並且執行之後

台泥的前一日收盤價格變成45.65元(5/17收盤價)

想請問一下這個狀況為什麼會發生,該如何解決呢,感謝!

排序方式: 標準 | 最新
XQ小幫手 發文於   2018/05/23

Hi 傳聖

會發生這樣的狀況,是因為 SharesUnderCentralCustody 僅支援週頻率

第一次跑的時候,因為註解掉第二行,故執行頻率會為日,取出來的前一日收盤價會是46元,沒問題

但第二次跑的時候,因為將第二行註解拿掉,為了跑 集保張數 故執行頻率會為週,而這週尚未有集保張數資料,故closed(1) 會取到上週五的前一天,也就是 05/17 的收盤價。

 

解決方式:請將第二行改為跨頻率語法取得 集保張數 選股欄位資料,並將執行頻率改為日,如下範例:

Value2 = Average(GetField("SharesUnderCentralCustody","W"),DayLength); //跨頻率計算DatLen集保張數的平均值

 

跑出來的圖如下,應該會沒問題了,請您再試試看,謝謝。

傳聖 發文於   2018/05/24

好的,我測試之後可以了,感謝您的回覆~

  • 按讚來自於
  • b24524658
發表回覆
Close