2017年7月24日星期一

MetaStock 程式編寫入門4 - Cross()

程式編寫入門4 - Cross()

當我們編寫交易系統時,最常用到的也許就是穿越訊號,例如 10天線升穿 50天線,或 9天 RSI 升穿 30。在 MetaStock 中,這時就要用到 Cross() function:

Cross(DATA ARRAY 1, DATA ARRAY 2)

假設我們現在要建立一個移動平均線系統,買賣規則如下:

買入訊號
5天線升穿 20天線

沽出(平倉)訊號
5天線跌破 20天線

在 MetaStock 的操作步驟如下:

1. 首先打開 Enhanced System Tester,然後按 "New System...",輸入系統名稱:Moving Average Cross System。

2. 點選 "Buy Order" 標籤頁,在 "Formula" 裡輸入 Cross(Mov(C,5,S),Mov(C,20,S)),意思是 5天線由下往上升穿 20天線就買入,程式中的 "S" 代表我們採用簡單移動平均線。


3. 點選 "Sell Order" 標籤頁,在 "Formula" 裡輸入 Cross(Mov(C,20,S),Mov(C,5,S)),意思是 5天線由上往下跌破 20天線就沽出(平倉)。由於建立這系統只為了說明 Cross() function,因此我就省略了 "Sell Short Order"的設定,即是系統不會做淡倉。

4. 接下來可以進行 back-testing,這次我選了黃金作為測試對象,結果如下:


在 3/1/2000 至 31/12/2009這段期間,系統產生了 82筆交易,總獲利 371.2 Pts(未計交易成本)。以一張合約 100安士計算,利潤為 $289,536。

Cross() function 並不只應用於移動平均線,以下為其他例子:

Cross(RSI(9),30)
解釋:9天 RSI 由下往上升越 30。

Cross(MACD(),Mov(MACD(),9,E))
解釋:MACD線升穿其訊號線。


0 留言:

發佈留言

若對於本篇文章有任何批評指教或鼓勵健議,歡迎留言。

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More