適用對象: 法人,主力,自營商,投顧,深口袋,多重帳號,空交所 系統架構簡介: 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 待續... |
茶餘飯後 >