
最近國際經濟情勢混亂,希臘一下有事,一下沒事,
股市一下大漲,一下又大跌,做波段單的人實在是欲哭無淚,
做當沖交易 的人,可能還可以嘗到甜頭,希望大家都還是有賺到錢!
今天要來介紹新的進場邏輯與出場方式
之前介紹過幾種簡單的當沖程式怎麼建構,
不知道大家看過之後,有沒有激發出新想法而寫出新 程式呢?
做交易的人要不斷有新想法,畢竟市場一直在改變,
如果沒有一直有創新的程式出現,可能慢慢就會被市場淘汰,
所以大家一定 要時時督促自己,常常開發新策略。
步步高升VS一落千丈
說到新策略,今天獵人要在介紹一支新程式給大 家,
這支程式的中心概念跟我們之前講過的程式有點像,
不過這支程式較為彈性,比較隨波逐流一點。
因為
破高破底進場策略的缺點 是,當日出現轉折時,反應較慢。
今天要講的這支程式,可以稍稍彌補一點上面那支程式的缺點,
但是每支程式都還是有自己的優缺點,所以自己 可以搭配使用。
經過獵人幾次的介紹過如何撰寫一支程式後,
今天就不詳細的一步步教大家怎麼寫出程式了。
基本上,進場邏輯 很簡單,我們使用
累計分數原則,
當K棒高點超過前一根K棒高點時,我們加一分(步步高 升);
當K棒低點跌破前一根K棒低點時,我們減一分(一落千丈)。
進場原則就是-當分數超過我們設定的標準時,就進場作多;
當分 數低過我們設定的標準時,就進場作空。
其實這個邏輯還蠻簡單的,但是效果如何呢?
繼續看下去就知道了。
回測時 間,SHOW TIME!
回測目標:上述單純的策略是否可以獲利?
回測標的
:用台指5分K線作當沖交易。
回測成本 設定
:費用來回設定為1000元。
回測時間
:從今天往前3000 天。
進場方式
:
(1)當分數超過+3,啟動買進訊號,當價格向上突破前 6根K棒高點時進場作多。
(2)當分數低於-3,啟動賣出訊號,當價格往下突破前6根K棒低點時進場作空。
濾網
:(1)限制當天多空都只能各進場一次。
出場 方式
:
(1)設定停損點數為40點。
(2)收盤前1點40分全部出場。
我們把報表整理如下:

上 圖為全部的績效表

上 圖為作多的績效表

上 圖為作空的績效表

上 圖為每年的績效表

上 圖為今年各月的績效表
從上面的報表來看,這種策略確實是可以賺錢的,
不過要拿來用可能還要多加修改,哪些地方需要改進呢?
(1)
進場次數太多-獵人一直很強調,要
控制進場次數,
這樣才能控制你 的成本,降低你的DD。
(2)
DD太大-其實降低進場次數可以有效的降低DD,
此 外,增加其他出場點的方式也可以有效降低DD。
(3)
作空部分績效明顯較差-作空部分 DD也明顯大很多,
所以作空部分可能要多加些濾網以及其他的出場點。
我想這些問題都解決的話,這支程式的表現應該會還不錯。
出 場點跟進場點一樣重要!
在這邊獵人要介紹改進出場的方式給大家,
首先,大家尾盤都是怎麼出場的?
除了快收盤前要出場 外,總會有其他出場方式,總不會一直抱到收盤前吧!
這邊提供一個方式給大家,大家可以當作參考,
如果你持有多頭部位,你可以設定在一個時 間後,
比如1點25分後,當K棒往下突破前一根K棒的低點時出場;
作空的話,可以在1點15分後,當K棒往上突破前一根K棒的高點時出 場。
大家可以試試看這樣對你的程式績效會不會有些改變,
我相信應該是會有些幫助的,當然還可以有些變化,
大家可以動腦想想看。
再 來,因為我們的進場策略是累加分數的,
所以當我們進場作多後,我們當然希望指數一直往上走,
當然分數也就會越累積越多。
如果進場 後,指數一直往下走,分數就會越來越低,
這不是我們所樂見的,所以當分數往下跌至0以下的話,
我們的多單就隨時準備出場,反之亦然。
所 以加入兩種出場點後,我們再把績效拿來比較看看有什麼差異?
策略一是原本的策略,策略二是加入兩種出場方式的策略。

上 圖為2種策略每年績效表

上 圖為2種策略每年績效直方圖

上 圖為其他各種報表重要數值

上 圖為今年每個月的績效表
大家可以發現,加了新出場點的程式,
明顯的比沒加的好,雖然勝率降低一點,
不過每年的獲利都有提 升,總獲利也比較高,DD也變小了。
不過這個策略在今年上半年的表現不太好,
當然還有很大的改進空間,就留給大家發揮了。
大家可 以一起來討論看看如何改進程式,互相砥礪就會有所成長。
最後把完整的程式法分享給大家
input : r1(3),r2(3),BeginTime(0900),EndTime(1245);
var :mkp(0),x(0),y(0),ss(0);
if date <> date[1] then begin
mkp=0;
x=0;
y=0;
ss=0;
end;
if high > high[1] then ss=ss+1;
if low < low[1] then ss=ss-1;
if BeginTime < Time and Time < EndTime then begin
if MarketPosition = 0 and x < 1 and ss > r1 then buy next bar at highest(high,6)+1 stop;
if MarketPosition = 0 and y < 1 and ss < -r2 then sell next bar at lowest(low,6)-1 stop;
end;
mkp=marketposition;
if mkp[1]<>1 and mkp=1 then x=x+1;
if mkp[1]<>-1 and mkp=-1 then y=y+1;
if marketposition =1 then begin
exitlong next bar at entryprice-40 stop ;
if ss<=0 then exitlong next bar at lowest(low,6)-1 stop;
if time>1325 then exitlong next bar at lowest(low,3)-1 stop;
if time>1335 then exitlong this bar on close;
end;
if marketposition =-1 then begin
exitshort next bar at entryprice+40 stop ;
if ss>=0 then exitshort next bar at highest(high,6)+1 stop;
if time>1310 then exitshort next bar at highest(high,3)+1 stop;
if time>1335 then exitshort this bar on close;
end;
setexitonclose;
本文內容僅供參考,無任何買賣建議,投資人應謹慎評估,風險自負。