2013年9月16日 星期一

★18種常用移動停利法--基礎篇

    「移動停利法」的邏輯,有很簡單使用移動平均線進行停利,也有很複雜使用指標進行循環停利,沒有一定的好壞,但是每個策略適用的移動停利方式也不盡相同,在此建議各位研究程式交易的讀者在移動停利這裡一定要花一點心思,因為這個對回測曲線影響不小,以我測試很多國家商品的歷史資料(美指、日經、義大利、黃金、石油、大陸商品期貨等),發現很多只要移動停利沒有設定,測試起來的績效差別很大。

     在這裡我會分三個單元分別介紹(一)基本移動停利法;(二)進階移動停利法;(三)測試篇。如果你是程式交易初學者,看到(一)應該就足夠。在進階移動停利法的裡面,我會放進四個範例策略加以測試,並且提供開放程式碼,供少數進階的讀者付費學習。

(一) 基本移動停利法

(1) 百分比移動停利法(% Trailing stop)

在TS或MC中的有個好用的函數叫SetPercentTrailing(amount, percent),簡單的解釋為當未平倉獲利超過amount這個值之後,當回檔pecent這個百分比,就馬上停利出場。

【範例】 以台指期為例,我在語法中寫入SetPercentTrailing(8000,50),數值8000在這裡指的是未平倉最大獲利金額8000元(相當於指數40點);而後面設定的50則是指未平倉獲利回檔的幅度為50%,也就是說當多單進場後賺到40點,回檔50%(20點),就停利出場。下面範例為在8051進場,盤中一度來到最低7981 (此時未平倉獲利最大值超過40點),之後反彈到50%的位置7981+0.5×(8051-7981)=8016,就停利出場。




(2) 固定點移動停利法 ($ Dollar Trailing)

一樣是TS或MC內建的函數SetDollarTrailing(amount),在amount的地方設定一個金額,當進場之後,最大未平倉獲利扣除這個金額,轉換成點數,就是應該出場的位置。

【範例】以大家常測試的台指期來練習,如下圖所示,我們設定SetDollarTrailing(4000),相當於多單進場後未平倉損益只要回檔超過4000元(相當於20點),就停損/利出場,因為這個函數不像SetPercentTrailing有最低門檻限制,因此出場時不一定是正報酬。下圖在指數7234點進場,一路都沒有回檔超過20點,直到7301之後回檔20點,也就是7281的位置,才停利出場。



(3) 簡單移動平均線移動停利法(SMA)

這個是很最簡單的移動停利方式,一般書籍中都會寫到,例如使用5日線進行移動停利,當進場後只要跌破近5日的移動平均價,則立刻出場。


程式的語法很簡單,只要先確定你多單進場點一定大於5日移動平均線,再加進下面這段話即可。

inputs: len(5);
value1=averagefc(close,len);
if marketposition>0 and close<value1 then sell next bar market;
if marketposition<0 and close>value1 then buytocover next bar market;


(4) 指數移動平均線停利法(Exponential moving average)

有些人認為簡單移動平均線,當指數快速噴出時,均線跟上的速度太慢,因而採用這種改良式的指數移動平均線,更能貼緊指數,避免乖離過大的誤判。程式的語法很簡單,只要先確定你多單進場點一定大於停利的均線,再加進下面這段話即可。

inputs: lenX(10);
value2=Xaverage(close,lenX);
if marketposition>0 and close<value2 then sell next bar market;
if marketposition<0 and close>value2 then buytocover next bar market;

(5) 加權移動平均線停利法(Weighted moving average)

類似(4),但使用的是加權移動平均線,曾經有人通盤模擬比較過SMA、EMA、WMA移動平均線,認為WMA是比較貼近現況的均線。語法如下:

inputs: lenW(10);
value3=Waverage(close,lenW);
if marketposition>0 and close<value3 then sell next bar market;
if marketposition<0 and close>value3 then buytocover next bar market;


(6) HL線移動停利法 (HL average)

移動平均線是過去一段時間收盤價格的平均值,若遇到狹幅盤整,均線把過去一段時間所有價位都計算進去,因此容易產生扭曲糾結現象。而HL移動停利線單純使用過去一段時間的最高價及最低價加起來除以2,當狹幅盤整時,過去一段時間的高低點變化不大,因此能有效改善一些移動平均線的缺點。

        
  HL平均線=0.5×[(過去一段時間最高價)+(過去一段時間最低價)]

停利語法寫法:

inputs: HL(10);
value4=0.5*(Highest(high,HL)+Lowest(low,HL));
if marketposition>0 and close<value4 then sell next bar market;
if marketposition<0 and close>value4 then buytocover next bar market;




程式交易初學者,看到這裡應該就可以用簡單的方式執行移動停利。但是……




接下來我會講一些在國外常見的一些進階的移動停利法,除此之外,在進階篇我會拿出4個範例策略,針對這些移動停利法分別進行測試,因為教材較為深入且包含完整程式碼,為求品質,僅開放付費閱讀。


(二) 進階移動停利法

(7) RSI反彈循環移動停利法
(8) 高低K線反彈循環移動停利法
(9) K線回顧移動停利法
(10) K棒階梯移動停利法
(11) 波動率發散移動停利法
(12) 波動率收斂移動停利法
(13) ATR發散移動停利法
(14) ATR收斂移動停利法
(15) 三均線變相移動停利 (SMA)
(16) 三均線變相移動停利 (XMA)
(17) 三均線變相移動停利 (WMA)
(18) 均線斜率變相停利法



系列文章:

0 留言:

張貼留言

如果有私人問題想請教,請透過網站右方『與站長聯絡』之表單,謝謝!

----------------------------------------------------------------------------------------------------
網站聲明(Disclaimer)
本教學網站內所提供之程式碼(包括函數、指標、訊號)屬開放程式碼,用意在於讓使用者學習程式語法之撰寫,使用者可以任意修改語法內容並調整參數。本網站所有之內容(包括文章、影片、歷史紀錄、程式碼、教材)限用於個人學習使用,請勿轉寄、濫用,嚴禁私自串接帳戶交易。
-------------------------------------------------------------------------------------------------