XQ選股 收盤價條件的小bug

  •   416 
  • 最後發表   算算有幾個六  2025 一月 10
算算有幾個六 發文於   2025/01/05

想請教一下
XQ選股上,針對收盤價的運用,若是選股腳本是以週為頻率的話,會希望一周內選股的選股檔數應該要一樣,

但想以收盤價為篩選條件的話,會發生若跨週,會選到不同檔數的問題,
舉例來說,若想選週收盤價<=90,最近發生的是12/27(五)沒有篩選到8482商憶-KY(收盤價90.1),但12/31篩選到了8482商憶-KY(收盤價88.9)
在禮拜五選股 會選出下週一要交易的股票 ,週收盤價的篩選是對的沒錯
但在下禮拜一選股,按理來說也應該要跟上禮拜五選出一樣的檔數才對,但這時週收盤價這個條件,就會變成等於日收盤價(因為這週還沒結束)

這種在週頻率的選股底下,收盤價的問題要怎麼解決呢?謝謝。

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

若當週還沒結束,則當週最後一個交易日的收盤價就是週收盤價。你在週一用週收盤價選股,用的其實是週一的日收盤價選股。你要一週內選股的檔數都相同,只能用getField("收盤價","W")[1]選股。

算算有幾個六 發文於   2025/01/05

但以選股來說 ,用getField("收盤價","W")[1],在周五選時就會選到上一週的資料,
週頻率的選股不就應該是選下一週要交易的股票嗎? 

搭配上XQ的自動交易來說,選股完的股票,就是在下一個交易日才能交易,但週五選的股票週一交易,跟週一選的股票週二交易,卻會出現不同的選股結果,

例如上述提到的12/27(五)沒有篩選到8482商憶-KY(收盤價90.1),但12/31(二)篩選到了8482商憶-KY(收盤價88.9)

虎科大許教授 發文於   2025/01/05

你可以用流程控制,在週五之前用[1],週五當天收盤後去除[1]。但這樣又不符合你當週每天選股的內容要一致的需求。

算算有幾個六 發文於   2025/01/05

教授好:
目前選股策略是以集保每週公布的股權分散表資料來選,故希望選股選出來的內容在周五-下周四選到的要是一樣,這樣在XQ自動交易上才會是下週一~五交易,不知這樣可否辦到,謝謝!

 

虎科大許教授 發文於   2025/01/05

那就在週五之前用[1],週五當天收盤後去除[1]。

算算有幾個六 發文於   2025/01/05

想問具體來說,週五之前用[1],週五當天收盤後去除[1],教授可以指點怎麼寫嗎~謝謝!!

虎科大許教授 發文於   2025/01/05

if DayOfWeek(Date)=5

then value1=getField("收盤價","W")

else value1=getField("收盤價","W")[1];

算算有幾個六 發文於   2025/01/05

但以台股來說,這樣會遇到有時候當週最後交易日不是星期五(ex國定假日)

 

虎科大許教授 發文於   2025/01/05

有交易的日期用Date,在當週還沒結束前,我們無法得知當天是否就是當週最後交易日,就像還沒收盤前,我們無法得知收盤的價格一樣。只有在下一根分K出現時,我們才知道已經收K。判斷當週最後交易日也是一樣,必須等到下週第一個交易日出現,才會知道最後交易日是哪一天。

XS小編 發文於   2025/01/10

Hello 算算有幾個六,

 

小編補充,目前集保欄位在選股有經過調整,會自動判斷是否需要抓取前期值。

細節可以參考 集保相關欄位調整 的說明。

另外也可以使用 GetFieldDate 回傳的資訊來判斷對應欄位是否已經更新。

若最新一期的欄位回傳值為0的話,代表該期資料尚未更新,可以改用前期資訊。

發表回覆
Close