2014年12月11日 星期四

開發商品的交易系統 - 基礎篇 [20]

EasyTrader ArtNo 226
第二代動態突破交易系統(The Dynamic Break Out Strategya II)是 George Pruitt 將1996年在期貨雜誌所發佈且表現不錯的動態突破交易系統,加入自適應參數調整模組所修改的版本,在策略裡可以學習到以下重點
1.利用收盤價的標準差來衡量市場的波動狀況
2.利用自適應引擎來建立一動態的參數給策略使用

第二代動態突破交易系統在 1982 至2002 期間各商品市場的表現如下圖
動態突破II最值得稱道的地方就在於它能根據市場情況自動調節參數,它的基礎來自於唐奇安通道,若我們基於唐奇安通道的參數作參數最佳化測試,會發現同一個商品在不同時期最優參數值是不同的;另外不同的商品也顯示出適用的回溯週期也不同! 那麼,如何設計出自適應參數調節功能模組呢?

在動態突破II中,我們將採用市場波動率作為評判標準。大的波動率常常代表市場方向不明朗,我們通過增大回溯值,讓策略更難觸發交易;小的波動率常代表趨勢市場,通過減少回溯值,我們讓系統更容易交易。這樣可以使系統鎖定長期趨勢利潤而又能在趨勢發生改變時及時出場。當然利用市場波動率作為參數調節並不是唯一選擇,讀者也可以選用其他效果類似的指標來自動調節參數,從而來決定出場點。

需注意的是,自適應參數的調節區間是有範圍的。在這個例子中,動態突破II的回溯值在20—60之間,參數也設在這個範圍內。對於進場點,動態突破II一開始用過去20天來計算買賣界限,第一次買點就是過去20天最大的最高價,第一次賣點就是20天的最小值。每天結束後用30天收盤價的標準差作為市場波動率(也可以其他指標來估計波動率,如平均波動幅度,真實波動幅度,收盤價變化的標準差等等)。確定當天的市場波動率後,按數值與前一日做比較,按波動的幅度來確定回溯值,如果波動率增長了10%,那麼相應的回溯值也增大10%。

交易策略說明
{系統參數與變數定義}
Inputs: ceilingAmt(60),floorAmt(20),BolBandTrig(2.00);
Vars: lookBackDays(20),todayVolatility(0),yesterDayVolatility(0),deltaVolatility(0);
Vars: buyPoint(0),sellPoint(0),longLiqPoint(0),shortLiqPoint(0),upBand(0),dnBand(0);

{自適應模組}
{今日與昨日市場波動率計算}

todayVolatility = StdDev(Close,30);
yesterDayVolatility = StdDev(Close[1],30);

{波動率的變化率}
deltaVolatility = (todayVolatility - yesterDayVolatility)/todayVolatility;

{利用波動的變化率來調整K棒回溯值}
lookBackDays = lookBackDays * (1 + deltaVolatility);
lookBackDays = Round(lookBackDays,0);

{將回溯值控制在 20 ~ 60 之間}
lookBackDays = MinList(lookBackDays,ceilingAmt);
lookBackDays = MaxList(lookBackDays,floorAmt);

{利用布林通道上下緣作濾網}
upBand = BollingerBand(Close,lookBackDays,+BolBandTrig);
dnBand = BollingerBand(Close,lookBackDays,-BolBandTrig) ;

{依唐契安通道原理訂定多單與空單進場價格}
buyPoint = Highest(High,lookBackDays);
sellPoint = Lowest(Low,lookBackDays);

{計算多空部位平倉價格}
longLiqPoint = Average(Close,lookBackDays);
shortLiqPoint = Average(Close,lookBackDays);

{多單進場}
if(Close > upBand) then Buy("DBS-2 Buy") tomorrow at buyPoint stop;
{多單平倉}
if(MarketPosition = 1) then ExitLong("LongLiq") tomorrow at longLiqPoint stop;

{空單進場}
if(Close < dnBand) then Sell("DBS-2 Sell") tomorrow at sellPoint stop;
{空單平倉}
if(MarketPosition = -1) then ExitShort("ShortLiq") tomorrow at shortLiqPoint stop;

原始策略
台指期 30 分K 多空留倉 交易週期 2004/11/1~ 2014/10/31 交易成本 1200



加入如意多空網 + 固定比例停損利

台指期 30 分K 多空留倉 交易週期 2004/11/1~ 2014/10/31 交易成本 1200

結論:自適應性調整的作用在於隨盤勢波動來決定進場時機而非固定的數字,其原理也可應用在持倉部位口數的調整,以本策略而言回溯K棒數量就實際測試來看取消 20~60的限制,所得到的績效反而會比較好
MagicQS137

沒有留言:

張貼留言