2008年6月27日 星期五

This bar的迷思

常常有人公布出來的程式交易績效,美的像剛起飛的飛機,直挺挺的一直向上,但實際給他觀察,有很多是陷入This Bar的迷思,當你交易的指令是用This Bar去下單,就會有一些要考慮的事情,第一個是K棒本身沒有附帶時間資訊,只會知道開盤是多少,收盤以及高低點的價位,用This Bar去下單,你會不知道條件成立時候,是需要買在甚麼樣的價位,有可能會重新載入後,原本有的訊號,會消失不見,舉例來說,假設是用MACD買賣策略,用HTS寫的程式碼如下:

/*

MACD指標買賣策略

*/

Parameter: FastMA(12), SlowMA(26),MacdMA(9)

Variables: MacdVal(0),MacdAvg(0), MADiff(0)

MacdVal = MACD(Close, FastMA, SlowMA)

MacdAvg = EMA( MacdVal, MacdMA)

MADiff = MacdVal - MacdAvg

If MacdVal Cross Over MacdAvg Then

Buy ("Buy") Next Bar at Market

End if

If MacdVal Cross Under MacdAvg Then

Sell ("Sell") Next Bar at Market

End if

交易績效:



交易圖形:


如果將上面的買賣段落,換成下面的This Bar的交易,馬上績效就可以增加很多

If MacdVal Cross Over MacdAvg Then

Buy ("Buy") This Bar at Close

End if

If MacdVal Cross Under MacdAvg Then

Sell ("Sell") This Bar at Close

End if

This Bar交易績效表:

This Bar 交易圖形:

會造成This Bar的交易危機,並不在此盤後計算績效的圖形中,是在於盤中即時交易的時候,Close價位是伴隨著時間不斷的在產生以及變動的,在這個案例,如果你沒有加上時間限制式,那盤中在訊號成立的時候,就會一直去觸發交易訊號,若你有程式自動下單的話,就會不斷的下單,或是下錯價位,另外一種情況是,當初盤中有出現過買賣訊號,但是一旦重新載入資料之後訊號就不見了,因為在當下Close價位,是真的有達到條件的成立,但是當下的那一根的K線,在真正最後一筆價位確定後,卻沒有達到成立的條件,所以會造成事後指標的消失。

所以網路上會有很多人建議,不要用This Bar去做交易買賣,而是採用Next Bar這樣就可以避開此陷阱,但我認為,不需要因為這些問題,而放棄This Bar交易,要避免不斷下單,可以用程式去做條件限制,可以下時間限制式,或是限定買賣口數等等,那如果要避免事後計算的迷思,就必須要用我們開發的軟體,他可以打破K線的限制,資料是依照時間序列一筆一筆的送下來,這樣子去測試指標就不會有問題了,這時候你的指標還是能賺得,那可信度就真的很高,只要再注意別有最佳化參數的問題,那可信度就有9成以上了。




1 則留言:

viviwi 提到...

說得真好~~~為了避免迷思而捨棄掉This Bar點位的部分利潤,其實取捨真的是見仁見智,希望以後這樣的好文能多多分享唷~~先謝謝啦