所謂運用Array建構時序資料,是啥意思呢? 簡單的講,就是array內的數值是照時間順序排列,就像我們每天的開高低收、成交量這些,可以用[0]、[1]去取過去的值,只要能實現這件事情,很多我們自己收集來的資料,就能跟使用XQ內建的資料一樣,做出各種計算了,看了XQ點點滴滴上的文章,似乎沒有發現有關這方面的運用,那咱們就來自己搞一下囉
本文採用國發會每月公布之景氣燈號分數來當作範例,將景氣燈號分數繪製到XQ上,以下就來說明下步驟吧
感謝院長增加了第三個副圖指標,並且修改一些程式碼,避免一些錯誤產生,推薦大家也去院長的FB社團看看喔
1.取得時序資料
第一步當然就是要取得資料,且這個資料肯定是要跟時間有關係,可以到這個頁面下載資料,先調整你要的資料區間後下載,範例是取1999/12月到現在的資料
PS: 有的時候資料是文字的,也可以根據內容想辦法轉成數字,像比如說文字的優良,用5分代替,尚可,用4分代替等等
2.重新排列資料與時間上的對齊問題
由於我們取得的資料多是盤後或延遲的資料,資料該在何時出現,就很重要,不然可能會造成用未來值來做判斷的問題,以景氣燈號分數,每月公布的分數都是上個月的數字,八月底公布的景氣燈號分數代表的是七月的分數,如果這個數值在對齊時,將他出現在七月,那就會造成取到未來值的問題,畢竟七月的分數在七月並還沒有出來,所以,資料在對齊時,應該採用資料出現的時間,而不是該筆資料所代表的時間
所以景氣分數的原始數據(A~C欄位),拿到後,另外增加E、F欄位去計算資料實際出現的年份跟月份,就是跟原本代表時間差一個月
3.運用excel將所有數值,轉成陣列寫法
這個步驟是讓excel來幫你完成在XS內的陣列內容,不然在XS內一個字一個字打,可是打不完的
假設陣列名稱為score,而陣咧內要要寫的內容如下
score[1]=28; //2000年1月底發布,為上月景氣燈號分數
其中的1會對應到第一筆數值,即28,後面則是註記這筆資料出現的年月,這樣方面以後有問題時做比對。
上面陣列的內容,其中1、28、2000、1,都是屬於資料內既有內容,而其他黑色字部分,則是因應程式碼所需內容,我們要做的就是
- 拆解內容到各欄位 (R~Y欄位)
- 運用Concat函數將R到Y欄的內容串聯在一起,最終如AC欄位所呈現
4. 複製內容到XS腳本
新建一個選股腳本,講AC欄位所有資料都複製到腳本內,到這一步,數據資料的基本建置就算完成了
5. 資料讀取運用
不管是要畫指標或是未來要做其他計算,就要能夠找到相對應的值來,這邊會有兩個步驟要做
- 計算K棒所對應的陣列編號: 我們陣咧的編號是從1開始,代表的是2010年1月,我們可以用以下程式碼,計算出每一根月K棒的編號
value1=(year(date)-2000)*12+month(date);
- 根據陣列編號取值: 有了陣列編號之後,我們就可以根據陣列編號找到相對應的值了,只要用Score[編號]就可以了,下面範例寫的比較複雜點,因為我希望能根據景氣燈號的分數,出現不同顏色的柱狀體
另外,在上面的圖,可以看到景氣燈號隨分數而有不同顏色,寫法很簡單,如下
if score[value1]<=16 then plot5(score[value1],”低迷(<=16)”)
else if score[value1]>16 and score[value1]<=22 then plot4(score[value1],”轉向(17-22)”)
else if score[value1]>22 and score[value1]<=31 then plot3(score[value1],”穩定(23-31)”)
else if score[value1]>31 and score[value1]<=37 then plot2(score[value1],”轉向(32-37)”)
else if score[value1]>37 then plot1(score[value1],”熱絡(>=38)”);
6. 資料計算運用
在指標內,我們沒有用到任何的計算,想是相加相減前後的數值之些,但在選股或交易上可能就會用到了,由於我們已經用Array將這些資料變成時序資料了,基本上的運用就跟其他時序資料一樣,用中括掛去取值之前的值就好,但唯一要注意的是,當期的最新數值,一定要取前一個月的數值,所以當我們算出當月K棒在Array上的編號時,如要取本月能得到的最新值,就要用 arrat[value1-1],請一定要注意這點
小結
這種Array方式的運用,正確的將資料對齊時間非常重要,應該說完全不能出錯,不然可是會影響你的回測、你的判斷的
每天、每周、每月的數據,在對齊上可能都還有些細節要注意,如春節整個星期放假,會不會影響周資料的對齊等等,都要實做了才知道,就請自己注意了
可能還有更好的方式,來對齊時序資料,看看有無大神能分享下了
[檔案下載]

發佈留言
很抱歉,必須登入網站才能發佈留言。