
這一次介紹的感覺上比較鳥的方式,但是在實作上可能算是比較容易的。至少不用去做好多個函數。萬一你在分線中要知道日線的MA60,那可真是會做函數做到想吐。
首先,在分線中抓取昨天的日線收盤,我會這樣做:
Value3= iff( D>D[1], C[1], Value3 )
是的,昨天的收盤價必須等到今天的開盤第一根K棒出現時才會得知,用Value3這個變數來儲存。從上面這一行語句中可以知道,當K棒的日期比上一根K棒大的時候,Value3會填入上一根的收盤價,其他的時候,則Value3一直保持與上一根K棒的Value3一樣,也就是 Value3 不會變化,除非K棒是每天的開盤第一根。
接著,如果我想知道前天或是大前天,更或是大大前天的日線收盤價呢?這時候就直接從Value3的序列來下手。因為Value3只會在每天開盤的第一根K棒有變化,其他的時間則不會,因此,不管在今天的哪一根K棒(開盤第一根除外),我只要倒數Value3往前的一天份的K棒數值就可以取得前天的日線收盤價:當今天開盤第一根出現時,Value3[0]就成為昨天的日線收盤價。以30分鐘線為例,Value3[10]就是前天的日線收盤價了,而Value3[20]就是大前天的日線收盤價,Value3[30]則是大大前天的日線收盤價。
我希望能在不同的分線都可以有比較自動取得多日前的日線收盤價,那麼我們就會需要使用這給內建函數:BarInterval。這是現在使用的分線是幾分線的意思,不如當你打開30分線的時候,BarInterval就會傳回30這個數值。而台指期一天的交易時間是300分鐘,所以只要把 300 / BarInterval 就可以知道一天會有幾根K棒了。
所以當你把 Value3= iff( D>D[1], C[1], Value3) 放在程式的前方, Value3 就可以用來記錄每天的收盤價(但不包含今日)。那麼前天的日線收盤價就是 Value3[ 300 / BarInterval*1 ],大前天呢?就是 Value3[ 300 / BarInterval*2 ],大大前天就是 Value3[ 300 / BarInterval*3 ] 了。
這樣就可以得到一個通式:Value3[ 300 / BarInterval*N ]。N就是用來表示幾天前的日線收盤價,當N=0可以得到昨天,N=1可以得到前天,N=2可以得到大前天的日線收盤價,依此類推。
接下來,如果你需要很多天的日線收盤價,只需要在 Value3[ 300 / BarInterval * N ] 的 N 上去動手腳就行了。