2013/06/05 更新
T4.dll 下單元件使用說明
[版本]:
1.0.13.1 [日期]:
2014/02/27 [異動內容]: 新增:證券未實現損益匯總查詢
stock_balance_sum。
新增:證券未實現損益個股明細 stock_balance_detail。
修正:國外期貨商品小數點檢查錯誤導致無法交易玉米粉。
[版本]: 1.0.13.0
[日期]: 2013/10/01
[異動內容]:
採用新的驗章元件 (支援256bits) 請注意!DLL有增加、減少。
修正非同步驗章 bug
修正回報主動 Event (僅供 C/C++/C# 使用)
[版本]: 1.0.12.9
[日期]: 2012/06/05
[異動內容]:
增加國外期貨下單回傳格式,附件(十四)
增加多執行緒非同步驗章
增加週選擇權複式單 (Time Spread)
增加主動回報Event 測試版 (僅供 C/C++ 使用)
增加支援 一週期貨 (MX1, MX2, MX4, MX5)
[版本]: 1.0.12.7
[日期]: 2012/07/13
[異動內容]:
增加 future_change 改價
future_cancel 不需帶 oct_type
option_cancel 不需帶 oct_type
登入 ID 可以為 6-10 碼 (原 8-10)
[版本]: 1.0.12.6
[日期]: 2012/02/16
[異動內容]:
stock_order 參數修改:定盤、漲跌停,價格參數不被參考,自動修正。
國外期權益數查詢增加「追繳金額」。
修正異常封包可能誤判委託成功。
同時有兩程式作憑證驗章時,會自動重試兩次。(總計三次) 避免短時間鎖住憑證檔案。
多執行緒時,增加同步驗章程序保護措施。(如果同時呼叫,會自動排隊接續作)
更換前,請務必保留您原始的t4.ini 設定值。
減少檢查IP 次數。
修正異常封包可能造成連線中斷。
修正Alive 封包傳送Interval。
國外期貨委託查詢上限增至999 筆。
成交回報、委託回報上限至9000筆。
修正重新連線失敗後,持續重新連線。
修正上午10:05:30 至10:05:40 期間可能誤判封包造成斷線的問題。
Proxy Http Header 增加支援HTTP/1.0 與其他相容版本。
新增fo_order_qry2 可僅查詢API 紀錄,原fo_order_qry 仍可繼續使用。
繼4, 請注意:彙總查詢時,無法僅針對API 來源單作查詢。
文件修正:國外期貨參數應無octtype 與ordtype 欄位之說明。
文件修正:期貨、選擇權下單回傳格式如附件(十)。
文件修正:fo_unsettled_qry 對應回傳格式如附件(十一)。
文件修正:ff_get_position 對應回傳格式如附件(十二)。
文件修正:附件(五) 新增兩欄位。
範例修正:國內期權委託查詢可指定是否含預約單。
範例修正:國外期貨部位查詢依照附件(十二)。
修正41020 的欄位數為27 而不是25或26
修正option_order 檢查log 失敗則不繼續執行的奇怪現象
修正fo_get_day_info 回傳為20000 無此資料時,造成exception
修正fo_get_hist_info 回傳為20000 無此資料時,造成exception修改10.7 的邏輯判斷錯誤,造成長度合法反而一直失敗
修改alive 不屬於追蹤封包一者,以免影響回應封包修改acc 允許帳號長度為8 ~ 10 碼(國內法人為8碼)
修改RecvFromServer thread timeout 為infinite
修改timer 迴圈, 不再以Windows Message Procdure 驅動send_alive, 而以獨立thread 作觸發
修正log 同步問題, 這是由於之前的版本可能會有stack overflow 的issue, 把log 的2k 搬到global 導致
修正account_list 未重置, 導致account number 在第二次登入時為0
(一)檔案存放位置:
請在 C:下面建立一個 C:vba dll 的目錄, 並將下列檔案置於此:
t
4.dll
t4.ini
SPSecuritiesATL.dll
err_code.txt
錯誤訊息說明.txt
※ZIP檔內尚有『T4.dll下單元件使用說明.doc』、『VBA T4 Sample下單.xls』及DDE期權報價範例檔,可以移出不一定要放此路徑內。
並在此目錄下建立一個C:vba dlllogs 的目錄,方便未來問題排除。
Log 檔案命名規則:
User ID(通常是身份證號)-年月日-[時-分-秒].txt
如: A123456789-20110102-11-12-13.txt,表示2011年1月2日11點12分13秒,以A123456789 登入。
爾後若有更新版本,在您登入元件時,將會跳出『版本即將到期』的警告視窗,如下圖,
請用戶自行至永豐金API網頁自行下載更新檔。
※更新前,為了預防您換版時的非預期狀況,建議您請先將舊版本備份。
http://www.sinotrade.com.tw/ec/eleader1/API.htm
(二)基本操作說明
API (Application Programming Interface)
目前採用DLL (Dynamic Linkable Library) 方式發行。
使用者必須自行開發應用軟體後,連結t4.dll,方可使用API 所提供之功能。
請依照一般之DLL 載入方式載入t4.dll
受限於程序生命週期,單一程序僅得以註冊一次,重複註冊會得到「已初始化」之回應,並不會重新以指定之使用者ID、密碼註冊之。
如果有「同時使用API 作不同使用者ID登入之必要」時,必須確保在不同執行程序下個別載入API。
請勿利用API 元件登入非您本人所持有之帳戶。
VC 載入方式
請使用LoadLibrary 載入t4.dll。
請使用GetProcAddress 取得各函式位址。
一旦不再需要使用,請利用FreeLibrary 釋放DLL。
傳入參數以MCB 方式傳輸字串,並未採用Unicode。(可採用const char*、LPCTSTR、CString,等) (MCB=Multi-Code Bytes)
回傳值多以BSTR 為之。(少數使用long)
請留意函式名稱有區分大小寫。
Excel / VBA 載入方式
VBA 必須以絕對路徑寫明DLL 所在位置,若您不確定,可以採用範例的C:vba dll 即可。
Excel 安全性必須降至足以執行巨集(Macro)方可操作DLL。
進入「設計模式」前,請務必先登出DLL,以免發生無法預期的錯誤。
其他開發軟體
請留意各函式所傳遞之參數格式與回傳之格式(非BSTR 回傳值以標註紅色字體)
所有函式均以STDCALL 形式宣告,期參數傳遞順序與PASCAL 相同,非FASTCALL 亦非C CALL。
所有函式操作,必須先經成功的登入init_t4
下單之前,必須以add_acc_ca 將該帳戶加入憑證清單
期貨帳戶下單前,必須將該期貨帳戶加入憑證清單
證券帳戶下單前,必須將該證券帳戶加入憑證清單
欲下單之帳戶,必須隸屬於登入之使用者id,否則不論憑證是否有效,皆無法下單。
t4.ini 設定(如不清楚,請保留原始設定即可)
主機連線位置設定:Address (更改可能導致無法連線)
主機連接埠設定:port (更改可能導致無法連線)
Proxy 連線位置設定:ProxyAddress (僅在需要代理連線主機時設定之)
Proxy 連接埠設定:ProxyPort (僅在需要代理連線主機時設定之)
Proxy 帳號:ProxyAccount (僅在代理連線主機需要登入帳號時設定之)
Proxy 密碼:ProxyPassword (僅在代理連線主機需要登入帳號時設定之)
關於Proxy 代理主機,請就您使用之網路環境管理員作查詢後再于以設定,請注意:使用來路不明的代理主機,可能導致網路封包內容被側錄。
(三) API 函式一覽表及使用說明
函式名稱 | 函式用途簡述 | |
i. | init_t4 | 初始化 (建立 DLL 環境、連接主機、登入永豐金證券/期貨) |
add_acc_ca | 帳戶加入憑證清單 (下單之前必須加入) | |
verify_ca_pass | 憑證驗證測試 (必須為已加入憑證清單之帳戶) | |
ii. | stock_order | 國內證券下單 (證券帳戶必須加入驗證清單) |
stock_cancel | 國內證券刪單 (證券帳戶必須加入驗證清單) | |
future_order | 國內期貨下單 (期貨帳戶必須加入驗證清單) | |
future_cancel | 國內期貨刪單 (期貨帳戶必須加入驗證清單) | |
future_change | 國內期貨改價 (期貨帳戶必須加入憑證清單) | |
option_order | 國內選擇權下單 (期貨帳戶必須加入驗證清單) | |
option_cancel | 國內選擇權刪單 (期貨帳戶必須加入驗證清單) | |
ffuture_order | 國外期貨下單 (期貨帳戶必須加入驗證清單) | |
ffuture_cancel | 國外期貨刪單 (期貨帳戶必須加入驗證清單) | |
iii. | get_response | 國內下(刪)單回報查詢 (e-Leader 8891) |
ff_get_response | 國外下(刪)單回報查詢 (e-Leader 8002) | |
fo_unsettled_qry | 國內期權未平倉查詢 (e-Leader 7201) | |
fo_order_qry | 期權委託查詢 (e-Leader 6207)早期版本 | |
fo_order_qry2 | 期權委託查詢 (e-Leader 6207) 新版 | |
ff_get_info | 國外期貨權益數查詢 (e-Leader 8003) | |
stock_balance_qry | 國內證券庫存查詢 (e-Leader 3202) | |
stock_balance_sum | 國內證券未實現損益匯總。 (e-Leader 3324) | |
stock_balance_detail | 國內證券未實現個股明細。 (e-Leader 3151) | |
ff_get_positions | 國外期貨部位查詢 (e-Leader 8001) | |
ff_order_qry | 國外期貨委託查詢 (e-Leader 8002) | |
fo_get_day_info | 國內期權當日權益數查詢 (e-Leader 7102) | |
fo_get_hist_info | 國內期權歷史權益數查詢 (e-Leader 7103) | |
iv. | get_response_log | 交易回報紀錄 |
check_response_buffer | 主動(即時)交易回報-檢查是否已收到回報 | |
timer_response_log | 主動(即時)交易回報-讀取回報內容 | |
get_response_evt | 取得回報 Event Handle | |
fifo_response_log | 先進先出式交易回報 | |
v. | change_echo | 切換下單回覆模式 (下單後是否等待委託回報,預設為「on」) |
log_out | 登出 init_t4,並清除所有已列之憑證 | |
show_version | 回傳目前 API 版本 | |
show_list | 回傳目前使用者下所有帳戶 (包含證券帳戶、期貨帳戶) | |
show_list2 | 回傳目前使用者下所有帳戶(包含證券、期貨及帳戶別) | |
show_ip | 顯示連線主機 Domain Name |
(三) i. 初始化函式
函式名稱: | init_t4 |
函式功能: | 初始化(建立DLL 環境、連接主機、登入永豐金證券/期貨) |
VC 宣告: | BSTR init_t4( char* login_id , char* login_pass , char* dll_path ); |
VBA 宣告: | Private Declare Function init_t4 Lib "C:vba dllt4.dll" _ (ByVal login_id As String _ , ByVal login_pass As String _ , ByVal dll_path As String) As String |
傳入參數: | login_id : 使用者ID (通常為身份證號,非帳戶) login_pass : 登入密碼(連線登入密碼,非憑證密碼) dll_path : DLL 放置路徑(空白或不指定則自動偵測) |
使用範例: | ret = init_t4( "A123456789", "12345678", "" ); |
回傳值: | 正常:初始化成功(或:已初始化) 異常:會以"Error:" 開頭,接著錯誤訊息。 |
函式名稱: | add_acc_ca |
函式功能: | 將證券、憑證帳戶加入憑證清單(下單之前必須加入) |
VC 宣告: | BSTR add_acc_ca( char* branch , char* account , char* acc_id , char* ca_path , ca_password ); |
VBA 宣告: | Private Declare Function init_t4 Lib "C:vba dllt4.dll" _ (ByVal branch As String _ , ByVal account As String _ , ByVal acc_id As String _ , ByVal acc_ca_path As String _ , ByVal acc_ca_pass As String) As String |
傳入參數: | branch: 分行(期貨以F開頭, 證券僅代分公司代碼)ps.分公司與帳戶可由show_list取得 account: 帳戶 acc_id: 憑證ID (身份證號) ca_path: 憑證檔案所在路徑 ca_password: 憑證密碼 |
使用範例: | 期貨:ret = add_acc_ca( "F002000", "9999999", "A123456789", "C:eKey551A123456789S", "12345678" ); 證券:ret = add_acc_ca( "9A95", "9999999", "A123456789", "C:ekey551A123456789S", "12345678" ); |
回傳值: | 正常:CA憑證資料登錄成功 異常:"Error:" 開頭,接著錯誤訊息。 |
函式名稱: | verify_ca_pass |
函式功能: | 憑證驗章測試 |
VC 宣告: | BSTR verify_ca_pass( char*branch, char*account ); |
VBA 宣告: | Private Declare Function init_t4 Lib "C:vba dllt4.dll" _ (ByVal branch As String, ByVal account As String) As String |
傳入參數: | branch: 分行(期貨以F開頭, 證券以S開頭) account: 帳戶 |
使用範例: | ret = verify_ca_pass( "F002000", "9999999" ); |
回傳值: | 正常:"" 異常:Error: CA驗證錯誤 |
(三) ii. 下單、刪單函式
函式名稱: | stock_order |
函式功能: | 國內證券下單 |
VC 宣告: | BSTR stock_order( char*buy_or_sell , char*branch , char*account , char*stock_id , char*ord_type , char*price , char*amount , char*string , char*price_type ); |
VBA 宣告: | Private Declare Function stock_order Lib "C:vba dllt4.dll" (ByVal buy_or_sell As String _ , ByVal branch As String _ , ByVal account As String _ , ByVal code As String _ , ByVal ord_type As String _ , ByVal price As String _ , ByVal amount As String _ , ByVal price_type As String) _ As String |
傳入參數: | buy_or_sell: "B"=買, "S"=賣 branch: 證券分公司代號 account: 證券帳戶 stock_id: 股票代碼 ord_type: 交易類別 "P0"=定盤現股, "P3"=定盤融資, "P4"=定盤融券 "00"=整股現股, "03"=整股融資, "04"=整股融券 "20"=零股 price: 價格6 位數(定盤、漲跌停時,此參數忽略不作用,會帶0.0) amount: 張數3 位數(零股則為股數) price_type: " "=限價, "2"=漲停價, "3"=跌停價 |
使用範例: | stock_order( "B", "5510", "9876543", "2890", "00", "13.00", "1", " " ); |
回傳值: | 異常:TR Error[錯誤編號] = 伺服器錯誤訊息 正常:參考附件(九) |
函式名稱: | stock_cancel |
函式功能: | 國內證券刪單 |
VC 宣告: | BSTR stock_cancel( char*buy_or_sell , char*branch , char*account , char*stock_id , char*price_type , char*ord_seq , char*ord_no , char*pre_order ); |
VBA 宣告: | Private Declare Function stock_cancel Lib "C:vba dllt4.dll" _ (ByVal buy_or_sell As String _ , ByVal branch As String _ , ByVal account As String _ , ByVal stock_id As String _ , ByVal ord_type As String _ , ByVal ord_seq As String _ , ByVal ord_no As String _ , ByVal pre_order As String) As String |
傳入參數: | buy_or_sell : "B" = 買, "S" = 賣 branch : 證券分公司代號 account : 證券帳戶 stock_id: 股票代號 ord_type : "P0" 定盤現股, "P3" 定盤融資, "P4" 定盤融卷 "00" 整股現股, "03" 整股融資, "04" 整股融卷 "20" 零股 ord_seq : 網路單號 ord_no: 委託單號 pre_order : "N" - 非預約單, " " - 預約單 |
使用範例: | stock_cancel( "B", "5510", "9876543", "2890", "00", "123456", "12345", " " ); |
回傳值: | 異常:TR Error[錯誤編號] = 伺服器錯誤訊息 正常:參考附件(九) |
函式名稱: | future_order |
函式功能: | 國內期貨下單 |
VC 宣告: | BSTR future_order( char*buy_or_sell , char*branch , char*account , char*future_id , char*price , char*amount , char*price_type , char*ordtype , char*octtype ); |
VBA 宣告: | Private Declare Function future_order Lib "C:vba dllt4.dll" _ (ByVal buy_or_sell As String _ , ByVal branch As String _ , ByVal account As String _ , ByVal future_id As String _ , ByVal price As String _ , ByVal amount As String _ , ByVal price_type As String _ , ByVal ordtype As String _ , ByVal octtype As String) As String |
傳入參數: | buy_or_sell : "B" = 買, "S" = 賣 branch : 期貨分公司代號 account : 期貨帳戶 future_id : 商品代號 price : 價格6位數 amount : 口數3位數 price type : "MKT"市價, "LMT" 限價 ordtype: ROD / FOK / IOC octtype: 倉別"0" = 新倉 "1" = 平倉" "= 自動 "6"= 當沖 |
使用範例: | |
回傳值: | 異常:TR Error[錯誤編號] = 伺服器錯誤訊息 正常:參考附件(十) |
函式名稱: | future_cancel |
函式功能: | 國內期貨刪單 |
VC 宣告: | BSTR future_cancel( char*branch , char*account , char*future_id , char*ord_seq , char*ord_no , char*octtype , char*pre_order ); |
VBA 宣告: | Private Declare Function future_cancel Lib "C:vba dllt4.dll" _ ( ByVal account As String _ , ByVal future_id As String _ , ByVal ord_seq As String _ , ByVal ord_num As String _ , ByVal octtype As String _ , ByVal pre_order As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 future_id : 商品代號 ord_seq : 網路單號 ord_no : 委託單號 octtype : "0" 新倉, "1" 平倉, " " 自動"6"= 當沖 pre_order : "N" - 非預約單, " " - 預約單 |
使用範例: | |
回傳值: | 異常:TR Error[錯誤編號] = 伺服器錯誤訊息 正常:參考附件(十) |
函式名稱: | future_chance |
函式功能: | 國內期貨改價 |
VC 宣告: | BSTR future_change ( char*org_seqno , char*org_ordno , char*branch , char*account , char*commodity , char*new_price , char*pre_order ); |
VBA 宣告: | Private Declare Function future_change Lib "C:vba dllt4.dll" _ (ByVal org_seqno As String _ , ByVal org_ordno As String _ , ByVal branch As String _ , ByVal account As String _ , ByVal commodity As String _ , ByVal new_price As String _ , ByVal pre_order As String) As String |
傳入參數: | org_seqno : 原流水書號 org_ordno : 原委託單號 branch : 期貨分公司代號 account : 期貨帳戶 commodity : 期貨商品代號 new_price : 新價格 pre_order : "N" - 非預約單, " " - 預約單 |
使用範例: | |
回傳值: | 異常:TR Error[錯誤編號] = 伺服器錯誤訊息 正常:參考附件(十) |
函式名稱: | option_order |
函式功能: | 國內選擇權下單 |
VC 宣告: | BSTR option_order( char*buy_or_sell , char*branch , char*account , char*option_id , char*price , char*amount , char*price_type , char*ordtype , char*octtype , char*isComp , char*bs3 , char*commodity2 ); |
VBA 宣告: | Private Declare Function option_order Lib "C:vba dllt4.dll" _ (ByVal buy_or_sell As String _ , ByVal branch As String _ , ByVal account As String _ , ByVal option_id As String _ , ByVal price As String _ , ByVal amount As String _ , ByVal price_type As String _ , ByVal ordtype As String _ , ByVal octtype As String _ , ByVal IsComp As String _ , ByVal bs2 As String _ , ByVal commodity2 As String) As String |
傳入參數: | buy_or_sell : "B" = 買, "S" = 賣 branch : 期貨分公司代號 account : 期貨帳戶 option_id : 選擇權商品代號 price : 價格6位數 amount : 口數3位數 price type : "MKT"市價, "LMT" 限價 ordtype: ROD / FOK / IOC octtype: 倉別"0" = 新倉 "1" = 平倉" "= 自動 "6"= 當沖 IsComp : "S" 單式, "C" 複式 bs2 : 第二商品買/ 賣(如單式則填”“) commodity2 : 第二商品代號(如單式則填”“) |
使用範例: | |
回傳值: | 異常:TR Error[錯誤編號] = 伺服器錯誤訊息 正常:參考附件(十) |
函式名稱: | option_cancel |
函式功能: | 國內選擇權刪單 |
VC 宣告: | BSTR option_cancel( char*branch , char*account , char*option_id , char*ord_seq , char*ord_no , char*octtype , char*pre_order ); |
VBA 宣告: | Private Declare Function option_cancel Lib “C:vba dllt4.dll" _ (ByVal branch As String _ , ByVal account As String _ , ByVal code As String _ , ByVal ord_seq As String _ , ByVal ord_num As String _ , ByVal octtype As String _ , ByVal pre_order As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 code : 商品代號 ord_seq : 網路單號 ord_num : 委託單號 octtype : "0" 新倉, "1" 平倉, " " 自動 pre_order : "N" - 非預約單, " " - 預約單 |
使用範例: | |
回傳值: | 異常:TR Error[錯誤編號] = 伺服器錯誤訊息 正常:參考附件(十) |
函式名稱: | ffuture_order |
函式功能: | 國外期貨下單 |
VBA宣告: | Private Declare Function ffuture_order Lib "C:vba dllt4.dll" (ByVal buy_or_sell As String _ , ByVal branch As String _ , ByVal account As String _ , ByVal code As String _ , ByVal price1 As String _ , ByVal price2 As String _ , ByVal price3 As String _ , ByVal amount As String _ , ByVal price_type As String _ , ByVal pre_order As String _ , ByVal trade_place As String _ , ByVal dtrade As String _ , ByVal source As String) As String |
傳入參數: | buy_or_sell : "B" = 買, "S" = 賣 branch : 期貨分公司代號 account : 期貨帳戶 code : 商品代號 price : 價格8位數 price2: 價格(分子) price3: 價格(分母) amount : 口數3位數 price type : "MKT"市價, "LMT"限價
pre_order : "N" - 非預約單, " " - 預約單 trade_place : 交易所, length(8) dtrade : 當沖碼, length(1), "Y/N" source : 來源別, length(1), "E" 註: 以分子分母標示價格的商品(e.g. US公債) 才需使用price2 & price3. 其餘商品代入”0”即可 |
使用範例: | |
回傳值: | 附件(十四) |
函式名稱: | ffuture_cancel |
函式功能: | 國外期貨刪單 |
VC 宣告: | BSTR ffuture_cancel( char*buy_or_sell , char*branch , char*account , char*code , char*ord_seq , char*ord_num , char*type_1 , char*pre_order , char*trade_place , char*dtrade , char*source ); |
VBA 宣告: | Private Declare Function ffuture_cancel Lib "C:vba dllt4.dll" (ByVal buy_or_sell As String _ , ByVal branch As String _ , ByVal account As String _ , ByVal code As String _ , ByVal ord_seq As String _ , ByVal ord_num As String _ , ByVal type_1 As String _ , ByVal pre_order As String _ , ByVal trade_place As String _ , ByVal dtrade As String _ , ByVal source As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 code : 商品代號 ord_seq : 網路單號 ord_num : 委託單號 type_1 : "0" 新倉, "1" 平倉, " " 自動 pre_order : "N" - 非預約單, " " - 預約單 trade_place : 交易所, length(3) e.g "SMX" dtrade : 當沖碼, length(1), "Y/N" source : 來源別, length(1), e.g."E" |
使用範例: | |
回傳值: | 附件(十四) |
(三) iii. 回報、庫存查詢函式
函式名稱: | get_response |
函式功能: | 國內商品回報查詢 可查詢國內證券、國內期權回報資料(同e-leader 畫面8891) |
VC 宣告: | BSTR get_response_log(); |
VBA 宣告: | Private Declare Function get_response_log Lib "C:vba dllt4.dll" ( ) As String |
傳入參數: | 無 |
使用範例: | |
回傳值: | 附件(一) |
函式名稱: | fo_unsettled_qry |
函式功能: | 國內期權未平倉查詢(同e-Leader 畫面7201) |
VC 宣告: | BSTR fo_unsettled_qry( char*flag , char*leng , char*next , char*prev , char*gubn , char*group_name , char*branch , char*account , char*type_1 , char*type_2 , char*time_out ); |
VBA 宣告: | Private Declare Function fo_unsettled_qry Lib "C:vba dllt4.dll" (ByVal flag As String _ , ByVal leng As String _ , ByVal next As String _ , ByVal prev As String _ , ByVal gubn As String _ , ByVal group_name As String _ , ByVal branch As String _ , ByVal acct As String _ , ByVal type_1 As String _ , ByVal type_2 As String _ , ByVal time_out As String) As String |
傳入參數: | flag = "0000" leng = "0004" next = "0000" prev = "0000" gubn : 0:單一帳戶1:群組 group name : 群組名稱(單一帳號則填"") branch : 期貨分公司代號 account : 期貨帳戶 type_1 : 0:所有, 1:期貨, 2:選擇權 type_2 : 0:明細, 1:彙整 time_out = "1" |
使用範例: | |
回傳值: | 附件(一) |
函式名稱: | fo_order_qry |
函式功能: | 期權委託查詢(同e-Leader 畫面6207) 同fo_order_qry2, 僅預設參數source 為不分類,全部查詢 |
VC 宣告: | BSTR fo_order_qry( char*branch , char*account , char*code , char*ord_match_flag , char*ord_type , char*oct_type , char*daily , char*start_date , char*end_date , char*preorder ); |
VBA 宣告: | Private Declare Function fo_order_qry Lib "C:vba dllt4.dll" (ByVal branch As String _ , ByVal acct As String _ , ByVal code As String _ , ByVal ord_match_flag As String _ , ByVal ord_type As String _ , ByVal oct_type As String _ , ByVal daily As String _ , ByVal start_date As String _ , ByVal end_date As String _ , ByVal preorder As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 code: 商品代號(欲查詢所有商品則填““) ord_match_flag : 成交類別0:全部明細1:未成交3:委託失敗5:委託彙總 ord_type : 商品類別0:全部商品1:期貨2:選擇權3:美元計價 oct_type: 倉別.定為"0" daily: 0:當日1:歷史 start_date: 歷史查詢起始日 end_date: 歷史查詢終止日 preorder : ' ' = 僅查預約單, 'N' = 所有 |
使用範例: | |
回傳值: |
函式名稱: | fo_order_qry2 |
函式功能: | 期權委託查詢(同e-Leader 畫面6207) |
VC 宣告: | BSTR fo_order_qry2( char*branch , char*account , char*code , char*ord_match_flag , char*ord_type , char*oct_type , char*daily , char*start_date , char*end_date , char*preorder , char*source ); |
VBA 宣告: | Private Declare Function fo_order_qry2 Lib "C:vba dllt4.dll" (ByVal branch As String _ , ByVal acct As String _ , ByVal code As String _ , ByVal ord_match_flag As String _ , ByVal ord_type As String _ , ByVal oct_type As String _ , ByVal daily As String _ , ByVal start_date As String _ , ByVal end_date As String _ , ByVal preorder As String _ , ByVal source As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 code: 商品代號(欲查詢所有商品則填““) ord_match_flag : 成交類別0:全部明細1:未成交3:委託失敗5:委託彙總 ord_type : 商品類別0:全部商品1:期貨2:選擇權3:美元計價 oct_type: 倉別.定為"0" daily: 0:當日1:歷史 start_date: 歷史查詢起始日 end_date: 歷史查詢終止日 preorder : ' ' = 含預約單, 'N' = 不含預約單 source : 來源, 1=e-Leader, 2=API, 3=e-Leader + API, 其他數值則傳回全部 |
使用範例: | |
回傳值: |
函式名稱: | stock_balance_qry |
函式功能: | 國內證券庫存查詢 |
VC 宣告: | BSTR stock_balance_qry( char*flag , char*leng , char*next , char*prev , char*gubn , char*group_name , char*branch , char*account , char*time_out ); |
VBA 宣告: | Private Declare Function stock_balance_qry Lib "C:vba dllt4.dll" (ByVal flag As String _ , ByVal leng As String _ , ByVal next As String _ , ByVal prev As String _ , ByVal gubn As String _ , ByVal group_name As String _ , ByVal branch As String _ , ByVal acct As String _ , ByVal time_out As String) As String |
傳入參數: | flag = "0000" leng = "0004" next = "0000" prev = "0000" gubn : 0:單一帳戶1:群組 group name : 群組名稱(單一帳戶則填"") branch : 證券分公司代號 account : 證券帳戶 time_out = "1" |
使用範例: | |
回傳值: |
函式名稱: | stock_balance_sum |
函式功能: | 國內證券未實現損益匯總查詢 |
VC 宣告: | BSTR stock_balance_qry( char*branch , char*account , char*type , char*action ); |
VBA 宣告: | Private Declare Function stock_balance_sum Lib "C:vba dllt4.dll" (ByVal branch As String _ , ByVal acct As String _ , ByVal ttype As String _ , ByVal action As String ) As String |
傳入參數: | branch : 證券分公司代號 account : 證券帳戶 ttype : 庫存類別"A" 全部, "0" 現貨, "1" 資, "2" 券 action : 過濾別" " 不濾, "1" 濾下市商品, "2" 不含稅費, "3" 濾下市+不含稅費 |
使用範例: | stock_balance_sum( "9A95", "9809975", "A", " " ) |
回傳值: | 異常一,API錯誤:API 錯誤訊息 異常二,損益中心錯誤訊息:錯誤代碼,錯誤訊息 正常狀況:附件(十五) |
函式名稱: | stock_balance_detail |
函式功能: | 國內證券未實現損益個股明細 |
VC 宣告: | BSTR stock_balance_detail ( char*branch , char*account , char*stock , char*ttype ); |
VBA 宣告: | Private Declare Function stock_balance_detail Lib "C:vba dllt4.dll" ( ByVal branch As String _ , ByVal acct As String _ , ByVal stock As String _ , ByVal ttype As String ) As String |
傳入參數: | branch : 證券分公司代號 account : 證券帳戶 stock : 股票代碼(例如:"2890", 不可帶空白) ttype : 庫存類別"A" 全部, "0" 現貨, "1" 資, "2" 券 |
使用範例: | stock_balance_detail( "9A95", "9809975", "2890", "A" ); |
回傳值: | 異常一,API錯誤:API 錯誤訊息 異常二,損益中心錯誤訊息:錯誤代碼,錯誤訊息 正常狀況:附件(十六) |
函式名稱: | ff_get_response |
函式功能: | 國外商品回報查詢(同e-Leader 畫面8002) |
VC 宣告: | BSTR ff_get_response(); |
VBA 宣告: | Private Declare Function ff_get_response Lib "C:vba dllt4.dll" () As String |
傳入參數: | |
使用範例: | |
回傳值: | 參考附件(二) |
函式名稱: | ff_get_info |
函式功能: | 國外期貨權益數查詢(同e-Leader 畫面8003) |
VC 宣告: | BSTR ff_get_info( char*branch, char*account ); |
VBA 宣告: | Private Declare Function ff_get_info Lib "C:vba dllt4.dll" (ByVal branch As String, ByVal account As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 |
使用範例: | |
回傳值: | 參考附件(十三) |
函式名稱: | ff_get_positions |
函式功能: | 國外期貨部位查詢(同e-Leader 畫面8001) |
VC 宣告: | BSTR ff_get_positions( char*branch, char*account ); |
VBA 宣告: | Private Declare Function ff_get_positions Lib "C:vba dllt4.dll" (ByVal branch As String, ByVal account As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 |
使用範例: | |
回傳值: | 參考附件(十二) |
函式名稱: | ff_order_qry |
函式功能: | 國外期貨委託查詢 |
VC 宣告: | BSTR ff_order_qry( char*branch , char*account , char*start_date , char*end_date , char*ord_match_flag , char*daily ); |
VBA 宣告: | Private Declare Function ff_order_qry Lib "C:vba dllt4.dll" (ByVal branch As String _ , ByVal acct As String _ , ByVal start_date As String _ , ByVal end_date As String _ , ByVal ord_match_flag As String _ , ByVal daily As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 start_date : 歷史查詢起始日 end_date : 歷史查詢終止日 ord_match_flag "0 - 全部委託1 - 未成交2 - 已成交 daily "0 - 歷史1- 當日" |
使用範例: | |
回傳值: |
函式名稱: | fo_get_day_info |
函式功能: | 國內期權當日權益數查詢(同e-Leader 畫面7102) |
VC 宣告: | BSTR fo_get_day_info( char*branch, char*account ); |
VBA 宣告: | Private Declare Function fo_get_day_info Lib"C:vba dllt4.dll" (ByVal branch As String, ByVal account As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 |
使用範例: | |
回傳值: | 參考附件(五) |
函式名稱: | fo_get_hist_info |
函式功能: | 國內期權歷史權益數查詢(同e-Leader 畫面7103) |
VC 宣告: | BSTR fo_get_hist_info( char*branch , char*account , char*sdate , char*edate ); |
VBA 宣告: | Private Declare Function fo_get_hist_info Lib "C:vba dllt4.dll" _ (ByVal branch As String _ , ByVal acct As String _ , ByVal sdate As String _ , ByVal edate As String) As String |
傳入參數: | branch : 期貨分公司代號 account : 期貨帳戶 sdate: 開始日期 edate: 結束日期 (僅提供近兩個月資料查詢) |
使用範例: | |
回傳值: | 參考附件(六) |
(三) iv. 其他回報查詢函式
函式名稱: | get_response_log |
函式功能: | 回報紀錄 |
VC 宣告: | BSTR get_response_log(); |
VBA 宣告: | Private Declare Function get_response_log Lib "C:vba dllt4.dll" ( ) As String |
傳入參數: | |
使用範例: | |
回傳值: | 參考附件(三) |
函式名稱: | check_response_buffer |
函式功能: | 檢查是否有未讀取之主動回報 |
VC 宣告: | int check_response_buffer(); |
VBA 宣告: | Declare Function check_response_buffer Lib "C:vba dllt4.dll" () As Integer |
傳入參數: | 無 |
使用範例: | |
回傳值: | 1: 有回報尚未讀取, 0: 無新回報 |
函式名稱: | timer_response_log |
函式功能: | 讀取尚未讀取之主動回報 |
VC 宣告: | BSTR timer_response_log(); |
VBA 宣告: | Declare Function timer_response_log Lib "C:vba dllt4.dll" () As String |
傳入參數: | 無 |
使用範例: | |
回傳值: | 參考附件(三) |
函式名稱: | fifo_response |
函式功能: | 先進先出式回報 |
VC 宣告: | int fifo_response( char*response_str ); |
VBA 宣告: | Private Declare Function fifo_response Lib "C:vba dllt4.dll" (ByVal response_str As String) As Integer |
傳入參數: | response_str, 用來接收回傳值。 |
使用範例: | |
回傳值: |
函式名稱: | get_response_evt |
函式功能: | 取得Response Event Handle |
VC 宣告: | HANDLE get_response_evt(); |
VBA 宣告: | 不支援 |
傳入參數: | 無 |
使用範例VC: | HANDLE hevtResp = get_response_evt(); DWORD r = WaitForSingleObject( hevtResp, INFINITE ); while(
r==WAIT_OBJECT_0 ) { //
do something |
回傳值: | 參考MSDN Event Handle |
(三) v. 其他函式
函式名稱: | change_echo |
函式功能: | 切換下單、刪單函式,是否等待委託狀態,才返回函式。(預設:等待) (非等待模式可較快返回函式,但必須由主動回報處判斷委託狀態) (對於每秒超過6筆以上的用戶,可於較短的反應時間內連續下單) |
VC 宣告: | BSTR change_echo(); |
VBA 宣告: | Private Declare Function change_echo Lib "C:vba dllt4.dll" () As String |
傳入參數: | |
使用範例: | |
回傳值: |
函式名稱: | log_out |
函式功能: | 結束、登出。 (所有之前加入的憑證清單會一併清除) |
VC 宣告: | int log_out(); |
VBA 宣告: | Private Declare Function log_out Lib "C:vba dllt4.dll" () As Integer |
傳入參數: | 無 |
使用範例: | |
回傳值: | 0: 成功登出, -1: 登出失敗、或其他錯誤 |
函式名稱: | show_version |
函式功能: | 回傳目前API 版本 |
VC 宣告: | BSTR show_version(); |
VBA 宣告: | Private Declare Function show_version Lib "C:vba dllt4.dll" () As String |
傳入參數: | 無 |
使用範例: | |
回傳值: |
函式名稱: | show_list |
函式功能: | 回傳目前登入ID 所擁有之所有帳戶 |
VC 宣告: | BSTR show_list(); |
VBA 宣告: | Private Declare Function show_list Lib "C:vba dllt4.dll" () As String |
傳入參數: | 無 |
使用範例: | |
回傳值: |
函式名稱: | show_ip |
函式功能: | 回傳目前連線之伺服器domain |
VC 宣告: | BSTR show_ip(); |
VBA 宣告: | Private Declare Function show_ip Lib "C:vba dllt4.dll" () As String |
傳入參數: | 無 |
使用範例: | |
回傳值: | sinotrade.com.tw |
vi.常見函式回傳錯誤 (通用)
錯誤訊息: | 可能原因: |
尚未初始化, 請先初始化 | 未正確執行 init_t4 |
註冊程序錯誤 | 無法登錄該帳戶 |
socket error | 作業系統無法提供網路 |
參數長度錯誤 | 傳入的參數長度不正確 |
invalid message handle | 與伺服器之間的同步發生異常,請登出重新登入。 |
張數需大於 0 | 指定的張數/股數不得小於等於零。 |
價格需大於 0 | 指定的價位不得小於或等於零。 |
指定使用漲/跌停價時 價格欄位必須為 0 | 輸入值超出範圍 |
商品價格輸入錯誤, 請重新確認 | 輸入值超出範圍 |
價格需為該商品價最小跳動點之倍數 | 輸入值超出範圍 |
價格分母輸入錯誤 | 輸入值超出範圍 |
價格錯誤,請確認價格格式後再行輸入 | 輸入格式錯誤 |
短時間內查詢次數過多,請稍後嘗試... | 未平倉查詢次數已屆伺服器安全容許值 |
參數輸入錯誤 (查詢日期期間需以 YYYYMMDD ~ YYYYMMDD 代表) | 日期格式錯誤 |
daily (僅查詢當日)參數錯誤 | 輸入值超出範圍 |
下單確認回應(Echo)設定錯誤 | 輸入值超出範圍 |
僅提供近兩個月資料查詢 | 輸入值超出範圍 |
商品名稱錯誤 | 商品名稱錯誤 |
複式商品名稱錯誤 | 複式商品名稱錯誤 |
分公司/客戶帳戶 錯誤 | 證券或期貨帳戶錯誤,或是分公司錯誤 |
gnbu 參數無效 | 該函式不支援群組功能,或指定值超出範圍 |
本功能暫不提供群組查詢 | 暫不支援 |
伺服器回傳資料長度有誤,請確認版本相容性 | 請更新為最新版本 |
socket send error, 送單失敗 | 網路傳輸失敗,系統網路可能異常。 |
TR Error | 伺服器回應錯誤 (非API元件或使用錯誤) |
CA憑證資料登錄失敗 [ CA身份證不符 ] | 憑證所屬人身份證號與add_acc_ca輸入不符。 |
無法建立操作紀錄,取消。 | 無法產生 log 檔,所有 log 將會被放棄。 |
Server連接設定錯誤, 請確認t4.ini的參數 | 無法從 t4.ini 讀取正確伺服器位址、連接埠。 |
版本無效,請使用目前發行版本。 | 請更新最新發行中 API 元件。 |
無法登入 | 網路異常,請重新嘗試登入。 |
登入密碼錯誤! | 登入使用者之密碼錯誤 (非憑證密碼) |
無此帳號! | 登入使用者之 ID 錯誤 (通常為身份證字號) |
下單帳號取得失敗 | 登入之使用者可能無有效之證券、期貨帳戶 |
市價單&複式選擇權單無法選取<當日有效委託>(ROD) | 輸入值超出範圍 |
委託內容錯誤, 無此組合 | 選擇權下單組合錯誤 |
您的帳號目前無法使用VBA功能,請洽營業同仁,提出申請。 | 根據『期貨經紀商提供API服務之相關控管措施』:期貨交易人應親持身份證件提出書面申請並於營業場所當場簽名或蓋章。 |
(四) 注意事項:
國外期貨,香港恆生指的商品代碼四月份為HSID7,並非精誠WEB上顯示的HSIJ7。
國外期貨新增加可交易商品及交易所代碼請見下列附件(三)。
期權下單價位檔位請符合規定,檔位不合不會回錯誤,但委託會送出。
下單與刪單的BUTTON按下後,VBA會等SERVER回覆下單狀況後才算完成動作。(可用change_echo函式調整)
eLeader 與VBA同一個使用者ID,無法同時登入。
若要同時登入,請洽您的營業員,申請重複登入權限。處理委託查詢的字串,需使用vba內的strconv 函式處理字串編碼
(詳見excel sample範例)
附件(一):國內下單查詢(for 國內市場:臺灣證券、期貨) get_response
回傳格式示意圖:
Header | Record 1 | Record 2 | … | Record N |
Header ( 表頭,必有)
欄位 | 說明 | 長度 |
count | 筆數 | 5 |
字元數: | 5 |
Record
欄位 | 說明 | 長度 |
Type | Type: STOCK:93 FUTURE:91 | 2 |
CancelQty | 刪單量 | 5 |
ContractQty | 成交量 | 5 |
OrgPrice | 原委託價格 | 9 |
Seq | 序號 | 8 |
Account | 帳號 | 15 |
Ord_No | 委託書號(預約單無此值) | 5 |
Ord_Seq | 網路單號 | 6 |
Code | 商品代碼 | 10 |
Trade_type | Stock:01:買/02:賣/03:改量/04:刪單 | 3 |
Trade_class | 01:現賣/ 02:現買/ 03:資賣/04:資買/ 05:券賣/ 06:券賣 B:買/ S:賣/ EB:零買/ ES:零賣 | 2 |
Price | 委託價 | 9 |
ContractPrice | 成交價 | 9 |
Ordknd | 期權:ROD/FOK/IOC 證券:0=現股/定盤, 2=零股 | 3 |
Qty | 數量(委託量/刪單量) | 5 |
Trans_time | 異動時間 | 6 |
StatusMsg | 類別,例:委託成功 | 20 |
ErrorCode | [00 ] ; [32 ] ; [0000]為成功. 其他代碼則為失敗 | 4 |
ErrorMSG | 錯誤訊息 | 60 |
Web_id | 下單的系統150 | 3 |
Account_s | 15 | |
Oct | 0=新倉;1=平倉;2=自動 | 1 |
Ord_time | 時間 | 6 |
Agent_id | 6 | |
price_type | ‘‘=使用者帶價格, ‘2’=漲停價, ‘3’=跌停價 | 1 |
trf_fld | 4 | |
Match_seq | 成交序號(保留未用) | 8 |
字元數: | 230 |
附件(二):國外期貨下單查詢(ff_get_response)
回傳格式示意圖:
Header | Record 1 | Record 2 | … | Record N |
Header ( 表頭,必有)
欄位 | 說明 | 長度 |
count | 筆數 | 4 |
字元數: | 4 |
欄位 | 說明 | 長度 |
type | 3 | |
cancelqty | 刪單量 | 5 |
matchqty | 成交量 | 5 |
seq | 序號 | 9 |
account | 帳號 | 16 |
Ord_no | 委託書號(預約單無此值) | 7 |
Ord_Seq | 網路單號 | 7 |
code | 商品代碼 | 10 |
tradetype | 委託別 1:MKT 2:LMT 3:STP 4:SWL U:改量C:刪單 | 4 |
buysell | B:買進 S:賣出 | 2 |
orderprice | 委託價(99999.9999) | 10 |
matchprice | 成交價(99999.9999) | 10 |
orderkind | 委託條件 | 4 |
orderqty | 數量(委託量/刪單量) | 5 |
transtime | 異動時間 | 7 |
statusmsg | 類別,例:委託成功 | 21 |
errcode |
| 5 |
errmsg | 錯誤 | 61 |
webid | 來源別 | 4 |
account_s |
| 16 |
octname | Y:新倉N:平倉A:自動 | 2 |
ordertime | 時間 | 7 |
字元數: | 220 |
附件(三):主動回報格式timer_response_log
欄位 | 說明 | 長度 |
Type | STOCK:委回93成回92 FUTURE:委回91 成回90 | 2 |
Ord Type | 01:買/02:賣/03:改量/04:刪單 | 2 |
Seq | 序號 | 8 |
Account | 帳號 | 15 |
Ord_No | 委託書號(預約單無此值) | 5 |
Ord_Seq | 網路單號 | 6 |
Code | 商品代碼 | 10 |
Trade_type | Stock:01:買/02:賣/03:改量/04:刪單 | 3 |
Trade_class | 01:現賣/ 02:現買/ 03:資賣/04:資買/ 05:券賣/ 06:券賣
| 2 |
Price | 委託價 | 9 |
ContractPrice | 成交價 | 9 |
Ordknd | 期貨:ROD/FOK/ROD 證券:0=現股/定盤, 2=零股 | 3 |
Qty | 數量(委託量/刪單量) | 5 |
Trans_time | 異動時間 | 6 |
StatusMsg | 類別,例:委託成功 | 20 |
ErrorCode | [00 ] ; [32 ] ; [0000]為成功. [PR ] = 預約單 [9932] = 減量成功,但變更量大於原委託量(視為取銷) [9951] = FOK單未成交,期交所已取銷 [9952] = IOC單部份成交 [9953] = IOC單未成交 | 4 |
ErrorMSG | 錯誤 | 60 |
Web_id | 下單的系統150 | 3 |
Account_s | 15 | |
Oct | 0=新倉;1=平倉;2=自動 | 1 |
Ord_time | 時間 | 6 |
Agent_id | 6 | |
price_type | ‘‘=使用者帶價格, ‘2’=漲停價, ‘3’=跌停價 | 1 |
trf_fld | 4 | |
字元數: | 205 |
附件(四)
大道瓊, Nasdaq , S&P , 美元指數期貨目前不提供電子單委託
另外有測試過以下商品均可以電子單委託
美國芝加哥期貨交易所 | 代碼:CBT |
三十年公債 | US |
十年公債 | TY |
五年公債 | FV |
二年公債 | TU |
小道瓊 | YM |
黃金 | ZG |
小黃金 | YG |
(公債的價格委託方式請參考sample excel 裡面的code 註解)
美國芝加哥商業交易所 | 代碼:CME |
歐元 | EC |
英鎊 | BP |
瑞士法郎 | SF |
加幣 | CD |
日圓 | JP |
澳幣 | AD |
歐洲美元 | ED |
新加坡期貨交易所 | 代碼:SMX |
摩根台指 | TWS |
紐約商業交易所 | 代碼:NYM |
輕原油 | CL |
附件(五):國內當日權益數查詢( fo_get_day_info )
回傳格式示意圖:
Header | Record 1 台幣 | Record 2 約當台幣 | Record 3 美元 | Record 4 約當美元 |
Header ( 表頭)
欄位 | 說明 | 長度 |
date | 日期 | 8 |
time | 時間 | 6 |
count | 筆數(目前固定為4, 台幣、約當台幣、美元、約當美元) | 4 |
字元數: | 18 |
Record ( 單筆紀錄)
欄位 | 說明 | 長度 |
Avlamt | 下單可用保證金 | 20 |
ACTbal | 帳戶權益數 | 20 |
Tgain | 期貨平倉損益 | 20 |
Bgain | 未平倉損益(期貨) | 20 |
OBGAIN | 未平倉損益(選擇權) | 20 |
PMamt | 今日選擇權收支 | 20 |
APamt | 選擇權市值 | 20 |
TMamt | 今日存提款 | 20 |
FEE | 手續費 | 20 |
FTAX | 交易稅 | 20 |
OTamt | 委託保證金 | 20 |
COGTamt | 原始保證金 | 20 |
CMGTamt | 維持保證金 | 20 |
WARNN | 風險係數 | 20 |
WARNV | 清算風險係數 | 20 |
BidVolume | (未啟用) | 20 |
AskVolume | (未啟用) | 20 |
BidMatch | (未啟用) | 20 |
AskMatch | (未啟用) | 20 |
BEQUITY | 前日帳戶餘額 | 20 |
GdAmt | 抵繳金額 | 20 |
EQuity | 清算權益數 | 20 |
OGAIN | 平倉損益(選擇權) | 20 |
exrate | 轉換匯率 | 20 |
xgdamt | (未啟用) | 20 |
agtamt | 追繳金額 | 20 |
yequity | 昨日清算權益數 | 20 |
munet | 未平倉損益(當日) | 20 |
字元數: | 560 |
註:20字元數值格式為13 位整數+ 6 位小數(以下皆同)
長度 | |
整數部份(負數時,第一位為半形負號“-“ ) | 13 |
小數點 | 1 |
小數部份 | 6 |
字元數 | 20 |
附件(六):國內歷史權益數查詢( fo_get_hist_info )
回傳格式示意圖:
Header | Record 1 | Record 2 | … | Record N |
Header ( 表頭,必有)
欄位 | 說明 | 長度 |
Fee_tot | 手續費(加總) | 20 |
Tax_tot | 稅金(加總) | 20 |
Fcon_tot | 期貨平倉損益(加總) | 20 |
Inout_tot | 本日存提(加總) | 20 |
Bid_tot | 成交買進口數(加總) | 20 |
Ask_tot | 成交賣出口數(加總) | 20 |
Ogain_tot | 選擇權平倉損益(加總) | 20 |
count | 資料筆數 | 4 |
字元數: | 144 |
Record
欄位 | 說明 | 長度 |
tdate | 日期 | 8 |
acct | 帳戶號碼 | 15 |
profit_qty | 帳戶權益數 | 20 |
clear_qty | 清算權益數 | 20 |
fee | 手續費 | 20 |
tax | 交易稅 | 20 |
fcon | 期貨平倉損益 | 20 |
fmiss | 未平倉損益(期貨) | 20 |
omiss | 未平倉損益(選擇權) | 20 |
inout | 本日存提 | 20 |
osecu_amt | 原始保證金 | 20 |
usecu_amt | 維持保證金 | 20 |
status | 風險係數 | 20 |
bid_qty | 成交買進口數 | 20 |
ask_qty | 成交賣出口數 | 20 |
ogain | 選擇權平倉損益 | 20 |
字元數: | 303 |
附件(七):國內期權委託查詢( fo_order_qry )
回傳格式示意圖:
Header
Record 1
Record 2
…
Record N
Header ( 表頭,必有)
欄位
說明
長度
flag
保留
4
leng
保留
4
next
保留
16
prev
保留
16
count
資料筆數(上限200)
3
對齊位元
1
字元數:
44
Record
欄位
說明
長度
account
帳號
15
ord_seq
網路單號
6
ord_no
委託書號(預約單無此值)
6
add_date
委託日期
8
preord_date
預約委託日期
8
add_time
委託時間
6
match_time
成交時間
6
stock_id
商品代碼
10
ord_bs
買賣
1
trade_type
委託條件
3
ord_qty
原委託數
6
cancel_qty
取消數
6
ord_match_qty
已成交數
6
ord_price
委託價
12
ord_match_avg_prc
成交均價
12
ord_status
狀態
60
type
委託來源
1
ord_type
ord_type
3
octype
倉別(“0”新倉, “1”平倉)
1
preorder
預約單(“N” : 非預約單, ““ : 預約單)
1
chg_ord_price
改價
12
err_code
伺服器回應錯誤代碼(參考下表)
4
字元數:
193
err_code 共4 個字元,分為兩部份
意義
前2 字元
後2 字元
HEX
正常
"00"
" "
30 30 20 20
正常
"00"
"00"
30 30 30 30
預約單
"80"
"14"
38 30 31 34
預約單
"PR"
" "
50 52 20 20
預約單異常
"P0"
" "
50 30 20 20
後台代碼
"99"
xy
39 39 xx yy
附件(八):證券庫存查詢( stock_balance _qry )
回傳格式示意圖:
Header | Record 1 | Record 2 | … | Record N |
Header ( 表頭,必有)
欄位 | 說明 | 長度 |
flag | 0000:無更多資料, 0002:最後一段資料(此為最後一頁) | 4 |
leng | 回傳時未用 | 4 |
next | 查詢下筆的key 值 | 4 |
prev | 查詢上頁的key 值 | 4 |
loan_amt | 保留未用 | 16 |
no_amt | 保留未用 | 16 |
lend_stock | 保留未用 | 16 |
no_stock | 保留未用 | 16 |
order | 保留未用 | 16 |
no_order | 保留未用 | 16 |
count | 資料筆數(每頁筆數最高60 筆) | 16 |
保留未用 | 1 | |
字元數: | 129 |
Record
欄位 | 說明 | 長度 |
account | 帳號 | 15 |
ttype | 庫存類別( 01=現股;02=融資;03=融券;04=興櫃; ) | 2 |
stock_id | 股票代碼 | 6 |
保留未用 | 1 | |
yqty | 昨日餘額 | 16 |
oqty | 可下單餘額 | 16 |
bid_oqty | 今委買 | 16 |
bid_cqty | 今買成 | 16 |
ask_oqty | 今委賣 | 16 |
ask_cqty | 今賣成 | 16 |
loan_qty | 融資金額 | 16 |
保留未用 | 16 | |
secu_qty | 資除權擔保品 | 16 |
mdate | 停資日 | 8 |
sdate | 停券日 | 8 |
nowqty | 即時庫存 | 16 |
保留 | 4 | |
字元數: | 204 |
附件(九):證券下單、刪單回傳(stock_order、stock_cancel)
Record
欄位 | 說明 | 長度 |
trade_type | 01:買 / 02:賣 / 03:改量 / 04:刪單 | 2 |
account | 交易帳號 | 15 |
stock_id | 股票代碼 | 6 |
ord_price | 下單價格 | 6 |
ord_qty | 交易量(張數;零股:股數) | 3 |
ord_seq | 網路單號 | 6 |
ord_date | 送單日期 | 8 |
effective_date | 交易日期 | 8 |
ord_time | 送單時間 | 6 |
ord_no | 委託書號(刪單必須使用委託書號) (預約單無此值) | 5 |
來源別152: API | 3 | |
org_ord_seq | 6 | |
ord_bs | B:買/ S:賣 | 1 |
ord_type1 | 1 | |
ord_type2 | 1 | |
market_id | S:證券 | 1 |
price_type | 1 | |
ord_status | 委託狀態, 0 = 成功, 88=異常 | 2 |
msg | 伺服器回應訊息 | 60 |
字元數: | 141 |
附件(十):期貨、選擇權下單回傳(future_order, option_order, future_cancel, option_cancel)
Record
欄位 | 說明 | 起點 | 長度 |
trade_type | 交易別 01:買/02:賣/03:改量/04:刪單/05:改價 | 1 | 2 |
account | 交易帳號 | 3 | 15 |
f_futopt | F:期貨/ O:選擇權 | 18 | 1 |
stock_id | 商品代碼 | 19 | 10 |
f_callput | C:Call / P: Put | 29 | 1 |
ord_bs | 買賣別B:買/ S:賣 | 30 | 1 |
ord_price | 下單價格 | 31 | 12 |
price_type | LMT=限價 | 43 | 3 |
ord_qty | 交易量 | 46 | 4 |
ord_no | 委託書號(預約單無此值) | 50 | 6 |
ord_seq | 網路單號 | 56 | 6 |
ord_type | ROD, ICT, FOK | 62 | 3 |
f_octype | 65 | 1 | |
f_mttype | 66 | 1 | |
f_composit | 67 | 2 | |
c_futopt | 69 | 1 | |
c_code | 70 | 10 | |
c_callput | 80 | 1 | |
c_buysell | 81 | 1 | |
c_price | 82 | 12 | |
c_quantity | 94 | 4 | |
ord_date | 送單日期 | 98 | 8 |
preord_date | 預約交易日期 | 106 | 8 |
ord_time | 送單時間 | 114 | 6 |
type | P: 預約單/ N:非預約單 | 120 | 1 |
err_code | 伺服器回應錯誤代碼 | 121 | 4 |
msg | 伺服器回應訊息 | 125 | 60 |
字元數: | 184 |
附件(十一):期權未平倉查詢( fo_unsettled_qry )
回傳格式示意圖:
Header | Record 1 | Record 2 | … | Record N |
Header ( 表頭,必有)
欄位 | 說明 | 長度 |
flag | 回傳時未用 | 4 |
leng | 回傳時未用 | 4 |
next | 查詢下頁用的flag | 4 |
prev | 查詢上頁用的flag | 4 |
vol_total | 口數合計 | 16 |
set_total | 結算合計 | 16 |
price_total | 即時價合計 | 16 |
loss_total | 浮動損益合計 | 16 |
secu_total | 保留未用 | 16 |
keep_total | 保留未用 | 16 |
balance | 保留未用 | 16 |
statistic | 保留未用 | 16 |
risk | 保留未用 | 16 |
otamt_total | 原始保證金合計 | 16 |
mtamt_total | 維持保證金合計 | 16 |
count | Record 筆數 | 16 |
字元數: | 208 |
Record
欄位 | 說明 | 長度 |
account | 帳戶 | 15 |
tdate | 交易日 | 8 |
code | 商品代碼 | 10 |
ord_no | 委託書號 | 6 |
ord_bs | 買賣別 | 1 |
ord_type | 保留未用 | 2 |
currency | 幣別 | 3 |
fill | 保留,對齊用。 | 3 |
vol | 口數 | 16 |
avg_price | 成交均價 | 16 |
set_prive | 結算價 | 16 |
price | 即時價 | 16 |
loss | 浮動損益 | 16 |
secu | 結算原始保證金 | 16 |
keep | 結算維持保證金 | 16 |
otamt | 原始保證金 | 16 |
mtamt | 維持保證金 | 16 |
字元數: | 192 |
附件(十二):國外期貨部位查詢(ff_get_position)
回傳格式示意圖:
Header | Record 1 | Record 2 | … | Record N |
Header ( 表頭,必有)
欄位 | 說明 | 起點 | 長度 |
count | 筆數 | 1 | 4 |
datetime | 日期時間 | 5 | 14 |
字元數: | 18 |
Record
欄位 | 說明 | 起點 | 長度 |
no | 序號 | 19 | 4 |
code | 商品代碼 | 23 | 10 |
b_nets | 淨買 | 33 | 4 |
s_nets | 淨賣 | 37 | 4 |
b_copt | 留倉買 | 41 | 4 |
s_copt | 留倉賣 | 45 | 4 |
b_match | 成交買 | 49 | 4 |
s_match | 成交賣 | 53 | 4 |
b_order | 委託買 | 57 | 4 |
s_order | 委託賣 | 61 | 4 |
currency | 幣別 | 65 | 3 |
字元數: | 49 |
註:起點為1-based,以VBA 為例,部份程式語言採用0-based,請自行減1
註:Record 起點必須加上Record 的長度,即Record 3 的起點相當於19 + 2 x 49
附件(十三):國外期貨權益數查詢(ff_get_info)
回傳格式示意圖:
Header | Record 1 | Record 2 | Record 3 | Record 4 | Record 5 | Record 6 | ||
Header ( 表頭,必有)
欄位 | 說明 | 起點 | 長度 |
datetime | 日期時間 | 1 | 14 |
filler | 保留未用 | 14 | 2 |
count | 保留未用 | 16 | 4 |
字元數: | 20 |
Record
欄位 | 說明 | 起點 | 長度 |
dbalne | 下單可用保證金 | 1 | 17 |
dbaln | 帳戶權益數 | 18 | 17 |
dtplamt | 平倉損益 | 35 | 17 |
prtlos | 未平倉損益 | 52 | 17 |
dimamt | 今天存提款 | 69 | 17 |
dmfeeb | 手續費交易稅 | 86 | 17 |
doimmrg | 委託保證金 | 103 | 17 |
dtimmrg | 原始保證金 | 120 | 17 |
dtmmmrg | 維持保證金 | 137 | 17 |
dwarn | 風險係數 | 154 | 17 |
dlbaln | 前日帳戶餘額 | 171 | 17 |
derate | 轉換匯率 | 188 | 14 |
dvpamt | 清算權益數 | 202 | 17 |
dadamt | 追繳金額 | 219 | 17 |
字元數: | 236 |
註:起點為1-based,以VBA 為例,部份程式語言採用0-based,請自行減1
註:Record 起點必須加上Record 的長度,即Record 3 的起點相當於1+20 + 2 x 235
附件(十四):國外期貨下單回傳(ffuture_order、ffuture_cancel)
Record
欄位 | 說明 | 起點 | 長度 |
trade_type | 交易狀態: 94=成交回報、95=委託回報 | 1 | 2 |
account | 交易帳號 | 3 | 15 |
f_futopt | F:期貨/ O:選擇權 | 18 | 1 |
code | 商品代碼 | 19 | 10 |
f_callput | C:Call / P: Put | 29 | 1 |
ord_bs | 買賣別B:買/ S:賣 | 30 | 1 |
ord_price | 下單價格 | 31 | 11 |
ord_price2 | 42 | 3 | |
ord_price3 | 45 | 3 | |
price_type | LMT=限價 | 48 | 3 |
ord_qty | 交易量 | 51 | 4 |
ord_no | 委託書號(預約單無此值) | 55 | 6 |
ord_seq | 網路單號 | 61 | 6 |
ord_type | ROD, ICT, FOK | 67 | 3 |
f_octype | 70 | 1 | |
f_mttype | 71 | 1 | |
f_composit | 72 | 2 | |
c_futopt | 74 | 1 | |
c_code | 84 | 10 | |
c_callput | 85 | 1 | |
c_buysell | 86 | 1 | |
c_price | 87 | 12 | |
c_quantity | 99 | 4 | |
ord_date | 送單日期 | 103 | 8 |
preord_date | 預約交易日期 | 111 | 8 |
ord_time | 送單時間 | 119 | 6 |
type | P: 預約單/ N:非預約單 | 125 | 1 |
err_code | 伺服器回應錯誤代碼 | 126 | 4 |
msg | 伺服器回應訊息 | 130 | 60 |
字元數: | 189 |
附件(十五): 國內證券未實現損益匯總查詢 stock_balance_sum
回傳格式為一字串,每個欄位以逗號分隔。
例:
[3],1,0,現股,2890,永豐金,2000,2000,0,0,27470,13.74,28974,1504,5.48%,14.55,56.38%,0,0,0,0,0.05,0.34%,2,0,現股,710934,UQ元大,30000,30000,0,0,19260,0.64,22419,3159,16.40%,0.75,43.62%,0,0,0,0,-0.01,-1.32%,合計,,,,,32000,32000,0,0,46730,,51393,4663,9.98%,,,0,0,0,0,,,0000,成功,
正常情況會以[筆數]開頭, 接著重複以下22欄位, 最後才有結束代碼,訊息。
欄位 | 說明 | 例 |
no | 資料欄位 | 1 |
ttype | 交易類別 | 0 |
ttypename | 交易類別名稱 | 現股 |
stock | 股票代碼 | 2890 |
stockname | 股票名稱 | 永豐金 |
real_qty | 即時庫存股數 | 2000 |
qty | 昨日庫存股數 | 2000 |
bqty | 今日交易入庫成交股數 | 0 |
sqty | 今日交易出庫成交股數 | 0 |
cost | 付出成本 | 27470 |
avgprice | 成本均價 | 13.74 |
nowamt | 現值 | 28974 |
unreal | 未實現損益 | 1504 |
urratio | 獲利率 | 5.48% |
lastprice | 現價 | 14.55 |
holdingpercent | 持股比率 | 56.38% |
bcramt | 融資金額 | 0 |
bdnamt | 擔保品 | 0 |
bgtamt | 保證金 | 0 |
interest | 利息 | 0 |
AD | 漲跌 | 0.05 |
ADR | 漲跌幅 | 0.34% |
註:筆數為零時,僅有回傳代碼與訊息。例:5001,查無資料,
註:筆數非零時,最後一筆為小計。
附件(十六): 國內證券未實現損益明細 stock_balance_detail
回傳格式為一字串,每個欄位以逗號分隔。
例:
[2],20130822,0,現股,2890,永豐金,I2121,1000,1000,12.95,12950,0,0,0,0,0,0,0,0,0,0,0,12950,0,7346,0,14487,1537,20140113,0,現股,2890,永豐金,I0532,1000,1000,14.50,14500,0,0,0,0,0,0,20,0,0,0,0,14520,0,7203,0,14487,-33,0000,成功,
正常情況會以[筆數]開頭, 接著重複以下27欄位, 最後才有結束代碼,訊息。
欄位 | 說明 | 例 |
tdate | 交易日期 | 20130822 |
ttype | 交易類別, 0現, 1代理融資, 2代理融券, 3自辦融資, 4自辦融券 | 0 |
ttypename | 交易類別名稱(現股、融資、融券) | 現股 |
stock | 股票代碼 | 2890 |
stockname | 股票名稱 | 永豐金 |
dseq | 委託書號 | I2121 |
qty | 原股數 | 1000 |
bqty | 未償還股數 | 1000 |
price | 成交單價 | 12.95 |
mamt | 成交價金 | 12950 |
cramt | 原融資金額 | 0 |
bcramt | 未償還融資金額 | 0 |
dnamt | 原擔保品 | 0 |
bdnamt | 未償還擔保品 | 0 |
gtamt | 原保證金 | 0 |
bgtamt | 未償還保證金 | 0 |
fee | 手續費 | 0 |
tax | 交易稅 | 0 |
interest | 利息 | 0 |
dlfee | 標借費 | 0 |
dbfee | 融券手續費 | 0 |
cost | 付出成本 | 12950 |
wtype | 異動別 | 0 |
seqno | 流水號 | 7346 |
keeprate | 維持率 | 0 |
nowamt | 現值 | 14487 |
unreal | 損益試算 | 1537 |
註:筆數為零時,僅有回傳代碼與訊息。例:5001,查無資料,