配資交易通路系統

適用對象: 法人,主力,自營商,投顧,深口袋,多重帳號,空交所

系統架構簡介:

AppID : 應用程式連線識別,每個連線應用須有一個唯一的應用代碼

TSID : 每台交易主機(Trade Server)有一個唯一的識別代碼

Channel : 每一個交易通路賦予一個唯一的頻道代碼

ActID : 每一個委託由 App 建立一個唯一的溝通代碼

App 透過 AppID 與 GateWay 建立連線

Request:

App ==(ActID,Channel)==> GateWay ==(ActID)==> Trader Server

GateWay 收到 App 訊息, 將 AppID 與 ActID 建立對應關係

經由 GateWay 上的 Channel 與 TSID 所設定的對應關係,

透過 ActID 將 App 的 Request 轉送到該Channel所對應 TSID 代表的 Trader Server 上處理

Trader Server 依據其上設定的 Channel 與交易方式設定(Broker,Account,....) 進行處理

Response:

App <==(ActID)== GateWay <==(ActID)== Trader Server

Trader Server 透過 ActID 回應或發送訊息

GateWay 依據先前記憶的 ActID 與 AppID 對應關係,將訊息正確轉送回對應的 App 連線中

Trader Server 上則設置各 Channel 與實際交易主機之對應以及使用之帳號與密碼與所有必須的下單資訊對應

基本上每一種具體存在的交易系統開發一對應的 Trader Server 作為對應,

Trader Server 上儘可能可以進行多重帳號多重主機作多重 Channel 之對應,若受限於來源API或負載問題則可以透過分流方式來建置

Trader Server 上的 Channel 設計,可以設計含入策略或分配原則,進行更有效率之交易處理

以下於系統中的 Trader Server 都會改稱 Allot Trade Server ( ATS ), 而 Gateway 則稱 Allot Trade Gateway ( ATG )

ATG 上設立有 Channel 與 ATS 通路的對應關係,

由 App 收到 ActID 則須建立 ActID 與 AppID 對應關係,作為訊息回應之依據

依據 App 指示之 Channel 找出對應的 ATS 對應,透過 ActID 將交易訊息轉交該 ATS 處理

收到 ATS 之回應則須建立 ActID 與實際交易發生之關係資訊(如broker,session,order number,exchange,product..等)建立對應,作為取消時之依據

ATG 實際只回應 App 所須之必要交易訊息, App 可於委託成功後隨時以相同的 ActID 進行取消

成交回報訊息同樣依據 ActID 即時轉發 App 所須必要之交易訊息

App 交易訊息只須透過 ActID 與指定 Channel 透過 ATG 即可正確委託或取消

每一個 ATS 必須能一對多(針對一個Gateway的連線需求對應多主機,多帳號,相同的後端交易系統)

每一個 ATG 必須能一對多(針對一個AP的連線需求對應多個 ATS, 相同或相異的後端交易系統)

而 ATS 提供 Trade API 則必須要能一碼通到底, Channel相當於IP網路中的Target IP決定委託的目的ATS

ATS for FTDC

由於來源API為簡體系統,系統亦提供簡體文字切換以便於透過訊息作問題判斷或排除

透過 Channel Mapping List 可以快速了解各具體交易連線狀態

例1:

FTDC API於此錯誤訊息下不會自動Recover

例2:

Channel 8802 為 帳號 87607 並未於 htqh-md3.... 的主機上開通, 所以登入失敗

每個 Channel 代表可以進行交易的通路

cpOrderRefNimber 也就是 ActID 要被代入的地方

Status/Cmd:

0 : App ==> Channel

Create Order

0 : App <== Channel

Create Order Result (0: faild! , 1: success , 2: Disabled{目前無法交易} , 3: UnMapping{系統未配置的頻道})

1 : App <== Channel

Order Result (0: faild! , 1: insert)

1 : App ==> Channel

Querry Order Result

2 : App <== Channel

Trade Order Report (0: trading , 1:AllTraded , 2:Canceled , 3:NotQueueing , 4:Trade Report)

2 : App ==> Channel

Querry Trade Order Report

3 : App ==> Channel

Delete Order

3 : App <== Channel

Order Finish

70 ('F') : App <==> Channel

FIX Protocol Message Routing

由系統處理StandardHeader(8,9)與StandardTrailer(93,89,10)

67 ('C') : App <== Channel

Channel Status Notify ( 79('O'): online, 88('X'): offline, 45('-'): disconnect)

狀態說明

'O': online - 該Channel於頂端ATS中處於可交易之狀態

'X': offline - 該Channel於頂端ATS中處於不可交易之狀態

'-': disconnect - 該Channel於連線通路中,某個ATG結點對應連線為斷線狀態

Ex1:

App ==(0)==> Channel

App <==(1)== Channel

App <==(2)== Channel

App <==(3)== Channel

Ex2:

App ==(0)==> Channel

App <==(1)== Channel

App <==(2)== Channel

App <==(2)== Channel

App ==(3)==> Channel

App <==(3)== Channel

Ex3:

App ==(0)==> Channel

App <==(1)== Channel

App ==(3)==> Channel

App <==(3)== Channel

Ex4:

App ==(0)==> Channel

App <==(1)== Channel

App ==(1)==> Channel

App <==(1)== Channel

App ==(3)==> Channel

App <==(3)== Channel

Ex5:

App ==('F')==> Channel

App <==('F')== Channel

通路模型說明: Allot Trade Gateway

最簡單的API操作,下單0時差: Allot Trade System Client API

ATS Trade Server for FTDC - ATS_Ftdc

待續...