C#交易API使用手冊
C#交易API流程說明
API驗證流程
請先下載API元件,並使用您的程式登入台新API,登入驗證環境。
ROD下單、改單、刪單(依照數位API網站線上驗證下單內容,於您的程式進行委託下單)。
IOC下單(依照數位API網站線上驗證下單內容,於您的程式進行委託下單)。
FOK下單(依照數位API網站線上驗證下單內容,於您的程式進行委託下單)。
下單完成後,於數位API網站線上驗證頁面輸入委託書號。
以上3.4.5步驟均填入委託書號後,於數位API網站線上驗證頁面點選"驗證"。
驗證成功後及驗證完成,須待人員審核,請稍待審核流程,方能開通權限。
關聯網站
C#交易API範例程式說明
3. 回報狀態事件
3.1 系統訊息
OnSystemEvent:系統訊息事件
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| Msg | String | 系統訊息文字 |
3.2 證券交易連線狀態
OnStockConnStuUpdateEvent:證券交易連線狀態事件
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| IsConnected | Boolean | 是否已連線 |
3.3 返回可交易證券帳號
OnStockAccListUpdateEvent:返回可交易證券帳號事件
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| AccList | List<TCommonAccData> | 可交易證券帳號列表 |
3.4 證券交易回補完成
OnStockRestoreCompleteEvent:證券交易回補完成事件
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| - | - | - |
3.5 證券交易即時回報
OnStockRealTimeReportEvent:證券交易即時回報事件
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| ReportData | TReportData | 證券即時回報格式 |
3.6 查詢期初庫存結果(僅正式環境提供查詢)
OnQryOpenBalResultEvent: 期初庫存回報事件
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| TQryOpenBalResult | TQryOpenBalResult: List<TOpenBalRec>物件 | 期初庫存回報格式 |
3.7 查詢庫存彙總結果
OnQryTotbal_RayinResultEvent: 期初庫存回報事件
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| TQryTotbal_RayinResult | TQryTotbal_RayinResult: List<TQryTotbal_RayinRec>物件 | 庫存彙總回報格式 |
3.8 查詢或有券源結果(僅正式環境提供查詢)
OnQrySecInvQty_RayinResultEvent: 或有券源回報事件
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| TSecInvQty | TSecInvQty物件 | 或有券源回報格式 |
3.9 查詢資券配額結果
OnQryCrQtyAndDbQtyResultEvent: 資券配額回報事件
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| TCrQtyAndDbQty | TCrQtyAndDbQty物件 | 資券配額回報格式 |
4. API物件欄位說明
4.1 新單格式:TNewOrderData
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| ExCode | String | 交易時段(N普通,F定盤,L盤後零股,R 盤中零股) |
| BkrNo | String | 分公司代碼 |
| AccNo | String | 七碼子帳號 |
| BSType | String | 買賣別(B/S) |
| ProdID | String | 商品代號(ex:2330) |
| MrtType | String | 價格類別(L=限價,M=市價) |
| OrderPrice | String | 委託價 |
| OrderQty | String | 委託股數 |
| OrderType | String | 委託別(G=集保,C=融資,D=融券,%=沖資,^=沖券) |
| DayTrade | String | 現股當沖旗標(Y先買後賣,X先賣後買,無當沖填入空字串) |
| FIR | String | FIR(R=ROD,F=FOK,I=IOC) |
4.2 刪單格式:TDelOrderData
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| BkrNo | String | 分公司代碼 |
| AccNo | String | 七碼子帳號 |
| OrderID | String | 委託代碼 |
4.3 改單格式:TChgOrderData
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| BkrNo | String | 分公司代碼 |
| AccNo | String | 七碼子帳號 |
| OrderID | String | 委託代碼 |
| OrderPrice | String | 委託價 |
| OrderQty | String | 委託股數 |
註:改價於委託價格欄位填入新委託價、改量於委託股數欄位填入新的委託股數,且不要同時改量與改價
4.4 可交易帳號格式:TCommonAccData
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| BkrNo | String | 分公司代碼 |
| AccNo | String | 分公司代碼-七碼子帳號 |
| MAccNo | String | 分公司代碼-七碼母帳號 |
| AccNo7 | String | 七碼子帳號 |
| IsSub | String | 是否為母子帳 |
| CAStu | Boolean | 憑證狀態 |
| CAMsg | String | 憑證狀態訊息 |
4.5 回報格式:TReportData
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| OrderStatus | String | 2:委託成功 4: 改價成功(OrderVol委託量股數=0) / 減量成功(OrderVol委託量股數!=0) 6:已刪單 7:成交回報 11:錯誤回報 |
| ErrType | String | 錯誤委託類別 |
| NID | String | NID |
| OrderID | String | 委託單號 |
| Broker | String | 分公司代碼 |
| AccountNo7 | String | 七碼子帳號 |
| ProdID | String | 商品代碼 |
| BSC | String | 買賣別B/S |
| OrderVol | Integer | 委託量股數 |
| OrdWKPrice | decimal | 委託價 |
| OrderTime | String | 委託時間HHmmssfff |
| UserDefine | String | 自定資料 |
| OrgOType | String | 原始委託別(G=集保,C=融資,D=融券,%=沖資,^=沖券) |
| TseOType | String | 委託別(0集保;1代資;2代券;3自資;4自券;5借券;6避險套利借券) |
| OrgPriType | String | L現價;M市價 |
| DayTradeFlag | String | 現股當沖旗標(Y先買後賣,X先賣後買,無當沖填入空字串) |
| Message | String | 訊息or錯誤訊息 |
| SegMkt | String | 盤別(N整股F盤後L零股) |
| FIR | String | FIR(R=ROD,F=FOK,I=IOC) |
| ScBalance | String | 剩餘投資額度 |
| DealPrice | decimal | 成交價格 |
| OrderQty | Integer | 實際委託數量=成交數量+剩餘有效委託口數 |
| LeavesQty | Integer | 委託剩餘有效量 |
| CumQty | Integer | 已成交數量 |
| OriginalQty | Integer | 原委託數量(新單的委託數量) |
| DelQty | Integer | 刪單數量 |
4.6 期初庫存格式: TOpenBalRec
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| BkrNoAccNo | String | 七碼子帳 |
| Symbol | String | 股票代碼 |
| NorBalQty | String | 普通股庫存股數 |
| CrBalQty | String | 融資庫存股數 |
| DbBalQty | String | 融券庫存股數 |
| ZeroBalQty | String | 零股庫存股數 |
4.7 庫存彙總格式: TQryTotbal_RayinRec
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| BkrNoAccNo | String | 七碼子帳 |
| Symbol | String | 股票代碼 |
| NorBalQty | String | 普通股庫存股數 |
| CrBalQty | String | 融資庫存股數 |
| DbBalQty | String | 融券庫存股數 |
| ZeroBalQty | String | 零股庫存股數 |
4.8 或有券源格式: TSecInvQty
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| Symbol | String | 股票代碼 |
| SecInvQty | String | 總券源股數 |
| UsedQty | String | 已使用股數 |
| BkrNoAccNo | String | BkrNo-七碼子帳 |
| QryDateTime | String | 查詢時間 |
4.9 資券配額格式: TCrQtyAndDbQty
| 欄位名稱 | 格式 | 說明 |
|---|---|---|
| Symbol | String | 股票代碼 |
| IsCrStop | String | 是否停資(Y/N) |
| CrQty | String | 融資配額股數 |
| IsDbStop | String | 是否停券(Y/N) |
| DbQty | String | 融券配額股數 |
| CrRate | String | 資成數 |
| DbRate | String | 券成數 |
| CanShortUnderUnchanged | String | 平盤下是否可下券(Y/N) |
| DayTrade | String | X=可現股當沖;Y=僅可先買後賣沖;其他為不可現股當沖 |
| DayTradeCName | String | 當沖中文描述 |
| ResultStr | String | 資券配額查詢結果 |
| QryDateTime | String | 查詢時間 |
C#交易API實作說明
物件名稱:MasterTradeAPI:
API主要物件,負責API證券連線、交易、回報等行為
1. 連線
fMasterTradeAPI.Connect(tbx_LoginID.Text, pwbx_LoginPw.Password, euSrvKind, isForce);
Connect:建立連線
| 輸入/輸出 | 欄位名稱 | 格式 | 說明 |
|---|---|---|---|
| In | LoginID | String | 使用者名稱 |
| In | LoginPw | String | 使用者密碼 |
| In | euSrvKind | Enum |
TServerKind.Test:連線至驗證主機 TServerKind.SIM:連線至模擬競賽主機 |
| In | IsForce | String | 單一帳號認證成功即下單 |
2. 切斷連線
fMasterTradeAPI.Disconnect();
Disconnect:切斷連線
3. 下單
TNewOrderData newOrder = new TNewOrderData();
//交易時段(N普通,F盤後,L零股)
newOrder.ExCode = ( ( KeyValuePair ) cbx_NewOrd_ExCode.SelectedItem ).Key.ToString();
newOrder.BkrNo = (( TCommonAccData ) cbx_StockAcc.SelectedItem).BkrNo;//Broker
newOrder.AccNo = ( ( TCommonAccData ) cbx_StockAcc.SelectedItem ).AccNo7;//七碼子帳
//買賣別(B/S)
newOrder.BSType = ( ( KeyValuePair ) cbx_NewOrd_BSType.SelectedItem ).Key.ToString();
newOrder.ProdID = tbx_ProdID.Text;//商品代號
newOrder.MrtType = ( ( KeyValuePair ) cbx_NewOrd_MrtType.SelectedItem ).Key.ToString();//價格類別(L=限價,M=市價)
newOrder.OrderPrice = tbx_NewOrd_OrdPrice.Text;//委託價
newOrder.OrderQty = tbx_NewOrd_OrdQty.Text;//委託股數
newOrder.OrderType = ( ( KeyValuePair ) cbx_NewOrd_OrderType.SelectedItem ).Key.ToString();//委託別(G=集保,C=融資,D=融券,%=沖資,^=沖券)
newOrder.DayTrade = "";//現股當沖旗標(Y先買後賣,X先賣後買)
if ( chbx_NewOrd_DayTrade.IsChecked.Value==true)
{
if ( newOrder.BSType=="B")
newOrder.DayTrade="Y";//現股當沖旗標(Y先買後賣,X先賣後買)
else if(newOrder.BSType=="S")
newOrder.DayTrade = "X";//現股當沖旗標(Y先買後賣,X先賣後買)
}
newOrder.FIR = ( ( KeyValuePair ) cbx_NewOrd_FIR.SelectedItem ).Key.ToString();//FIR(R=ROD,F=FOK,I=IOC)
fMasterTradeAPI.SendNewOrder(newOrder);
SendNewOrder:新單
| 輸入/輸出 | 欄位名稱 | 格式 | 說明 |
|---|---|---|---|
| In | NewOrder | TNewOrderData | 新單格式 |
4. 刪單
TDelOrderData delOrder = new TDelOrderData();
delOrder.BkrNo = ( ( TCommonAccData ) cbx_StockAcc.SelectedItem ).BkrNo;//Broker
delOrder.AccNo = ( ( TCommonAccData ) cbx_StockAcc.SelectedItem ).AccNo7;//七碼子帳
delOrder.OrderID = tbx_Del_OrdNo.Text;//委託代碼
fMasterTradeAPI.SendDelOrder(delOrder);
SendDelOrder:刪單
| 輸入/輸出 | 欄位名稱 | 格式 | 說明 |
|---|---|---|---|
| In | DelOrder | TDelOrderData | 刪單格式 |
5. 改單
TChgOrderData chgOrder = new TChgOrderData();
chgOrder.BkrNo = ( ( TCommonAccData ) cbx_StockAcc.SelectedItem ).BkrNo;//Broker
chgOrder.AccNo = ( ( TCommonAccData ) cbx_StockAcc.SelectedItem ).AccNo7;//七碼子帳
chgOrder.OrderID = tbx_Chg_OrdNo.Text;//委託代碼
chgOrder.OrderPrice = tbx_ChgOrd_OrdPrice.Text;//委託價
chgOrder.OrderQty = tbx_Chg_OrdQty.Text;//委託股數
fMasterTradeAPI.SendChgOrder(chgOrder);
SendChgOrder:改單
| 輸入/輸出 | 欄位名稱 | 格式 | 說明 |
|---|---|---|---|
| In | ChgOrder | TChgOrderData | 改單格式 |
6. 查詢期初庫存
fMasterTradeAPI.QryOpenBal(string.Format("{0}-{1}", tmpAcc.BkrNo, tmpAcc.AccNo7));
QryOpenBal:查期初庫存
| 輸入/輸出 | 欄位名稱 | 格式 | 說明 |
|---|---|---|---|
| In | aBkrnoAndAccNo | string | 帳戶(母碼+子碼) |
7. 查詢庫存彙總
fMasterTradeAPI.QryTotbal_Rayin(string.Format("{0}-{1}", tmpAcc.BkrNo, tmpAcc.AccNo7));
QryTotbal_Rayin:查詢庫存彙總
| 輸入/輸出 | 欄位名稱 | 格式 | 說明 |
|---|---|---|---|
| In | aBkrnoAndAccNo | string | 帳戶(母碼+子碼) |
8. 查詢或有券源
fMasterTradeAPI.QrySecInvQty_Rayin(string.Format("{0}-{1}", tmpAcc.BkrNo, tmpAcc.AccNo7), sStkNo, out sErrMsg)
QrySecInvQty_Rayin:查詢或有券源
| 輸入/輸出 | 欄位名稱 | 格式 | 說明 |
|---|---|---|---|
| In | aBkrnoAndAccNo | string | 帳戶(母碼+子碼) |
| In | sStkNo | string | 商品代碼 |
| out | sErrMsg | string | 錯誤訊息 |
9. 查詢資券配額
fMasterTradeAPI.QryProdCrQty_Rayin(string.Format("{0}-{1}", tmpAcc.BkrNo, tmpAcc.AccNo7), sStkNo, out sErrMsg)
QryProdCrQty_Rayin:查詢資券配額
| 輸入/輸出 | 欄位名稱 | 格式 | 說明 |
|---|---|---|---|
| In | aBkrnoAndAccNo | string | 帳戶(母碼+子碼) |
| In | sStkNo | string | 商品代碼 |
| out | sErrMsg | string | 錯誤訊息 |