此文章為介紹各程式語言使用萬用API開發專用
例如:VB.net、C#.net、Java、VBA…..等程式語言開發者
若您使用Multicharts請點選下方連結
使用前注意事項 #
1. 萬用API是讓各種策略軟體或程式語言傳遞下單訊號的介面,其功能等同於文字檔介面,和串接券商沒有任何關係。
2. Windows 7:只能使用 2.5 版的萬用 API (32位元)
3. Windows 10,11:可以使用 2.5 版 4.0 版和5.0 版的的萬用 API (32/64位元)
4. 每個萬用API元件最多能使用 256 組策略,若超過 256 組策略,可以複製下單大師資料夾開啟多個下單大師的方式使用。您的程式也必需指定使用不同資料夾下的萬用API元件
5. 萬用API是 C++ dll , 提供 32/64 位元 2種,也可以註冊為COM元件使用
目前有提供範例的開發程式如下
C#.net、VB.net、Java、EXCEL VBA、TS2000i、Ami Broker、Multicharts、奇狐
6. 萬用API不需另外下載,安裝好下單大師後就會存在於下單大師資料夾內
7. 萬用API 32/64位元需要所有程式都是相同位元做搭配使用,其中一個不一樣就會發生錯誤。
例:
C#.net 64 => 萬用API 64 => 下單大師4.0 64 => 券商API 64 => 正常可使用
Java 32 => 萬用API 64 => 下單大師4.0 64 => 券商API 64 => 無法使用
因目前有支援64位元的券商API較少,建議開發前先至下單大師官網查詢支援券商 API 列表確認您的券商是否支援API 64,若無法確定的話建議使用下單大師4.0 32版本,支援的券商最多
萬用API相關檔案 #
用 C++ 建立的「原生萬用API」 #
檔案在下單大師安裝後的資料夾下
此檔案可適用大部份程式(C#.net、VB.net、Java、EXCEL VBA、TS2000i、Ami Broker、Multicharts)直接呼叫使用
下單大師2.5(32位元):OMSignAPI.dll
下單大師4.0與5.0(32位元):OMSignAPI32.dll
下單大師4.0與5.0(64位元):OMSignAPI64.dll
可註冊為 COM 元件的「.NET DLL」,用來包裝「原生萬用API」 #
檔案在下單大師安裝後的資料夾下
此檔案適用只能使用COM元件的程式(例如:奇狐)使用
下單大師2.5(32位元):OMCOMAPI.dll
下單大師4.0與5.0(32位元):OMCOMAPI32.dll
下單大師4.0與5.0(64位元):OMCOMAPI64.dll
將 dll 註冊為 COM 元件的批次檔 #
檔案在下單大師安裝後的資料夾下
此檔案為BAT檔,使用公用程式 Regasm.exe 將 dll 註冊為 COM 元件
要使用COM元件的程式開發者請先使用管理者權限執行本批次檔進行註冊
下單大師2.5(32位元):RegOMCOM.bat
下單大師4.0與5.0(32位元):RegOMCOM32.bat
下單大師4.0與5.0(64位元):RegOMCOM64.bat
萬用API相關函式 #
初始化策略倉位IniDllAndPosition #
bool IniDllAndPosition(string signID, int iniPosition)
1. signID=萬用API識別碼
2. iniPosition=初始化的策略倉位
由於萬用API是存在電腦的記憶體中,程式關閉後相關資料就會消失,因此每次開啟程式後都需要先執行初始化萬用API的策略倉位,給下單大師一個初始策略倉位。
此函式會回傳一個布林值true=成功,false=失敗
下單函式GoOrder #
bool GoOrder(string signID, string bySignStr, string dateTimeStr, int nowPosition, double nowPrice)
1. signID=萬用API識別碼
2. bySignStr=訊號決定的內容(下股票,股期與選擇權比較會用到,下指數期貨一般不會使用),可放空白
3. dateTimeStr=目前的日期與時間(例:2024/03/19 21:45:00)
4. nowPosition=目前的策略總倉位或本次要下單的口/張數
依下單大師策略管理內是否設定為[ Current總倉位下單 ]來決定
若策略管理內設定為Current總倉位,則此欄位放的值為[ 策略總倉位 ]
若策略管理內設定不是Current總倉位(Order),則此欄位放的值為[ 本次要下單的口/張數 ]
不管是Current或Order,都可以在要下單時才呼叫GoOrder。
5. nowPrice=目前成交價格
此函式會回傳一個布林值true=成功,false=失敗
取得目前策略倉位GetNowPosition #
int GetNowPosition(string signID)
signID=萬用API識別碼
基本上這個不會用到,算是留著備用而已
因為每次將程式關閉後,存在記憶體內的資料就消失了,開啟程式時都必需先執行IniDllAndPosition給予策略倉位初始值,因此策略倉位理論上應該記錄在您的程式裡才行,不會由萬用API取得。
此函式會回傳記錄在萬用API裡的的策略倉位(int型別)
萬用API相關範例 #
這個並沒有一定的答案,一切都是看需要。
文字檔的好處就是可以打開文字檔查看內容,策略開發階段可以先不用開下單大師直接看文字檔內容就可驗證策略程式的正確與否。
實際運行時,若是有問題也可以優先查看文字檔是否有被更新,很容易就可釐清問題是出在策略軟體還是在下單大師。
萬用API運行在電腦記憶體裡,因此沒有介面可以看到內容,遇到問題時不容易快速釐清,且測試時一定要下單大師正常運作才能驗證(因沒有文字檔可看)。
但是萬用API的CPU使用率比文字檔少,且執行速度比文字檔快一點點(文字檔使用ramdisk後差異就不大了)。
下單大師設計為可同時接收多策略訊號進行下單,因此每個策略都必需有一組專屬識別碼讓下單大師辨識是哪個策略要下單。您在執行萬用API的程式裡所填入的識別碼,需要和下單大師策略管理內的萬用API識別碼欄位做對應