2014年12月1日 星期一

期貨商成交速度比較(元大、群益、日盛)


程式交易小學堂─期貨投機事業的王道
自動下單,從訊號發出到成交之間,得歷經從委託單送出到期貨商風控,再到交易所撮合,然後回報給我們,這中間有許多環節是我們自身不可控的。為了自動下單,當年日盛期貨幾乎就是唯一的選擇,因為他們有 HTS ,別家期貨商都沒有可以用來做程式交易的軟體。

數年後,MultiCharts 出現(TS在台灣其實不那麼 friendly啦),各家期貨商也陸續推出自己的 API,於是下單這一塊就與程式交易平台脫勾了。而因為 HTS 一直停留在過去,沒有與時俱進,甚至很明顯的只要一有快市出現,lag 就必然發生,更慘的是日盛提供的下單 API 必須依掛在 HTS,而不是獨立的,這就造成下單 API 也一起拖下水... 就算你花錢買了比較快的報價,卻在下單時慢了,豈不叫人扼腕!所以,我就跟日盛說 bye bye 了...

2014年10月31日 星期五

函數:今天距離月底剩幾個交易日


程式交易小學堂─期貨投機事業的王道
朋友問我怎麼在 MultiCharts 寫出如標題的功能?到目前為止,其實我搞不定這個功能... 但是,做了接近的 fuction。

希望能有人分享出比較好的計算規則,讓我來寫看看。

我現在的作法是利用 Julian 格式做一下日期的轉換,計算今天到月底總共有幾天,比如 7月15日到 7月底會有16天,再減去今天到月底這段日子有幾天是週六或週日,來得到今天距離月底還剩下幾個交易日。這其實不是個完美的邏輯,只要從今天到月底中間有任何一天的週一到週五之間有放假就會算錯,有或者週六要交易(台灣特有?),也會算錯。

請建立一個數值型的 Fuction,名稱為 _daysLeftMonth,code 如下:
var:now(0),j(0),days2MonthEnd(0),holidays(0);

now=datetojulian(D);

holidays=0;
days2MonthEnd=0;
for j=1 to 50
begin

  if Month(JulianToDate(now+j)) > Month(D) or 
     Year(JulianToDate(now+j)) > Year(D) then 
  begin
    days2MonthEnd=j-1;
    break;
  end;

  if dayofweek(JulianToDate(now+j))=6 or 
     dayofweek(JulianToDate(now+j))=0 then 
    holidays=holidays+1;

end;


 _daysLeftMonth= days2MonthEnd - holidays; 


然後,我用 Print 試了一下,效果如下圖:

2014年10月25日 星期六

用 Heikin-Ashi 也能得到擬真回測


程式交易小學堂─期貨投機事業的王道
上篇文章,我們知道了直接採用 Heikin-Ashi 這類非傳統K棒的圖表,策略回測報告上造成什麼問題之後,這篇我將提供如何繼續使用非傳統 K棒,但得到擬真回測報告的方法,而不再是一份又一份的華麗垃圾。


我們需要把原本的策略程式碼做一下修改,原本的策略程式碼在右方,請自行參照。
var:toShort(0), toBuy(999999);
var:OO(0),HH(0),LL(0),CC(0);

OO=Open data2;
HH=High data2;
LL=Low data2;
CC=Close data2;

if HH<=HH[1] and HH[1]>=HH[2] then begin
  toBuy= highest(HH,3);
  toShort= 0;
end;

if LL>=LL[1] and LL[1]<=LL[2] then begin
  toShort= lowest(LL,3);
  toBuy= 999999;
end;  

if marketposition<=0 and CC>toBuy then  
  buy next bar market;
if marketposition>=0 and CC<toShort then  
  sellshort next bar market;  

直接採用 Heikin-Ashi 回測的問題


程式交易小學堂─期貨投機事業的王道
過去,我們已經知道直接採用 Heikin-Ashi 圖表來做交易策略的回測報告,基本上跟垃圾是沒什麼兩樣的。因為我們直接採用該圖表 Open, High, Low, Close 去做的規則或是進場判斷,所得價位根本就不存在真實的世界,一個不存在真實世界的價位所記錄起來回測報告,如果這不是垃圾,什麼才是垃圾呢 XD

以下,所有的測試與範例,都用這個 code 來試驗。規則很簡單,就是用最近的三根K棒,去判斷是否發生"轉彎"?有就把轉彎的高點與低點記錄下來,而後等 K棒的收盤價大於轉彎高點就買進作多, K棒收盤價小於轉彎低點就賣出放空。

2014年10月18日 星期六

交易策略與系統心得


程式交易小學堂─期貨投機事業的王道
這篇文章,緣起於上過我課程的某位同學的來信。實際上,這幾年參與過課程的同學中,也有後來來信告訴我,他決定不走期貨交易這條路了,因為經過一段時間的努力,他真的找不到好的策略,也許他不適合往交易的路走。(這其實不是壞事)

因為,我給課程中的同學設下了一些開發策略應該遵守的 SOP,很可能是那些條件讓人很難找到一如網路上眾多分享回測報表的亮眼策略。這一方面我也常說,每次我看到那些回測分享,總是讓我自慚形穢:阿政的策略好爛喔。我知道要求同學在開發策略的過程中遵守那些規則去做,實在讓人感到很挫折。但我相信,通往失敗的道路總是坦途大道!


以下是我的回答,也是這篇文章的本文:
==============
策略失效的問題。記得我說所有策略的 MaxDD 都一定會突破,只是我們不知道這一天何時到來嗎?也許經過我們嚴苛條件所開發出來的策略其實是沒有失效的問題也不一定。實際上,就算 DrawDown 在今天大破過去的記錄,恐怕都不見得能證明是策略失效,如果幾天後或是幾個月後它的績效創新高了,今天的 MaxDD 被破還能算是策略失效嗎?這其實是個無解的問題。

2014年10月11日 星期六

風險的預期與思考


程式交易小學堂─期貨投機事業的王道
根據維基百科上查到,風險的定義風險是相對某有機體的,指某可能發生的事件,如果發生,能阻礙有機體的發展,甚至走向衰亡,風險是指事件發生與否的不確定性。危險﹑危機。如:「期貨投資,必須負擔極大的風險。」(以上節錄一小段)

對我們從事於投機交易的人來說,風險其實就是建立部位之後,可能發生的損失。在當沖交易中,因為價格幾乎都是連續的,理想狀況下,只要部位在市場的時間且市場價格是連續的,風險的大小就是我們指定的停損金額。而如果持有部位會跨越價格不連續的時段,風險的大小就會多出了一段不可預期的時間。即便我們能用過去的歷史經驗來假設不可預期的這一段,可能會有多壞的狀況發生,以及發生的機率,來控制自己願意承受風險大小的對應部位數量,卻還是可能發生超出預期風險的超額損失。

2014年9月15日 星期一

交易系統檢測 - 錯誤通報


程式交易小學堂─期貨投機事業的王道
經過上次我的交易機器當機事件後,我思考了一番。系統正常運作的通報,因為每天幾乎都是正常的,而每天的定時通報,對於人來說,久而久之就會變成一種麻痺,慢慢的不在意例常通知,進而...忽視。

以我自己為例子,每天都會收到兩次系統運作正常的通報,慢慢的就連手機收到 mail 也會有點懶得去看,因為會直接當做那只是正常的通報而已,不管也不會怎樣...於是,我決定把系統運作狀況的通報,改成有異常才通報,平常運作 OK 的話就閉嘴吧。這部份的機制,我是透過 MacroExpress 與一個發 mail 的可執行檔來協力完成。

你可在這裡下載到所需要的檔案:下載點
壓縮檔中包含了兩個東西:一是 MacroExpress 的匯入檔(自行匯入),另一個是 AutoIt 的腳本檔。


熱門文章