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=融券,%=沖資,^=沖券,5=券五,6=券六) |
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=融券,%=沖資,^=沖券,5=券五,6=券六) |
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=融券,%=沖資,^=沖券,5=券五,6=券六)
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 | 錯誤訊息 |