2014年7月31日 星期四

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

EasyTrader ArtNo 187
一個波動的市場特點是價格急劇跳動 -可能是大幅跳空缺口或者是連續1~3根的長K棒。波動突破系統旨在利用動盪市場中特有的價格劇烈跳動來獲得利潤。基本上此類交易系統會衡量最近的波動性,並在波動增加的過程中,價格向上突破時買入,價格向下跌破時賣出。
另一種衡量波動性加大的方式可以是兩條移動平均線間的差距、 跳空缺口的大小,或是每日的振幅變化。
介紹一個波動性擴張的交易系統,是針對市場價格移動偏離正常的交易區間來獲取利潤
1. 系統先建立一個 14根 K bar 的高低點交易區間
2. 當有兩根K棒突破上緣或跌破下緣時建立買賣訊號
3. 兩根K棒代表的是兩次也是用來當作過濾假信號用途

建立指標圖
inputs:Length(14),TrailLen(6) ;

Plot1(Highest(High,Length)[1],"HC") ;
Plot2(Highest(High,TrailLen),"LXT") ;
Plot3(Lowest(Low,TrailLen),"SXT") ;
Plot4(Lowest(Low,Length)[1],"LC") ;


系統參數與變數
Inputs: Length(14),BrkOutNo(2),TrailLen(6);
Vars: HighChannel(0),LowChannel(0),BreakOutCounter(0),BreakUnderCounter(0);

進場準備
1. 計算最近 14根K棒的最高點與最低點成為一個移動式的高低通道。

HighChannel = Highest(High,Length)[1] ;
LowChannel = Lowest(Low,Length)[1] ;

2. 分別計算突破最高點與跌破最低點的次數 ,只要突破上緣則跌破計數器歸零,反之跌破下緣則突破計數器歸零。

if High > HighChannel then Begin
BreakoutCounter = BreakOutCounter + 1 ;
BreakUnderCounter = 0 ;
end;
if Low < LowChannel then Begin
BreakUnderCounter = BreakUnderCounter + 1 ;
BreakOutCounter = 0 ;
end;

作多進場邏輯
當價格有兩次突破最近14根K棒最高點通道上緣時,建立多單部位 (不一定是連續兩根K棒突破 ,但這兩次中間不可以有跌破通道下緣的狀況出現)。

if BreakOutCounter >= BrkOutNo then Begin
Buy next bar at market ;
BreakOutCounter = 1 ;
end;

作空進場邏輯
當價格有兩次跌破最近14根K棒最低點通道下緣時,建立空單部位 (不一定是連續兩根K棒跌破 ,但這兩次中間不可以有突破通道上緣的狀況出現)。

if BreakUnderCounter >= BrkOutNo then Begin
Sell next bar at market ;
BreakUnderCounter = 1 ;
end;

出場規則
當多單在手時,價格跌破最近 6根K棒最低點時出場
ExitLong next bar at Lowest(Low,TrailLen) Stop ;

當空單在手時,價格突破最近 6根K棒最高點時出場
ExitShort next bar at Highest(High,TrailLen) Stop ;

新增一組內建追蹤停損利出場邏輯
{*******************************************************************
Description : ATR Trailing Stop Long Exit
Provided By : Omega Research, Inc. (c) Copyright 1999
********************************************************************}
Inputs: ATRs_L(3);
Variables: PosHigh(0), ATRVal_L(0);

{ 計算 10 ATR 的比例值 }
ATRVal_L = AvgTrueRange(10) * ATRs_L;

{ 多單進場當根K棒高點記錄下來 }
If BarsSinceEntry = 0 Then
PosHigh = High;

{ 當出現新高時 ,更新變數值 }
If MarketPosition = 1 Then Begin
If High > PosHigh Then PosHigh = High;

{ 當價格低於進場後最高點減去 10ATR比例值的時候平倉 }
ExitLong ("ATR") Next Bar at PosHigh - ATRVal_L Stop;
End else ExitLong ("ATR eb") Next bar at High - ATRVal_L Stop;

{*******************************************************************
Description : ATR Trailing Stop Short Exit
Provided By : Omega Research, Inc. (c) Copyright 1999
********************************************************************}
Inputs: ATRs_S(3);
Variables: PosLow(0), ATRVal_S(0);

{ 計算 10 ATR 的比例值 }
ATRVal_S = AvgTrueRange(10) * ATRs_S;

{ 空單進場當根K棒低點記錄下來 }
If BarsSinceEntry = 0 Then
PosLow = Low;

{ 當出現新低時 ,更新變數值 }
If MarketPosition = -1 Then Begin
If Low < PosLow Then PosLow = Low;

{ 當價格高於進場後最低點加上 10ATR比例值的時候平倉 }
ExitShort ("ATR_1") Next Bar at PosLow + ATRVal_S Stop;
End else ExitShort ("ATR_1 eb") Next bar at Low + ATRVal_S Stop;
end;

台指期 30分K 留倉 交易週期 2004/6/30 ~ 2014/6/30 交易成本 1200

台指期 30分K 留倉 交易週期 2004/6/30 ~ 2014/6/30 交易成本 1200 (加如意多空網)
結論:不論是TS或是MultiCharts 都有提供不少的內建進出場元素,多嘗試也可以對績效修正有幫助,以本例而言,內建ATR出場策略就比原始出場策略表現更好
MagicQS099

沒有留言:

張貼留言