[Add] OesGateway: 增加一些注释

This commit is contained in:
nanoric 2019-03-15 04:28:23 -04:00
parent ee307d6323
commit 0fd1901ada
2 changed files with 16 additions and 6 deletions

View File

@ -17,7 +17,14 @@ from .utils import config_template
class OesGateway(BaseGateway): class OesGateway(BaseGateway):
""" """
VN Trader Gateway for BitMEX connection. VN Trader Gateway for OES
Because the design of OES API, multiple gateway instance with a same account is currently
not supported.
running multiple gateway instance with the same account will make send_order and
cancel_order fail frequently, because:
* seq_index is not unique between instances
* value range of client_id is too small to create a unique hash for different client.
""" """
default_setting = { default_setting = {

View File

@ -202,10 +202,9 @@ class OesTdMessageLoop:
try: try:
i = self._td.get_order(data.clSeqNo) i = self._td.get_order(data.clSeqNo)
except KeyError: except KeyError:
# todo: maybe I should find a way to disable subscription of orders at startup return # rejected order created by others, don't need to care.
return
vt_order = i.vt_order
vt_order = i.vt_order
if vt_order == Status.ALLTRADED: if vt_order == Status.ALLTRADED:
return return
@ -222,8 +221,10 @@ class OesTdMessageLoop:
data = d.rptMsg.rptBody.ordInsertRsp data = d.rptMsg.rptBody.ordInsertRsp
if not data.origClSeqNo: if not data.origClSeqNo:
# normal order
i = self._td.get_order(data.clSeqNo) i = self._td.get_order(data.clSeqNo)
else: else:
# data.ordStatus == eOesOrdStatusT.OES_ORD_STATUS_CANCEL_DONE:
i = self._td.get_order(data.origClSeqNo) i = self._td.get_order(data.origClSeqNo)
vt_order = i.vt_order vt_order = i.vt_order
vt_order.status = STATUS_OES2VT[data.ordStatus] vt_order.status = STATUS_OES2VT[data.ordStatus]
@ -238,8 +239,10 @@ class OesTdMessageLoop:
data: OesOrdCnfmT = d.rptMsg.rptBody.ordCnfm data: OesOrdCnfmT = d.rptMsg.rptBody.ordCnfm
if not data.origClSeqNo: if not data.origClSeqNo:
# normal order
i = self._td.get_order(data.clSeqNo) i = self._td.get_order(data.clSeqNo)
else: else:
# data.ordStatus == eOesOrdStatusT.OES_ORD_STATUS_CANCEL_DONE:
i = self._td.get_order(data.origClSeqNo) i = self._td.get_order(data.origClSeqNo)
vt_order = i.vt_order vt_order = i.vt_order
@ -691,7 +694,7 @@ class OesTdApi:
i = self.get_order(data.clSeqNo) i = self.get_order(data.clSeqNo)
vt_order = i.vt_order vt_order = i.vt_order
vt_order.status = STATUS_OES2VT[data.ordStatus] vt_order.status = STATUS_OES2VT[data.ordStatus]
vt_order.volume = data.ordQty - data.canceledQty vt_order.volume = data.ordQty
vt_order.traded = data.cumQty vt_order.traded = data.cumQty
self.gateway.on_order(copy(vt_order)) self.gateway.on_order(copy(vt_order))
return 1 return 1
@ -717,7 +720,7 @@ class OesTdApi:
i = self.get_order(data.clSeqNo) i = self.get_order(data.clSeqNo)
vt_order = i.vt_order vt_order = i.vt_order
vt_order.status = STATUS_OES2VT[data.ordStatus] vt_order.status = STATUS_OES2VT[data.ordStatus]
vt_order.volume = data.ordQty - data.canceledQty vt_order.volume = data.ordQty
vt_order.traded = data.cumQty vt_order.traded = data.cumQty
self.gateway.on_order(copy(vt_order)) self.gateway.on_order(copy(vt_order))
except KeyError: except KeyError: