2010年12月8日 星期三

程式編寫入門5 - 常用技術指標

除了移動平均線,投資者最常用的技術指標,相信非 RSI、STC 及 MACD 莫屬。現在簡單介紹一下它們在 MetaStock 程式中的表達方式:


為幫助理解,我們嘗試自行建立隨機指數 (STC),在 Indicator Builder 輸入以下的指標名稱及程式:

Name:STC
Formula:
Stoch(14,3)


可以看到,Stoch(14,3) 代表慢隨機指數的 %K (14天 / 3天),那麼 %D 呢?由於它是 %K 的 3日平均值,因此可以用 Mov() function 來建立:

Mov(Stoch(14,3),3,S)

現在我們嘗試利用 Stoch() function 建立一個交易系統。

1. 打開 Enhanced System Tester,再按 "New System...",輸入系統名稱:STC System。


2. 在 "Buy Order" 裡輸入以下程式:

     Mov(Stoch(14,3),3,S)<20 AND
     Cross(Stoch(14,3),Mov(Stoch(14,3),3,S))


第一行的意思是 %D 的數值在 20以下,而第二行是指 %K 由下往上升穿 %D,兩者同時發生的話就做好倉。

3. 在 "Sell Order" 裡輸入:

     Cross(Mov(Stoch(14,3),3,S),80) OR
     Cross(Mov(Stoch(14,3),3,S),Stoch(14,3))

意思是當 %D 升越 80,或 %K 跌破 %D 就平好倉。

4. 在 "Sell Short Order" 裡輸入:

     Mov(Stoch(14,3),3,S)>80 AND
     Cross(Mov(Stoch(14,3),3,S),Stoch(14,3))

%D 在 80以上,且 %K 跌破 %D 就做淡倉。

5. 在 "Buy to Cover Order" 裡輸入:

     Cross(20,Mov(Stoch(14,3),3,S)) OR
     Cross(Stoch(14,3),Mov(Stoch(14,3),3,S))

當 %D 跌破 20,或 %K 升穿 %D 就平淡倉。

6. 接下來進行 back-testing,我選了恆指作為測試對象:


結果顯示,若單純地根據 STC 的訊號來買賣,由 2000年至今共蝕了 5192點。是否代表 STC 毫無價值?卻也未必。我嘗試加上一條 200天線作濾網,看看能否改善這個系統的表現:

BUY ORDER

C>Mov(C,200,S) AND
Mov(Stoch(14,3),3,S)<20 AND
Cross(Stoch(14,3),Mov(Stoch(14,3),3,S))


我希望只有在牛市中才接受 STC 的買入訊號,這裡以 200天線作為牛熊分界線,C>Mov(C,200,S) 這句,即代表恆指的收市價要高於 200天線。

SELL SHORT ORDER

C<Mov(C,200,S) AND
Mov(Stoch(14,3),3,S)>80 AND
Cross(Mov(Stoch(14,3),3,S),Stoch(14,3))


同樣,恆指要低於 200天線,才接受 STC 的沽出訊號 (做淡)。

至於平倉訊號則維持不變,再做一次 back-testing,看看結果如何:


加入 200天線作濾網後,交易筆數由原本的 291下降至 76,而且轉虧為盈,證明我們成功過濾掉一些不理想的交易。雖然 1708點的利潤微不足道,但我的原意只是示範 Stoch() function 的實際應用,並不是想推介這個交易系統,所以不用太在意測試結果。

沒有留言: