上星期告訴大家如何回到自己的原點來尋找新的交易靈感,也舉了很簡單的當沖程式當作例子,讓大家知道,即便是很簡單的想法,都有獲利的潛力。想必大家也很有興趣是如何撰寫出來的,尤其是新手,這種簡單的交易策略,是最容易上手的。今天就來解析如何利用價格通道的原理,來應用於當沖策略。
什麼是價格通道?
對於不熟悉程式交易的人來說,說價格通道可能會有些陌生。不過大部分的人應該都知道,最簡單的價格通道就是利用最近N根K棒的最高點與最低點當作上下通道。也就是說取最近N根K棒的最高點-Highest(high,N)當作上通道,N根K棒的最低點-Lowest(low,N)當作下通道。一般來說,當價格突破上通道時,就進場做多;當價格跌破下通道時,就進場做空。這是很簡單的價格通道設定方式,對於新手來說,應該也是很容易上手。
把價格通道轉換成進場方式
想必有按時閱讀獵人專欄的人應該都知道如何把價格通道轉換成進場方式了吧!其實很簡單,只要在原本設定進場的指令動些手腳就可以了。舉例來說:原本你習慣設定下根K棒以市價進場,也就是Buy(SellShort) next bar at market;。替換成最近N根K棒的最高或最低點進場,也就是Buy next bar at Highest(high,N) stop;
或SellShort next bar at Lowest(low,N) stop;。所以獵人常在文章裡面說,破最近N根K棒的高點或低點進場,就是上面的用法喔!那上星期的程式到底怎麼寫呢?
價格通道當沖策略
撰寫一個訊號時,最重要的就是先設定參數與變數,參數是可以用來最佳化使用的,變數只是數值的暫存值而已。所以價格通道當沖策略的參數就是N根K棒的N,這樣你也可以自行在K線圖中變化你想使用的N值。所以要先設定inputs:N(20);,20是自行預設的數值,你可以自行選擇。而這個策略的主軸在於進場部分,要怎麼寫呢?參考如下:
IF T >= 0900 AND T <= 1200 THEN BEGIN當然進出場的時間上面只是舉例,不一定要設定9點跟12點,讀者可以設定自己喜歡的時間。而X跟Y分別代表多與空的進場次數,這樣的設定是限制當天多空只能各進場一次,避免過度交易的產生。那要怎麼計算進場次數呢?簡單的方式如下:
IF MARKETPOSITION=0 AND X=0 THEN begin
BUY NEXT BAR AT HIGHEST(H,N) STOP;
IF MARKETPOSITION=0 AND Y=0 THEN
SELLSHORT NEXT BAR AT LOWEST(L,N) STOP;
END;
MP=MARKETPOSITION;這邊使用MP來儲存目前的部位狀況,也就是MARKETPOSITION。MARKETPOSITION=1,就表示持有多單;MARKETPOSITION=-1,就表示持有空單;MARKETPOSITION=0,就表示空手。所以IF MP[1]=0 AND MP>0 THEN X=X+1;就表示做多一次,X就會累加一次,同理,Y也是。所以你要放寬多空進場次數的話,可以調整主程式的X與Y的限制範圍。
IF MP[1]=0 AND MP > 0 THEN X = X+1;
IF MP[1]=0 AND MP < 0 THEN Y = Y+1;
如此一來,程式的主軸就完成了,有沒有很簡單呢?有興趣的人可以試試看,當然你還可以加入自己的想法進去改寫,也許會寫出屬於自己的好程式喔!
獵人要在這邊告訴剛踏入程式交易領域的人,其實撰寫交易策略沒有這麼困難,困難的是你有沒有持續用心去寫,多寫才會熟悉語法跟指令,這樣才能培養把自己的想法轉換成程式語言的能力。因為寫程式交易最難的就是如何把交易想法傳換成程式語言,唯有不斷的練習與嘗試才有辦法更加精進。如果大家對本篇文章完整的程式碼有興趣的話,請多支持分享,並到此 回覆區留下資料,獵人會在分享數破100後,分享程式碼給大家練習參考。
希望本周的程式語言教學對於想進入程式交易領域的人會有幫助,也希望大家繼續支持獵人的專欄,獵人才有動力分享更多心得給大家喔!
撰寫程式交易最難的就是如何把交易想法傳換成程式語言,唯有不斷的練習與嘗試才有辦法更加精進。
除了網誌,幣圖誌每天還會在 Facebook 分享許多資訊,歡迎追蹤