想必大家對城市獵人這部漫畫應該不陌生吧,
城市獵人所慣用的武器是手槍,並不是機關槍。
不過機關槍用起來比較方便,掃射敵人也很快,
手槍子彈又沒幾顆,一下子就用完了。
但是城市獵人為什麼還是使用手槍,
不使用機關槍呢?當然,手槍體積小,攜帶也方便,
使用機關槍,雖然可以連續掃射,很方便,
但總有點亂槍打鳥的感覺,
似乎是給槍法不準的人用的,
神槍手彈無虛發,所以使用子彈不多的手槍就夠了。
與其漫無目標的掃射,不如精準的射擊比較有效率。
不過這跟我們接下來要討論的主題有什麼關係呢?
賣個關子,繼續看下去就知道了。
上次程式獵人遇到兩個朋友在對話,
一個是在法人機構上班的法人A,
另一個是自己在家自營的散戶B。
散戶B:我那個營業員收我的費用好貴喔,
口數交易不多,費用都壓不下來。
法人A:是喔,我們在公司下單,費用還蠻便宜的,
當然我們下的口數也比較大啦!
散戶B:好羨慕喔!不過更機車的是,每次遇到快市,
就是有大行情的時候,我們下單很容易延遲,
所以滑價問題很嚴重。
法人A:真的嗎?我們在公司端,因為部位大,
公司的設備跟軟體也比較好,有專人在管理資訊問題,
所以就算是快市,滑價5點內應該都做得到。
平常就不用說了,頂多滑1、2點吧!
散戶B悲情的說:難怪散戶常常被吃得死死的,
下單就有順序之分,散戶永遠在法人跟VIP大戶之後,
真是太不公平了!
由上面的對話我們可以發現,
散戶在作交易的時候,會遇到最大的問題就是,
滑價成本跟交易費用。
所以在我們寫交易程式的時候,
交易次數是一個很重要的關鍵,
不管是你在寫當沖還是留倉程式的時候,
程式每次進出,都會有滑價成本跟交易費用,
所以交易次數過多,會造成成本與費用大增,
日積月累起來,可不是一筆小數字。
所以我們必須好好管控我們的彈藥,
不要像使用機關槍一樣,到處掃射,
搞不好這樣一個人都沒掃到,你的彈藥就已用盡。
所以我們要跟神槍手城市獵人學習,
要能彈無虛發,個個命中。
接下來我們用之前的 RSI指標程式,來看看次數多寡的影響。
回測時間,SHOW TIME!
回測目標 :交易次數多寡對獲利的影響
回測標的 :用台指15分K線作留倉交易。
回測成本設定 :費用來回設定為1000元以及2000元作比較。
回測時間 :從1998年到現在(不過前三年數據參考就好)。
進場方式:
(1)當短期(6根K棒)RSI線由下往上突破長期(12根K棒)RSI線時,
啟動買進訊號,當價格向上突破前3根K棒高點時進場做多。
當短期(6根K棒)RSI線由上往下突破長期(12根K棒)RSI線時,
啟動賣出訊號,當價格往下突破前3根K棒低點時進場做空。
濾網:基本上我們使用開盤後第一根K棒的高低點當作壓力線與支撐線,買訊啟動後要過壓力線才進場做多;
賣訊啟動後要往下破支撐線才進場做空。
出場方式:(1)設定停損點數為150點。
(2)到期當天出場,等到下次訊號出現時在進場,此方式可以避免到期換月問題。
所以我們將所有情況分成四種-
1. 成本1000元,不加濾網(交易次數多)。
2. 成本2000元,不加濾網(交易次數多)。
3. 成本1000元,加濾網(交易次數少)。
4. 成本2000元,加濾網(交易次數少)。
我們將報表整理如下:
上圖為四種情況的歷年績效表
上圖為四種情況的歷年績效直方圖
上圖為四種情況的其他重要數據表
所以很明顯的可以知道,
交易次數過多,如果你是法人,你可能還會賺錢,
如果你是散戶,註定就是會賠錢。
但是交易次數就少的話,其實散戶還是可以賺到錢的,
雖然還是輸給法人。
所以大家就知道了,做交易,錙銖必較,
下單速度很重要,交易成本也非常重要,
所以我們必須要好好的建構我們的交易系統,
並且找到一個好心的營業員,
可以少收我們一點費用,
這樣我們就可以快樂地作交易了。
從上面幾張圖表中,可以知道,
當我們不加濾網的時候,交易次數其實非常的多,
平均一年可以交易到400次左右,
但是一年也才不到260個交易日,
這樣的次數也太未免太多了。
在加了濾網之後,交易次數平均一年降到只有不到140次,
績效表現當然也比較好,不過我們還是希望次數可以在少一點。
因此要降低次數,勢必要加入一些其他的濾網,
所以濾網將來也是我們很重要的課題。
不過這篇文章主要是想跟大家說,
我們一定要好好的控管交易次數,
亂槍打鳥是沒有用的,可能會傷及無辜害到自己,
希望可以跟城市獵人一樣變成神槍手。
而且之前我們也提過,
市場大概只有30%的時間有趨勢,其他70%幾乎都在盤整,
所以我們的交易次數也希望可以維持在所有天數的3到4成左右,
這樣是比較合適的選擇,當沖的程式交易也是。
其實交易次數對當沖的交易者來說更為重要,
因為你在一天內進出,滑價跟成本影響更大,
下次有機會,我們再來看看交易次數對當沖程式的影響有多大。
最後一樣再把程式碼附上給大家做參考,
跟之前的文章有些許不同,做了些修改
var : buyflag(false),sellflag(false),dh(0),dl(0);
if time=0915 then begin
dh=highd(0);
dl=lowd(0);
end;
if RSI(close,6) crosses above RSI (close,12) then begin
buyflag=true;
sellflag=false;
end;
if RSI(close,6) crosses below RSI (close,12) then begin
buyflag=false;
sellflag=true;
end;
if buyflag=true and high > dh and high > highest(h,3)[1] then begin
buy next bar at highest(high,3)+1 stop;
end;
if sellflag=true and low< dl and low < lowest(l,3)[1] then begin
sell next bar at lowest(low,3)-1 stop;
end;
if marketposition > 0 then exitlong at entryprice-150 stop ;
if marketposition < 0 then exitshort at entryprice+150 stop ;
Condition0=(dayofweek(date)=3 and dayofmonth(date)>14 and 22>dayofmonth(date)) or Date=1040127
or Date=1070226
or Date=1100617
or Date=1100222;
if condition0=true then begin
if t>1314 then begin
exitlong("EXPL") on close;
exitshort("EXPS") on close;
end;
end;
0 意見:
張貼留言