2015年3月8日 星期日

系統錯誤通報 by SMS


程式交易小學堂─期貨投機事業的王道
這篇文章有前篇,搜自網路上人家分享的發送 mail 功能後,可自行點閱。因為我的手機接收的 mail 通知實在太多,弄到我連收到 mail 都有點麻痺,於是修改了系統錯誤通報的途徑,從 mail 改為發送手機簡訊(SMS)。這個功能,依然採用 AutoIt 去做,並且採用台灣簡訊的服務,如果你沒有打算購買台灣簡訊的服務,可直接放棄。

2015年1月31日 星期六

函數:索丁諾比率(Sortino Ratio)_日權益


程式交易小學堂─期貨投機事業的王道
上回做了用來比較策略表現品質的 Sharpe Ratio 值的計算函數
這回,我們來計算 Sortino Ratio。什麼是 Sortino Ratio?請看:http://goo.gl/VrrRF8。而 Sortino Ratio 與 Sharpe Ratio 的差異,主要就在不把賺錢的波動當做風險,而只把賠錢的波動程度視為風險。

從該介紹的解說來看,似乎只是把 Sharpe Ratio 中計算標準差的部份,改成只有計算賠錢的而已。因此,我直接把 _SharpeRatio 這個函數拿來修改成如下,差異就在藍色的部份。函數名稱: _SortinoRatio,參數值三個,依序是計算近幾日、是否再投資模式、起始資金。

2015年1月10日 星期六

函數:夏普比率(SharpeRatio)_日權益


程式交易小學堂─期貨投機事業的王道
在 MultiCharts 的回測報表中,有一個欄項,策略分析-績效比率,項下有一個叫做夏普比率的東西,也就是 Sharpe Ratio。我看了它的說明,好像有點懂又不大懂,找了 Google 到的資料,其實我還是不大清楚怎麼算。而為什麼想要算這個呢?因為它可以用來做為各個策略間的績效優劣指標的比較。其實 MC 有內建這個函數,名稱就是 SharpeRatio。只是,我試了多次... 它給我回傳的數值,總是...零! T_T

2014年12月25日 星期四

一同體驗 myCTA 的效益


程式交易小學堂─期貨投機事業的王道
首先,什麼是 myCTA?它是個軟體。用來為你管理你正在運作的台指策略組合。簡單說,myCTA 透過對你組合中的個別策略進行績效評分,從而做出各策略訊號口數的權重調整,再加上與資金量連結的再投資乘數及風險管理,加總而成用來真實下單的部位數量

所以,myCTA 是一套用來管理投資組合的演算法。必須奠基在你個人選定的策略組合及 MultiCharts 之上才能運作,而它會調整你每個策略的訊號口數後,得到新的總和部位來下單。因此,以 myCTA 調整過的部位訊號來交易,必然會跟我們只是把多策略的各個訊號加總起來而得到的回測(Portfolio backtest report),在績效上有不同的表現。

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;  

熱門文章