Gateway幾個問題
張貼日期:Dec 19, 2010 1:40:49 PM
問題
目前Gateway大致上運作順暢...
有幾個問題想請教...
Gateway上為啥要用 MAP 8801=6600來對應呢???這是比較想不懂的
另外...Server上 O X F 這三個按鈕是做什麼的???我好像按了之後單子就送不出去了...
最後一個...單子送到Gateway之後...訊息也送回來告訴我說單子在Gateway已收到了...
但這時的Server是掛掉的...也就是說單子在Gateway上...但沒有Server可以幫他把單子轉送出去...
要是我把Server重開...那這張單會在連接上的時候立刻轉送出去嗎???
1.
Gateway上用 MAP 8801=6600 只是示範,可以依自己的概念作設計
6600是代表一個主機HOST可以是Trader Server或GateWay,
於你所看到的設定中,是於MAP之前透過 ADD 6600=127.0.0.1:22820 作編號給予代碼6600表示主機 127.0.0.1:22820
而8801是指一個Channel的交易通路, MAP 8801=6600 代表所有下單到通路 8801 Channel 的單會被送往 127.0.0.1:22820
GateWay上可以設定多台下單Server主機HOST(或GateWay),可以一一透過 ADD 給一個編號作代碼
而各通路Channel實際路由主機或GateWay則透過MAP給予指示
例如
ADD 6600=127.0.0.1:22820
ADD 6601=test1.trader.com.tw:33388
ADD 4567=test2.trader.com.tw:33388
ADD 8801=test3.trader.com.tw:33388
MAP 8801=6600
MAP 8802=6600
MAP 8803=6600
MAP 6601=6601
MAP 6602=4567
MAP 6603=8801
以上代表
通路Channel 8801,8802,8803的單皆會被下至 127.0.0.1:22820
通路Channel 6601 的單會被下至 test1.trader.com.tw:33388
通路Channel 6602 的單會被下至 test2.trader.com.tw:33388
通路Channel 6603 的單會被下至 test3.trader.com.tw:33388
MAP時的Channel編號與ADD時的主機編號是兩回事,
上面故意作有重複的示範供參考思考
而如果某個HOST例如 test2.trader.com.tw:33388 其實又是個GateWay
則再依該GateWay上設定之原則作通路轉送
2.
Server上的 O X F 基本上是不需要用的,也不會造成單子送不出去(請再確認)
O 可以讓視窗立即更新(原本每秒自動會刷新)
F 是字體環境切換,原本會顯示簡體字,按了變成繁體環境則會看到亂碼,再按就又恢復簡體
X 完全沒用
3.
所有單下出去只要沒收到Inser成功就是失敗
Status=0只是在告知通路的運作情形
Status=1才是告知下單是否成功
所有通路正常下一定會收到Status=1的結果
而如果通路中間有某個GateWay或最末端的Trader Server是掛掉的
會於Status=0的狀態下即會告知失敗
不會有任何單是卡在GateWay或TraderServer上的而是直接回覆失敗!!
(訊息也如之前所提, Result=0: faild! , 1: success , 2: Disabled{目前無法交易} , 3: UnMapping{系統未配置的頻道} )
你說Server掛掉,應該會收到Status=0,Result=2
請麻煩再確認一下,可以的話把逐筆接收到之訊息Log附上
(以上,代表不會有卡單問題,也沒有系統重開重送單的問題,只有AP收到失敗的處理方式而已)
問題
非常清楚...感謝...
那問題來了...
當我下命令 Console 8801 330001 "IF1012|B3700" 時
Console.exe 這個檔怎麼知道要去哪邊找Gateway的service呢...
也就是說...Console怎麼知道要把單子送到哪台電腦的Gateway去???
因為我看Console那邊只有一個dll檔...所以是不是被你包在裡面了呢...
如果是的話那就這樣...也無所謂...我只是確定以後這隻程式需不需要自己maintain而已...
Console只是一個使用dll的範例程式
http://site.edu.wwx.tw/ftw/Home/pei-zi-jiao-yi-tong-lu-xi-tong/atsc-api
透過API可以指定直接連結ATS或連ATG
此Console範例是
if (fnATSCdll_Start("localhost:22821"))
所以是連 127.0.0.1 的GateWay
因此同一機器上所跑的GateWay怎麼設就怎麼送
實際上AP設計就是透過API來操作
(Console只是示範API的用法而已)
當然也可以把GateWay的設定改成放在ini檔中便於改設定, 程式則改由ini檔讀入,
如果有需要也可增加命令列參數是可以指定GateWay的格式方式...
也就是參考這隻Console程式可以自行開發任意需求的應用程式,不限開發工具,
未必要以命令列方式來應用, 也是能設計成有GUI介面操作的視窗軟體(例如像是IB提供的測試工具)
PS: 參考於Python上使用DLL裡的API呼叫範例, 只要有好用的dll, 外行人也都能輕鬆開發自己合用的專屬應用程式