在TS及MC的軟體中有一個指標叫Accm Swing Index,這個指標其實只是簡單把Swing index指標累加起來而已。

001_ Jun. 23  

 

因為有些人不是使用MC或TS,所以在此列Swing Index出程式碼。

 

variables: var0( 0 ), var1( 0 ), var2( 0 ), var3( 0 ), var4( 0 ), var5( 0 ) ;

if DailyLimit <> 0 then
begin
var2 = AbsValue( H - C[1] ) ;
var3 = AbsValue( L - C[1] ) ;
var4 = H - L ;
var5 = AbsValue( C[1] - O[1] ) ;

if var2 >= var3 then
begin
var0 = var2 ;
if var2 >= var4 then
var1 = var2 - 0.5 * var3 + 0.25 * var5
else
var1 = var4 + 0.25 * var5 ;
end
else
begin
var0 = var3;
if var3 >= var4 then
var1 = var3 - 0.5 * var2 + 0.25 * var5
else
var1 = var4 + 0.25 * var5 ;
end ;
if var1 <> 0 then
SwingIndex = 50 * ( ( ( C - C[1] ) + 0.50 * ( C - O ) + 0.25
* ( C[1] - O[1] ) ) / var1 ) * var0 / DailyLimit
else
SwingIndex = 0 ;
end ;

 

----------------

開始進入主題,當我看到一個指標時,我會拿來測試的語法很簡單,就是利用"簡單突破"的方式,測試程式的適應性。從Accum Swing Index可以看出這個指標跟指數波動的相關係數很高,因此初步推測此指標可進行簡單突破測試。

 

首先,我會先用很簡單的方式測試這個指標的有效性,那就是Accum Swing Index創過去一段時間新高時,馬上買進;當指標創過去一段時間新低時,馬上作空,語法如下:

inputs:len(30);

value1=value1[1]+swingindex;

if value1>=highest(value1,len) then buy next bar market;
if value1<=lowest(value1,len) then sellshort next bar market;

如果把上面這個策略套用在台指期上面,績效回測如下:

2001~2013年回測結果

002_ Jun. 23  

 

策略表現很普通,但是如果再進一步去分析虧損時候的原因,大概會發現這個策略沒辦法抵抗中期的劇烈振盪(±150點的振盪)、另外在波動率低的時候也差強人意。

用很簡單的證明方式,我把程式語法稍作修改,當最近三天的k線高低振幅小於300點的時候(波動波較低),則用比較快的方式進場,程式碼如下:

 

inputs:len(30);

value1=value1[1]+swingindex;

if value1>=highest(value1,len) then buy next bar market;
if value1<=lowest(value1,len) then sellshort next bar market;

if MAXLIST(HIGHD(1),HIGHD(2),HIGHD(3))-MINLIST(LOWD(1),LOWD(2),LOWD(3))<300 then begin
if value1>=highest(value1,0.5*len) then buy next bar market;
if value1<=lowest(value1,0.5*len) then sellshort next bar market;

end;

003_ Jun. 23  

 

可以看到我簡單把語法拆解,就可以提升獲利能力超過25%,更別提MDD的降低。

雖然我並沒有使用這隻策略,但是我希望透過這種簡單的說明,可以讓初學者學到更多"策略分析及修改"的想法。

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 wenschair 的頭像
    wenschair

    程式交易≠Holy Grail

    wenschair 發表在 痞客邦 留言(0) 人氣()