2013年12月6日 星期五

波段突破策略(with ATR)

 

紀錄一個常用也好用的邏輯,突破策略。區間突破最常使用在當沖程式裡,不過波段的程式使用起來也不差,基本邏輯就是由開盤向上漲多少要突破作多,向下跌多少要突破做空,很單純,最主要的因素只有這個突破的臨界點是如何決定?

 

先前曾經紀錄過簡單當沖突破的測試 - 當沖逆勢單進場。其中提到開盤點為準,漲50點作多,跌50點作空,如果沒翻就擺到收盤,這樣的邏輯在近年是無法獲利的。但是波段程式就不一樣了,能獲利。只是突破的區間要思考,不是單純點數或比例就能適用的。

 

這時 Average True Range(ATR) 平均真實範圍 就是個好用的指標,當行情波動大時,這個區間確認也應該放大,波動小時,則區間也小,因此加上波動性的指標有用處,ATR比其它波動性指標直接方便的是它本身就是價格的表示,而不是比例或無法對應的數字。例如ATR 100點,就是近期日高低點數平均在100點,而開盤後往上50點或往下50點的區間內都很正常,而我們設定的突破邏輯就是市價漲超過50點作多,跌超過50點作空。

 

搭配觀察指標和策略訊號的程式碼範例如下。

 

id

 

bkatr

 

在策略設計的部份只有一個參數,是要決定ATR用多少期間,其中變數TRX是每日的TR值,ATR用來紀錄…ATR,TR的陣列和其中註記//replace AverageArray的部份是因為Multicharts內建的AverageArray用起來不對勁,就自己再寫進策略裡,內容就是把TRX一個個放進TR陣列裡,放到最後一個時順便算一下裡面那些TR的平均值紀錄到ATR。

 

再詳細一點的紀錄程式,因為ATR在這個例子中使用的是日線層級,但實際運用的K線可能是10min、5min、8min之類的,會要再搭配其它的指標,所以才使用這種Array的方式將TR記錄下來,在新的一天開始時計算一次( date <> date[1] ),然後看是要多少個TR的平均,一個一個放進去,另外特別注意Array第一個位置是0起始,所以for迴圈裡目標值減一,這樣個數才對。

 

這個Array+For迴圈的方法在使用不同k線層級的指標時蠻好用的,可以多加利用,如果是常coding的朋友可能會覺得一個地方怪怪的,平常都是for i=0 to X,這邊因為i是 Multicharts 的關鍵字所以不能用,常常都要再改成 j….,是特別的習慣。

 

回到突破邏輯,以ATR所計算的近日高低作為區間,它近期的進出及績效(2005~2013,10min)如下。

 

chart

 

performance

 

trade

 

以一個不加濾網、不加出場邏輯、未設停損停利的邏輯來說,這樣的績效是蠻不錯的,值得繼續研究開發。

 

延伸一點的說,區間可以使用其它的波動性指標來調整、或直接用N日高低區間、或布林通道的區間、或參考CDP之類的,都可嘗試看看。這樣的突破邏輯應該是每個人都會測試過的基本款,不過應用時如何決定區間指標和如何搭配濾網就是深入的工夫了。

 

 

沒有留言:

張貼留言