2012年2月22日 星期三

Open tomorrow 及 Stop 的合併應用

這個因為使用 Next bar 作為交易命令動作時機的關係,導致每天開盤後第一根K棒如果有需要馬上進場卻會因為 next bar 而無法動作的問題,我接到好多次了。

我舉兩個情境做範例給大家做個思考,希望會有幫助。

一、假設今天收盤是8000,而當明天的第1根K棒有突破 8050 時(開盤直接過也算),進場作多。
if sessionlastbar=true 
then Buy next bar 8050 stop;

二、假設今天收盤是8000,而當明天的第1根K棒有突破 8050 時(但開盤直接過就不算),進場作多。
if sessionlastbar=true and Open tomorrow < 8050
then Buy next bar 8050 stop;



從上述的兩個情境,可以看到第一種是判斷進場的條件是在今天的收盤就已經確定,只是要等待價位突破的發生。第二種一樣是要等待價位突破的發生,但是我們可以藉由 Open tomorrow(或是 Open next bar)這個特別的內建字詞,把還沒有發生的開盤價拿來當做條件之一,作為條件是否成立而交易動作是否要執行的判斷。

讓我們來看看實作的效果。第一種,見價突破進場:


第二種,把下一根的開盤價引入條件判斷,直接開盤跳過預定觸價就不進場:


大家在剛開始學習程式交易的語法時,習慣了 Next bar MARKET ,以為沒有辦法在要動作的價位已經到了就馬上執行,必須要等到收盤,收盤價真的在要動作的價格之上才能在下一根執行交易命令,其實~不是這樣的^^

Stop / Limit 的命令都是在條件滿足的下一根價格一觸碰到就立刻做出動作的,這會很像所謂的 This bar,但其實只要在腦袋裡對條件判斷成立與否的思考做一下往前位移就可以實現了。切記,用 Next bar 作為交易發生的時機是為了確保條件判斷的成立與否不會反覆。

也許有人以為這個 Open tomorrow(即 Open next bar)的特殊資料字詞是一種 This bar 或是 IOG 模式,實際上...它壓根就不是 IOG 或是 this bar 啦!Open tomorrow(中譯:下一根的開盤價)只是利用了所有的交易動作必然發生在下一根K棒的開盤價出現的瞬間或以後的特性,把下一根K棒的開盤價拿來作為現在的條件判斷而已...就邏輯上來看,或許有窺探未來的意思,但實務上是完全合理的。