日盛 HTS API
版本:V2.00.0
http://www.hts.com.tw/FramePage_API.asp
1. 簡介
API(Application Programming Interface)簡稱應用程式設計介面, 此介面提供事先 預定的函數讓外部程式呼叫, 以與應用程式溝通或使用其服務.
日盛 HTS API 是以單一 DLL(Dynamic Linked Library, 即 HTSAPITradeClient.dll)
形式提供函數讓外部程式呼叫 HTS 應用程式的下單核心服務.
交易員及程式設計師可使用開發工具(VB/VC++/Delphi/.Net/Excel...等)設計自己 特製的下單應用程式(即個人下單機)直接呼叫 HTS API 或利用程式交易軟體(日 盛 STS/Tradestation/MetaStock...等)產生買賣訊號後, 再直接呼叫 HTS API 或利用 個人下單機間接讀檔方式進行自動下單動作.
2. 架構
對整體下單軟體架構的了解將有助於後續的應用程式開發工作.
應用程式呼叫 HTS API(即 HTSAPITradeClient.dll)内的函數將下單指令字串送給
API Trade Manager(即 APITradeMgr.exe)進行字串語法檢核.
API Trade Manager 負責將正確的下單指令字串轉換成正式下單指令.
接著 HTS 下單核心進行憑證檢查及憑證簽章後, 送給後台主機處理.
3. 程式設計
3.1 前置作業
請先正式登入 HTS 成功後, 執行 API Trade Manager(位於\HTS 安裝目錄
\APITradeMgr.exe).
註:目前版本為 V2.00.0
3.2 API 函數及功能說明
3.2.1下單函數: HTSOrder
Argument: string 下單指令字串
Return: none 無
Delphi Pascal 語言使用宣告為:
procedure HTSOrder(sOrderTokens: LPSTR); stdcall;
Tradestation 的 PowerEditor EasyLanguage 使用宣告為:
DefineDLLFunc: "C:\JihSun\HTS2\DLL\HTSAPITradeClient.dll", void, "HTSOrder", LPSTR;
期貨及期權下單指令字串規格如下表.
|
欄位
|
說明.
|
期貨
|
選擇權
|
|
Market
|
期貨:F, 期權:O
|
O
|
O
|
|
Account
|
交易帳號:123-1234567(分公司 3碼-帳號 7碼)
可由 API Trade Manager 右上方期貨帳號列表 取得
|
O
|
O
|
|
ContractName
|
期貨:TXF,FXF,EXF,MXF,T5F,XIF,GTF,TGF
期權:TXO,TFO,TEO,XIO,GTO
|
O
|
O
|
|
ContractDate
|
商品年月:yyyymm
|
O
|
O
|
|
CallPut
|
Call:C, Put:P
|
X
|
O
|
|
StrikePrice
|
履約價.
|
X
|
O
|
|
OpenCloseAuto
|
倉別. Open:O, Close:C, Auto:A
期貨:O,C,A
期權:O,C
|
O
|
O
|
|
BuySell
|
買賣別. Buy:B, Sell:S
|
O
|
O
|
|
Lots
|
口數.
|
O
|
O
|
|
OrderType
|
價格別. 限價:L, 市價:M
|
O
|
O
|
|
Price
|
價格. 市價單可不給值或給 0
|
O
|
O
|
|
FokIocRod
|
委託別. FOK:F, IOC:I, ROD:R
|
O
|
O
|
|
DayTrade
|
當沖. Yes:Y, No:N
|
O
|
X
|
註: O 表必需欄位值, X 表無需要
範例 1: 期貨下單字串
Market=F,Account=A01-1234567,ContractName=TXF,ContractDate=200808,OpenCloseAu to=A,BuySell=B,Lots=1,OrderType=L,Price=8888,FokIocRod=R,DayTrade=N
範例 2: 選擇權下單
Market=O,Account=A01-1234567,ContractName=TXO,ContractDate=200808,CallPut=C,St rikePrice=8000,OpenCloseAuto=O,BuySell=B,Lots=1,OrderType=L,Price=88,FokIocRod= R
3.2.2未平倉查詢函數
HTSCurContract
Argument: string 查詢指令字串
Return: integer 未平倉量
(Return -1:處理逾時,-2:參數錯誤,-3:不允許密集查詢,-4:處理中)
Delphi Pascal 語言使用宣告為:
function HTSCurContract(sOuery: LPSTR):Integer; stdcall;
Tradestation 的 PowerEditor EasyLanguage 使用宣告為:
DefineDLLFunc: "C:\JihSun\HTS2\DLL\HTSAPITradeClient.dll", int, "HTSCurContract", LPSTR;
期貨及期權查詢指令字串規格如下表.
|
欄位
|
說明.
|
期貨
|
選擇權
|
|
Market
|
期貨:F, 期權:O
|
O
|
O
|
|
Account
|
交易帳號:123-1234567(分公司 3碼-帳號 7碼)
可由 API Trade Manager 右上方帳號列表取得
|
O
|
O
|
|
ContractName
|
期貨:TXF,FXF,EXF,MXF,T5F,XIF,GTF,TGF
期權:TXO,TFO,TEO,XIO,GTO
|
O
|
O
|
|
ContractDate
|
商品年月:yyyymm
|
O
|
O
|
|
CallPut
|
Call:C, Put:P
|
X
|
O
|
|
StrikePrice
|
履約價.
|
X
|
O
|
|
BuySell
|
買賣別. Buy:B, Sell:S
|
O
|
O
|
註: O 表必需欄位值, X 表無需要
範例 1: 期貨查詢字串
Market=F,Account=A01-1234567,ContractName=TXF,ContractDate=201001,BuySell=B
範例 2: 選擇權查詢字串
Market=O,Account=A01-1234567,ContractName=TXO,ContractDate=201001,CallPut=C,St rikePrice=9000,BuySell=B
3.2.3委託成交回報回補函數
期貨及期權
HTSReportFutOpt
Argument1: string 查詢指令字串
Argument2: integer 接收回補資料字串的視窗 Handle
Return: integer 狀態
(Return 0:正常,-2:參數錯誤,-4:處理中)
Delphi Pascal 語言使用宣告為:
function HTSReportFutOpt(sOuery: LPSTR; iRecWin: Integer):Integer;
stdcall;
參數 1 為查詢指令字串, 語法規格如下表.
|
欄位
|
說明.
|
期貨
|
選擇權
|
|
Account
|
交易帳號:123-1234567(分公司 3碼-帳號 7碼)
可由 API Trade Manager 右上方期貨帳號列表 取得
|
O
|
O
|
註: O 表必需欄位值, X 表無需要
參數 2 為接收 WM_COPYDATA 訊息的視窗 Handle. 回補資料字串格式及欄位順序如下, 欄位間以空白分隔(可參考 HTS 7402): 格式一:
未成交委託(值=1)+時間+買賣別+商品+委託價+原委託+成交均價+已成交+已取
消+可交易量
格式二:
已成交委託(值=2) +時間+買賣別+商品+委託價+原委託+成交均價+已成交+已取 消+可交易量
格式三:
被拒絕委託(值=3) +時間+買賣別+商品+委託價+原委託+原因
3.2.4委託成交即時回報函數
期貨及期權
HTSReportFutOptRT
Argument1: string 查詢指令字串
Argument2: integer 接收即時資料字串的視窗 Handle
Return: integer 狀態
(Return 0:正常,-2:參數錯誤,-4:處理中)
Delphi Pascal 語言使用宣告為:
function HTSReportFutOptRT(sOuery: LPSTR; iRecWin: Integer):Integer;
stdcall;
參數 1 為查詢指令字串, 語法規格如下表.
|
欄位
|
說明.
|
期貨
|
選擇權
|
|
Account
|
交易帳號:123-1234567(分公司 3碼-帳號 7碼)
可由 API Trade Manager 右上方帳號列表取得
|
O
|
O
|
註: O 表必需欄位值, X 表無需要
參數 2 為接收 WM_COPYDATA 訊息的視窗 Handle.
即時資料內容為 API Trade Manager 送單紀錄欄位, 字串格式及欄位順序如下,
欄位間以垂直”|”分隔: (版本 V2.00.0 變更)
格式: (版本V2.00.0 變更) 序號+時間+種類+帳號+送單狀態+委託編號+商品+月份+倉別+買賣+數量+價格 別+價格+委託別+當沖+送單結果
3.2.5減量函數: (版本V2.00.0 新增) HTSOrderMinus
Argument: string 減量指令字串
Return: none 無
Delphi Pascal 語言使用宣告為:
procedure HTSOrderMinus(sOrderTokens: LPSTR); stdcall;
Tradestation 的 PowerEditor EasyLanguage 使用宣告為:
DefineDLLFunc: "C:\JihSun\HTS2\DLL\HTSAPITradeClient.dll", void, "HTSOrderMinus", LPSTR;
期貨及期權減量指令字串規格如下表.
|
Market
|
期貨:F, 期權:O
|
O
|
O
|
|
Account
|
交易帳號:123-1234567(分公司 3碼-帳號 7碼)
可由 API Trade Manager 右上方期貨帳號列表 取得
|
O
|
O
|
|
ContractName
|
期貨:TXF,FXF,EXF,MXF,T5F,XIF,GTF,TGF
期權:TXO,TFO,TEO,XIO,GTO
|
O
|
O
|
|
ContractDate
|
商品年月:yyyymm
|
O
|
O
|
|
CallPut
|
Call:C, Put:P
|
X
|
O
|
|
StrikePrice
|
履約價.
|
X
|
O
|
|
OrderID
|
委託編號.
|
O
|
O
|
|
Lots
|
口數.
|
O
|
O
|
註: 委託編號可由 API Trade Manager 下方送單紀錄視窗內取得或呼叫
HTSReportFutOptRT 函數取得
範例 1: 期貨減量
Market=F,Account=A01-1234567,ContractName=TXF,ContractDate=201012,OrderID=
01123456,Lots=1
範例 2: 選擇權減量
Market=O,Account=A01-1234567,ContractName=TXO,ContractDate=201012,CallPut=C,St rikePrice=8000,OrderID=01123456,Lots=1
3.2.6改價函數: (版本V2.00.0 新增)
HTSOrderChgPrice
Argument: string 改價指令字串
Return: none 無
Delphi Pascal 語言使用宣告為:
procedure HTSOrderChgPrice(sOrderTokens: LPSTR); stdcall;
Tradestation 的 PowerEditor EasyLanguage 使用宣告為:
DefineDLLFunc: "C:\JihSun\HTS2\DLL\HTSAPITradeClient.dll", void, "HTSOrderChgPrice", LPSTR;
期貨及期權改價指令字串規格如下表.
|
Market
|
期貨:F, 期權:O
|
O
|
O
|
|
Account
|
交易帳號:123-1234567(分公司 3碼-帳號 7碼)
可由 API Trade Manager 右上方期貨帳號列表 取得
|
O
|
O
|
|
ContractName
|
期貨:TXF,FXF,EXF,MXF,T5F,XIF,GTF,TGF
期權:TXO,TFO,TEO,XIO,GTO
|
O
|
O
|
|
ContractDate
|
商品年月:yyyymm
|
O
|
O
|
|
CallPut
|
Call:C, Put:P
|
X
|
O
|
|
StrikePrice
|
履約價.
|
X
|
O
|
|
OrderID
|
委託編號.
|
O
|
O
|
|
Lots
|
口數.
|
O
|
O
|
|
OrderType
|
價格別. 限價:L, 市價:M
|
O
|
O
|
|
Price
|
價格. 市價單可不給值或給 0
|
O
|
O
|
|
FokIocRod
|
委託別. FOK:F, IOC:I, ROD:R
|
O
|
O
|
註: 委託編號可由 API Trade Manager 下方送單紀錄視窗內取得或呼叫
HTSReportFutOptRT 函數取得
範例 1: 期貨改價
Market=F,Account=A01-1234567,ContractName=TXF,ContractDate=201012,OrderID=
01123456,Lots=1,OrderType=L,Price=8888,FokIocRod=R
範例 2: 選擇權改價
Market=O,Account=A01-1234567,ContractName=TXO,ContractDate=201012,CallPut=C,St rikePrice=8000,OrderID=01123456,Lots=1,OrderType=L,Price=88,FokIocRod=R
3.2.7投資現況函數: (版本V2.00.0 新增)
HTSAcntInfoFutOpt
Argument1: string 查詢指令字串
Argument2: integer 接收回補資料字串的視窗 Handle
Return: integer 狀態
(Return 0:正常,-2:參數錯誤,-4:處理中)
Delphi Pascal 語言使用宣告為:
function HTSAcntInfoFutOpt(sOuery: LPSTR; iRecWin: Integer):Integer;
stdcall;
參數 1 為查詢指令字串, 語法規格如下表.
|
欄位
|
說明.
|
期貨
|
選擇權
|
|
Account
|
交易帳號:123-1234567(分公司 3碼-帳號 7碼)
可由 API Trade Manager 右上方期貨帳號列表 取得
|
O
|
O
|
註: O 表必需欄位值, X 表無需要
參數 2 為接收 WM_COPYDATA 訊息的視窗 Handle. 回補資料字串格式及欄位順序如下, 欄位間以空白分隔(可參考 HTS 7404): 格式:
結算狀態+維持率+帳戶權益+今日存提款+可用餘額+期貨平倉損益+原始保証金
+維持保証金+期貨浮動損益+權利金+預扣權利金+買方市值+賣方市值+前日權 益+前日餘額+總手續費+總交易稅+權益總值+總權益維持率+足額總維持率+前 日權益總值
範例:
結算狀態=未結帳 維持率=*********% 帳戶權益=100447563 今日存提款=0 可 用餘額=100447563 期貨平倉損益=0 原始保証金=0 維持保証金=0 期貨浮動損 益=0 權利金=0 預扣權利金=0 買方市值=0 賣方市值=0 前日權益=100447563 前日餘額=100447563 總手續費=0 總交易稅=0 權益總值=100447563 總權益維 持率=*********% 足額總維持率=*********% 前日權益總值=100447563
3.2.8 下單次數控管功能: (版本 V2.00.0 新增)
程式初始預設不啟用下單次數控管功能, 需手動勾選右方啟用選擇.
每分鐘最大 3 次下單及每日最大 20 次下單, 亦可隨時手動上下調整最大下單次 數, 設定確認後會立即生效. 且系統會自動累計且紀錄當日已下單次數, 若判斷 超過每日最大下單次數, 則會停止正式下單, 此時可立即手動上調每日最大下單 次數, 以利後續正式下單動作.
每分鐘最大下單次數限制是依帳號分別獨立計算. 收到第一筆單開始計時, 於此 一分鐘內只接受所設定下單次數, 超過部份將被拒絕, 需待下一分鐘起且有收到
單後才開始計時.
3.3 函數呼叫
3.3.1下單函數
期貨及期權
Delphi Pascal 語言:
HTSOrder(pansichar(‘Market=F,Account=A01-1234567,ContractName=TXF,ContractD ate=201001,OpenCloseAuto=A,BuySell=B,Lots=1,OrderType=L,Price=8888,FokIocRod=R, DayTrade=N’));
Tradestation EasyLanguage:
HTSOrder(“Market=F,Account=A01-1234567,ContractName=TXF,ContractDate=201001, OpenCloseAuto=A,BuySell=B,Lots=1,OrderType=L,Price=8888,FokIocRod=R,DayTrade= N”);
3.3.2未平倉查詢函數
Delphi Pascal 語言:
期貨:
HTSCurContract(pansichar(‘Market=F,Account=A01-1234567,ContractName=TXF,Co ntractDate=201001,BuySell=B’));
期權:
HTSCurContract(pansichar(‘Market=O,Account=A01-1234567,ContractName=TXO,C
ontractDate=201001,CallPut=C,StrikePrice=9000,BuySell=B’));
3.3.3委託成交回報回補函數
Delphi Pascal 語言:
期貨/期權:
recHandle := FindWindow(PChar('TReceiverForm'),PChar('ReceiverForm'));
HTSReportFutOpt(pansichar(‘Account=A01-1234567’), Integer(recHandle));
3.3.4委託成交即時回報函數
Delphi Pascal 語言:
期貨/期權:
recHandle := FindWindow(PChar('TReceiverForm'),PChar('ReceiverForm'));
HTSReportFutOptRT(pansichar(‘Account=A01-1234567’), Integer(recHandle));
3.3.5減量函數(版本V2.00.0 新增)
期貨及期權
Delphi Pascal 語言:
HTSOrderMinus(pansichar(‘Market=F,Account=A01-1234567,ContractName=TXF,Co ntractDate=201012,OrderID= 01123456,Lots=1’));
Tradestation EasyLanguage:
HTSOrderMinus(“Market=F,Account=A01-1234567,ContractName=TXF,ContractDate=
201012,OrderID= 01123456,Lots=1”);
3.3.6改價函數(版本V2.00.0 新增)
期貨及期權
Delphi Pascal 語言:
HTSOrderChgPrice(pansichar(‘Market=F,Account=A01-1234567,ContractName=TXF,
ContractDate=201012,OrderID=01123456,Lots=1,OrderType=L,Price=8888,FokIocRod=R’)
);
Tradestation EasyLanguage:
HTSOrderChgPrice(“Market=F,Account=A01-1234567,ContractName=TXF,ContractDate=
201012,OrderID= 01123456,Lots=1,OrderType=L,Price=8888,FokIocRod=R”);
3.3.7投資現況函數: (版本V2.00.0 新增)
期貨及期權
Delphi Pascal 語言:
recHandle := FindWindow(PChar('TReceiverForm'),PChar('ReceiverForm'));
HTSAcntInfoFutOpt(pansichar(‘Account=A01-1234567’), Integer(recHandle));
4. 執行結果
其他推薦站內聯結
日盛期貨開戶手續費優惠+語法翻譯機+程式交易系統教學+懶人包+移動停損等多項好禮
日盛期貨程式交易語法翻譯機
日盛期貨預約開戶