getfielddate一定要搭配getfield??

  •   193 
  • 最後發表   charlie1234  2022 九月 06
charlie1234 發文於   2022/08/23

小幫手好

選股時發現一個奇怪的狀況

感覺有選錯,所以用outputfield查看數據,發現用下面的程式碼,資料日期顯示為0

if volume>=10000 then ret=1;

outputfield8(getfieldDate("大戶持股比例", "W", param := 1000),"資料日期1");

但增加了一行outputfield9(getfield("大戶持股比例", "W", param := 1000),"本周千張大戶"); 資料日期就又出現了

新增的一行還嘗試用了 volume,結果是不行的

正常來說,只用getfielddate應該是可以的吧??

用季報的數據試了,只用getfielddate,數據是正常的

請小幫手了解下,謝謝

if volume>=10000 then ret=1;

outputfield8(getfieldDate("大戶持股比例", "W", param := 1000),"資料日期1");

outputfield9(getfield("大戶持股比例", "W", param := 1000),"本周千張大戶");

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/08/30

Hello charlie1234,

 

getfielddate 出現0代表的是沒有當期的資料。

加上 getfield("大戶持股比例", "W", param := 1000) 會出現數字是因為選股運作時如果沒有當期資料,會試著拉執行頻率上一期的資料。

此時就會拉到上週的資訊。

例如圖中執行後拉出的是 8/15 ~ 8/19 的資料。

您可以嘗試看看同時輸出以下資訊:

outputfield8(getfieldDate("大戶持股比例", "W", param := 1000),"資料日期1");

outputfield9(getfieldDate("大戶持股比例", "W", param := 1000)[1],"資料日期[1]");

outputfield10(getfield("大戶持股比例", "W", param := 1000)[1],"本周千張大戶[1]");

結果就會變成 0、上週一日期 和 上週大戶持股比例。

 

建議您在使用週資訊時可以直接拉出前期值。

 

charlie1234 發文於   2022/08/30

謝謝小幫手回應

1. 我的原問題在於  為何getfield有加跟沒加會影響到getfielddate的日期,這本身不應該是獨立的嗎? 

明明getfielddate出現0,代表沒有當期資料,就算加了getfield條件,也不該讓getfielddate從0變成有日期,不是嗎?

 

2. 以這邊的函數使用說明範例來看,並沒有用到[1],這樣為何就不會有0的問題?

https://xshelp.xq.com.tw/XSHelp/?HelpName=GetFieldDate&group=FIELDFUNC

 

mm = Month(GetFieldDate("月營收","M"));

 

3. 當沒有當期資料時,何時會出現0,何時會取前期值,是否能有一個明確的規則可以提供,這樣真的很混亂

 

 

XQ小幫手 發文於   2022/09/06

Hello charlie1234,

 

1.小幫手認為應該是因為執行的日子是星期一,所以才可以執行。

如同另外一篇文所說,如果當日無法篩選出來,選股會去抓前一個交易日觸發的商品。

而前日是上個星期五,所以會抓到上星期的週資料。

如果您是在星期二以後執行,getfield("大戶持股比例", "W", param := 1000) 就會因為沒有對應資料無法被篩選出來。

所以腳本其實也可以用 getfieldDate 來判斷要抓那個星期的資料,不過要符合實際狀況的話,直接使用 [1] 是比較適合的。

 

2.如果該欄位有資訊的話,就不會取到0。

財報欄位會取得最近的資訊,不會發生和大戶持股比例相同的狀況。

 

3.就小幫手所知,財報欄位不會發生這種狀況。

大部分會發生這種狀況的都是週頻率的資料。

 

目前相關人員有在規劃修改商品欄位時間對位判斷。

charlie1234 發文於   2022/09/06

感謝小幫手回覆

希望這個問題能儘快調整過來

 

發表回覆
Close