20 9月 2008

交易成本的影響與設定多少合理?

寫程式交易的人常常會忘記設定交易成本,如此一來也還滿容易
寫出自High的程式,在這裡舉個實際的例子。

由之前已經發表過的冠軍系統當沖程式來看交易成本對獲利影響

測試時間:2001.01.01 ~ 2008.08.08
交易成本:0元/筆

這樣子的獲利曲線,真是太漂亮了,任何人看了都覺得驚嘆,但是
加上交易成本呢?


測試時間:2001.01.01 ~ 2008.08.08
交易成本:2000元/筆

天阿!這就是南柯一夢嗎?眼前的獲利都被交易成本吃掉了,這樣的
程式你還敢用嗎?

這時候我們會想到一個問題"交易成本設定多少合理?"
根據我實測程式單的經驗,程式交易會有滑價的問題,這個問題是很
難避免掉的,假設進場時有2~3點的滑價,出場時也會有2~3點
的滑價誤差;這樣來回一筆,交易成本就差了4~6點,加上手續費
與交易稅設定3點好了,平均每一筆交易就會額外減少7~9點的獲
利,這樣一來交易成本設定10點(2000元)也不為過,更能觀
察出實際程式交易的獲利曲線。

冠軍系統

之前看到日上發發發的一篇文章,裡面有個提問
"冠軍系統寫法?"

想法如下:
60分鐘的第二根K棒開於第一根之內
則突破第一根K棒高點則買進
則跌破第一根K棒低點則賣出

一篇滿久的文章,2007年的問題

這是個很簡單的交易策略,雖然板上已經有寫出答案,但是這
個答案似乎跟上面想法有點出入,因此在這裡將上面的想法利
用TS回測,並將想法修正成5K線:

開盤60分鐘後,9:45時開於前60分鐘高低點內
則突破高點則買進
則跌破低點則賣出

測試時間:2001.01.01 ~ 2008.08.08
交易成本:2000元/筆


加上交易成本後,這程式還滿糟糕的,而且交易次數有點大,若能用
在其他的濾網過濾掉一些盤整情況,至少能夠讓績效便成正數吧!

TS程式碼,應用於5K線上

vars: HL(0), LL(0), flag(0);

if date[1] <> date[0] then
 flag = 0;

if time = 0945 then begin
 HL = highest(high, 12);
 LL = lowest(low, 12);
end;

if time = 0945 and close < HL and close > LL then
 flag = 1;

If time >= 0945 and time < 1330 and flag = 1 then begin
 buy("B") 1 contract HL stop;
 sell("S") 1 contract LL stop;
end;

If time=1335 and CurrentContracts <> 0 then begin
 exitlong("EL") this bar on close;
 exitshort("ES") this bar on close;
end;


HTS程式碼,應用於5K線上

vars: HL(0), LL(0), flag(0)

if date[1] <> date[0] then
 flag = 0

if time = 094500 then 
 HL = highest(high, 12)
 LL = lowest(low, 12)
end if

if time = 094500 and close < HL and close > LL then
 flag = 1

If time >= 094500 and time < 133000 and flag = 1 then
 buy("B") 1 contract HL stop
 sell("S") 1 contract LL stop
end if

If time=133500 and CurrentContracts <> 0 then 
 exitlong("EL") this bar on close
 exitshort("ES") this bar on close
end if

 

19 9月 2008

Good drivers just drive

雖然都是廣告,但是很真實

好朋友一定要看
每次聽到發生事故的客戶,是因為車禍的發生,而造成家庭的不幸

所以也要一定告訴您的親朋好友

不要犯同樣錯誤
拿手機請靜止時再打

一失足成千古恨............





HTS與TS差異性 (2/2)

前幾天已經發表過HTS與TS一部份差異性,今天繼續完成另外一部份
實際上,HTS與TS差異性還滿多可以寫的,不過這幾篇文章就針對常
使用的部份做講解。

語法:
  1. 時間函數:
    HTS:time顯示的時間包含到秒,在使用上要限制某些時間
    事情時需使用6位數字表示。

    EX: 買賣訊號 9:00 ~ 13:00 才會出現
    if time >= 90000 and time <= 130000 then
    ......
    end if

    TS:time顯示的時間包含到分,在使用上要限制某些時間
    事情時需使用4位數字表示。

    EX: 買賣訊號 9:00 ~ 13:00 才會出現
    if time >= 900 and time <= 1300 then begin
    ......
    end;
  2. 內建函數:
    HTS與TS內建含數不同,但是也有些一樣,所以在套用的時候
    需注意檢查函數是否有支援,否則需要自行加入。
  3. 指標建立:
    HTS:新增指標的時候,使用不同繪圖函數即可畫出。

    TS:新增指標時需注意,若是要畫同步K線的話(如:裁縫線)
    需要另外選定不同工作圖表,才可以使用。
  4. this bar的寫法:
    HTS:有支援 this bar,但是在寫程式的時候是很危險的,特別
    容易讓人誤用。

    TS:唯一支援 this bar 的語法是 this bar on close,就是當跟收
    盤價。
  5. 註解代號:
    HTS:同C/C++語言
    // 表示整行註解
    /* 表示整個區域註解 */

    TS:特殊,第一次接觸需注意
    { 表示整個區域註解 }
  6. 區塊程式(for ...)
    HTS:
    for 起始條件 to 結束條件
    ...end for

    TS:
    for 起始條件 to 結束條件 begin...end;