免費下載
訂閱模組
搜尋
取得資料欄位時的「對位問題」
2023-10-12 09:23:40

大家好,本文將為大家介紹「如何正確使用欄位資料」。

有鑑於您可能會經常遇到這類問題,所以我們將問題分為兩個部分:

  • 變數的對位方式
  • 資料欄位的對位方式


變數的對位方式

很多 XQ 的資深用戶,經常使用「變數(Variable)」這個概念。

尤其是當我們想要進行 重複性較高的運算式 時,通常都會將資料欄位包入變數。

我們用以下情境來說明舉例:

用戶想要計算近 4 期的月營收平均,於是寫出下方 XS 代碼。

// 計算 近 4 期的月營收平均
Value1 = GetField("月營收", "M");
Value2 = Average(Value1+Value1[1]+Value1[2]+Value1[3], 4);

但由於變數後方的中括號,其實是代表著不同頻率下的資料內容

於是,系統將這串 XS 代碼理解成:

Value1 = 取得當期K棒日期之變數內容 = GetField("月營收", "M")

Value1[1] = 取得前 1 期K棒日期之變數內容 = GetField("月營收", "M")

 

您沒有看錯,Value1 和 Value1[1] 都會取得相同的欄位資料!

由於最新一期的月營收尚未公布,而用戶又誤將變數後方的中括號,當作是資料欄位的期數。

這時,如果在月營收尚未公布之前,就開始計算 T 日和 T+1 的月營收,用戶就會取得相同的資料,進而導致運算結果在某些時間點可能有誤。

 

▼ 從下方 2023-06-30 的選股結果就可發現,由於台泥 5 月營收為 95.96 億元;4月營收為 91 億元。但時間到了2023-07-03 ,當期月營收和上一期月營收卻都變成 95.96 億元。這就是誤將變數中括號內的期數,誤作成資料欄位期數的結果。

因此,當我們在使用變數時,要特別留意中括號的意義,以免造成運算結果錯誤唷

 


資料欄位的對位方式

那要如何正確地取得資料欄位呢?

其實方法非常簡單,您只需在呼叫資料時,於 GetField 後方加上中括號與期數。

因為您只需要在資料取得時,直接在後方加上中括號。

系統就會根據您輸入的 頻率 期數,自動判斷您想要取得的欄位資料究竟是第幾期?

GetField("月營收", "")[1] = 上一期月頻率的月營收

GetField("集保張數", "W")[3] = 前三期周頻率的集保張數

( 以此類推 )

不知道這篇對資料欄位的對位問題的說明,是否有解答您過去遇到的困難呢?

XS 團隊會繼續優化相關語法功能與應用,陪伴投資人一同茁壯成長,成為您專研量化交易的最佳夥伴。

我們下次見!