新手的程式三部曲:用「兩行程式碼」寫出均線交叉策略【單元2】
在正式進入PowerLanguage教學前,本篇「新手的程式三部曲:用『兩行程式碼』寫出均線交叉策略」並非浮誇或誤導,我們的用意是希望幫助有心學程式交易卻沒有程式基礎的投資朋友卸下顧慮,鼓勵跨出第一步喔!
>>讀完本文您可以學到什麼?
1. 學程式交易沒那麼難
2. 把交易點子轉化為PowerLanguage程式的基本流程
寫程式三部曲:想法→草稿→成品
寫程式交易語法,簡單講就是先把交易邏輯定義出來,然後用適當的語法表達出來,而所謂「適當語法」有許多是PowerLanguage已內建的函式或關鍵字就可以搞定,所以不用想的太複雜,先從已經內建在MC的範例切入,透過不斷經驗累積,慢慢就可以學會囉。
均線交叉策略是相當基本的順勢交易策略,以長、短兩條均線的交叉來買賣,以下示範一個完全沒學過PowerLanguage的使用者,如何以用兩行程式碼就來建構出一個均線交叉策略,一起來看看吧:
步驟一:先把交易邏輯完文字表達出來:
1.做多邏輯:當短均線(5MA)向上交叉長均線(20MA)多單進場。
2.做空邏輯:當短均線(5MA)向下交叉長均線(20MA)空單進場。
步驟二:思考步驟一的交易邏輯有哪些關鍵字與運算,對應到PowerLanguage會用到那些函式或保留字:
1.找出關鍵字:「均線」、「交叉」、「多單進場」、「空單進場」。
2.使用函式與保留字:
■「均線」=計算平均值函式Average(close,N)。
■「交叉」=保留字cross over(向上交叉) & cross below(向下交叉)。
■「多單進場」=Buy next bar at market
■「空單進場」=SellShort next bar at market
因此我們把交易邏輯以PowerLanguage關鍵字及函式帶入,得到以程式語法表達的程式碼:
If average(close,5) cross over average(close,20) then buy next bar at market;
If average(close,5) cross below average(close,20) then sellshort next bar at market;
讀者沒看錯,上面兩行程式碼就是一個均線交叉買賣策略,馬上可以套到MC上任一商品回測績效。對初學者來講,這裡的學習重點就跟學英文要背單字一樣,學程式首先要做的就是把一些常用的關鍵字跟函式背起來。
兩行程式碼的均線交叉策略其實是比較粗糙的寫法,完整正確的程式腳本應至少包含變數/參數宣告、前置運算及策略主體三部分,均線策略完整寫法如下:
是不是開始有點複雜了?不過別擔心,只要您循序看完我們接下來的教學,並多加練習,很快就可以有能力寫出自己的交易策略!
把2行均線策略買賣訊號套在K線圖上
在上一例中相信讀者已經可以理解寫MultiCharts程式也可以很簡單(但不必然都是簡單),讀者可以參考下方的例圖,依下列流程示把程式腳本寫在PowerLanguage Editor並套到MultiCharts的K線圖上,完成您的第一個MultiCharts圖表&交易訊號。
整體來說,把兩行均線策略買賣訊號套在K線圖上,可以依循下列動作:
■完成訊號套用線圖
■除錯(Debug):
接下來讀者可以插入均線指標(內建指標「Mov Avg 2 Lines」,參數設定跟策略一致),比對這個長短均線交叉策略的訊號是否正確。
■檢視:
接著,透過打開績效報告能幫助我們了解這個策略的優劣特性,如果有使用參數(Input),還可以跑參數最佳化功能(本例沒有使用參數)。
■優化:
下一步,是根據檢視的內容,透過濾網、出場策略、使用外部資料等方法,將策略優化修正。
■上線自動交易
以上大致就是一個交易想法到實單自動交易的快速流程。
快速結論
所謂的「想法→草稿→成品」三部曲,就是先把想法梳理出來,在草稿階段釐清邏輯跟訂出架構,需要那些運算?執行那些動作?流程為何?
再用PowerLanguage回答/轉化上述問題,也就是如何用程式語法表達出來,最終修成一個程式完成品。當越來越熟練時,草稿階段就會越短,因為你已經掌握任何想法該如何精準直接寫出成品了。
接下來的學習單元,我們將一步一步帶領讀者認識與運用PowerLanguage的運作邏輯、變數/參數、常用函式、常用關鍵字以及控制流程等,從零開始,你一定也會寫交易程式。
【警語】:
- 本文所舉之語法範例為教學之用,非提供交易策略,請讀者警慎運用。
- 自動交易如遇系統異常或斷線等問題,可能暴露更高的風險,交易人仍應檢查電腦系統或網路之狀態,特別要隨時注意部位變化,以降低相關風險。