2013年6月23日 星期日

★Accm Swing Index策略(含程式碼)

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





因為有些人不是使用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年回測結果





策略表現很普通,但是如果再進一步去分析虧損時候的原因,大概會發現這個策略沒辦法抵抗中期的劇烈振盪(±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;






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


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

0 留言:

張貼留言

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

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