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 上去動手腳就行了。
熱門文章
-
在 MultiCharts 或是 TradeStation 中都有 Set開頭的一些指令可以運用,比如 停損─SetStopLoss、停利─SetProfitTarget,這些都是所謂的 ThisBar 模式運作的特殊指令,它們讓你在條件成立的當根K棒就可以做出對應動作,而不是一...
-
在 MultiCharts 裡,本來我以為 EntryPrice(0) 就代表了最後一個進場的成本價,經過測試後,確定了 EntryPrice( 0 ) 不是最後一次進場價,而是最後進場方向的第一筆價格(可查閱"程式交易語法大全 page 255")。什麼意思...
-
去年開發「 把策略訊號轉換成選擇權去執行 」的時候,一直有個實務上的困擾:標的物價格。 我要把訊號轉成選擇權的時候,事前不能精準的知道要交易哪一個履約價、Put 或 Call,需要在訊號或市況變化的當下才決定交易標的。但在 MultiCharts 的運作架構上,需要開啟欲取...
-
殷鑑不遠。這是 2019/07/03 的台指期貨,在大約 10來秒的時間之中,台指閃崩了近 500點,並且快速回復。這樣類似的事件,在台指不是空前,也不會絕後,即使台灣期貨交易所有所謂的動態穩定機制在運作,這一天,據我所聽聞到也有不少友人在這很短的時間內... 中槍了。這裡,我們...