2009年6月14日 星期日
分線內取日線的價格
之前我寫過一篇利用自己做函數的方式來抓取日線的價格:http://www.yctseng.net/2007/06/blog-post_26.html
這一次介紹的感覺上比較鳥的方式,但是在實作上可能算是比較容易的。至少不用去做好多個函數。萬一你在分線中要知道日線的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 上去動手腳就行了。
熱門文章
-
這個秘密我過去只在課程或是講座中才會提。今天把它公開,為什麼我以前下大台,到了近年卻下起小台來了。理由就是...這是天上掉餡餅的好事啊!不費吹灰之力就可以提昇自己的交易系統績效的期望值,何樂而不為! 首先,你應該會覺得小台的手續費比大台貴,怎麼可能不下大台改去下小台?簡...
-
說起資金管理,大約都會耳聞過 Kelly formula,也會聽過它其實用在交易上的問題很大。後來有以 Kelly 精神生出了 Optimal F。而它的來由與計算方法,我就不多贅述,請自行參考: 牧清華的文章 。 要把 Kelly formula 寫成 MultiCha...
-
在執行多策略組合交易的時候,每個策略圖表獨立運作,各自下各自的單。但我們常常可以發現在某些時候(特別是開盤),出現 A策略要翻多、B策略卻要翻空,對我們的帳戶來說,因為策略圖表獨立運作的原因,實際上卻幾乎同時發出買進、賣出的委託單,而成交回來的價格又往往是買外盤、賣內盤,這完全是...
-
承繼自上篇「 函數:十進位轉二進位 」。 說實在的,這篇文章在我自己的心中就像是在引導讀者走向 Curve over fitting。這個方法,基本上這麼做跟把圖表攤出來,搞 DataMining 也滿接近了 XD 過去,我們會在策略的測試中使用"參數"...