C#交易API使用手冊

C#交易API流程說明

API驗證流程

STEP1

請先下載API元件,並使用您的程式登入元富API,登入測試環境。

STEP2

ROD下單、改單、刪單(依照數位API網站線上驗證下單內容,於您的程式進行委託下單)。

STEP3

IOC下單(依照數位API網站線上驗證下單內容,於您的程式進行委託下單)。

STEP4

FOK下單(依照數位API網站線上驗證下單內容,於您的程式進行委託下單)。

STEP5

下單完成後,於數位API網站線上驗證頁面輸入委託書號。

STEP6

以上3.4.5步驟均填入委託書號後,於數位API網站線上驗證頁面點選"驗證"。

STEP7

驗證成功後及驗證完成,須待人員審核,請稍待審核流程,方能開通權限。

關聯網站

C#交易API範例程式說明

1. 系統需求

  • .Net Framwork 4.0

  • Visual Studio 2010

2. 執行Sample

Docs UI Kit
1

選擇連線至"測試主機",先確認能夠正常使用

2

輸入身分證字號、密碼後,登入帳號

3

填入股票代號、委託股價、委託股數,按下下單

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 錯誤訊息