2011年12月5日 星期一

MultiCharts接下單大師萬用API


程式交易小學堂─期貨投機事業的王道
下單大師這個下單機,提供了萬用API的模式去接收交易策略的即時部位,號稱說可以做到千分之一秒的奇蹟,有沒有這麼神?其實不必在意,至少這個方式在我目前看來,夠快。畢竟從訊號的產生到成交之間的環節不少,要是有速度慢的狀況,還得一個一個去找解方。

這篇文章提供的方式不再需要輸出文字檔了,下單大師那一端的設定,請自行參考官方網站,因為那一端通常沒有什麼問題,簡單。聽說接不起來的,幾乎都是在 MultiCharts 要輸出訊號部位的問題。老實講,下單大師官方網站那邊提供的 MultiCharts 版的範例,也曾經搞得我七葷八素的>"<

以下是我目前使用的版本,我相信,這個方式會簡單得很多!

請自行製作一個"指標",程式碼內容如下:
Vars:intrabarpersist ContractNow(0),signDTStr("");

DefineDLLFunc:"C:\Program Files\OrderMaster\OMSignAPI.dll",bool,"IniDllAndPosition",LPSTR,int;
DefineDLLFunc:"C:\Program Files\OrderMaster\OMSignAPI.dll",bool,"GoOrder",LPSTR,LPSTR,LPSTR,int,double;
DefineDLLFunc:"C:\Program Files\OrderMaster\OMSignAPI.dll",int,"GetNowPosition",LPSTR;

  ContractNow= i_MarketPosition * i_CurrentContracts;
  signDTStr = numtostr(year(D)+1900,0)+"/"+ numtostr(month(D),0)+"/"+ numtostr(dayofmonth(D),0)+" "+ numtostr(Q_Time,0) +"00";  

  if D=lastcalcdate and T=lastcalctime then 
      GoOrder("Earning", "", signDTStr, ContractNow, C); 

//以下是顯現部位狀況給"人"看的,不喜歡可刪去。
if ContractNow > 0 then Value1=RGB(255,0,0);
if ContractNow < 0 then Value1=RGB(0,255,0);
if ContractNow = 0 then Value1=RGB(0,0,0);
plot1(ContractNow,"ContractNow",Value1);

1

然後在你的策略圖表上,把這個剛剛做好的指標新增進來,你應該會看到K線圖下方的這一塊,有圖可以顯示出現在及過去每一根K棒當時的訊號部位,我覺得兼有給人監看的功能會比較好一點,而且不需要去煩惱什麼IOG模式的問題,也不需要更動你的交易策略,都不用!只要新增一個指標到圖表就好了。效果就如上圖。

以上這個指標程式碼中紅色字的部份,就是你在下單大師設定萬用API用的名稱,可以自行改成你喜歡的,只要兩邊都用相同的就行。



上方的程式碼 "DefineDLLFunc" 後方那一串的路徑(紅色字的部分),如果你的作業系統是 Win7 x64 的話,會需要把 C:\Program Files\ 這部份改成 C:\OrderMaster\AutoOrder\,那是要指向下單大師的真實安裝目錄的。

PS. 幾經測試,下單大師的萬用API無法在 x64版本的 MultiCharts 上使用,僅能在 x86版本使用。

熱門文章