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 上去動手腳就行了。
熱門文章
-
殷鑑不遠。這是 2019/07/03 的台指期貨,在大約 10來秒的時間之中,台指閃崩了近 500點,並且快速回復。這樣類似的事件,在台指不是空前,也不會絕後,即使台灣期貨交易所有所謂的動態穩定機制在運作,這一天,據我所聽聞到也有不少友人在這很短的時間內... 中槍了。這裡,我們...
-
在 MultiCharts 裡,本來我以為 EntryPrice(0) 就代表了最後一個進場的成本價,經過測試後,確定了 EntryPrice( 0 ) 不是最後一次進場價,而是最後進場方向的第一筆價格(可查閱"程式交易語法大全 page 255")。什麼意思...
-
我在台指上的交易,讓交易策略每到結算日就收盤清倉的作法,已經維持數年。 僅用 if _checkDay then setexitonclose; 一句來達到訊號的回測。但是,這樣的寫法是不能直接用在日常實戰的。我自己不用內建下單機,不知道她會怎麼動作?而外接下單的方式,則因為單...
-
經過多年的策略開發對腦力的壓榨,如果手上的素材(資料)沒有新東西的話,基本可以說很快就會從滿腔熱血走到老狗變不出新把戲。因為最容易取得的資料就是商品歷史價格,策略的開發也就幾乎是圍繞在價格及其衍生的數值為基礎,也就是價格因素策略。 台灣是一個特別奇妙的市場,交易所公開的資料相...