Attempt to handle existing order updates with ib backend
parent
a1a1dec885
commit
2cabe1831c
|
@ -440,11 +440,19 @@ class Client:
|
|||
# async to be consistent for the client proxy, and cuz why not.
|
||||
async def submit_limit(
|
||||
self,
|
||||
oid: str, # XXX: see return value
|
||||
# ignored since ib doesn't support defining your
|
||||
# own order id
|
||||
oid: str,
|
||||
symbol: str,
|
||||
price: float,
|
||||
action: str,
|
||||
size: int,
|
||||
|
||||
# XXX: by default 0 tells ``ib_insync`` methods that there is no
|
||||
# existing order so ask the client to create a new one (which
|
||||
# it seems to do by allocating an int counter - collision
|
||||
# prone..)
|
||||
brid: int = None,
|
||||
) -> int:
|
||||
"""Place an order and return integer request id provided by client.
|
||||
|
||||
|
@ -460,7 +468,7 @@ class Client:
|
|||
trade = self.ib.placeOrder(
|
||||
contract,
|
||||
Order(
|
||||
# orderId=oid, # stupid api devs..
|
||||
orderId=brid or 0, # stupid api devs..
|
||||
action=action.upper(), # BUY/SELL
|
||||
orderType='LMT',
|
||||
lmtPrice=price,
|
||||
|
@ -1226,6 +1234,9 @@ async def stream_trades(
|
|||
# it's a trade event generated by TWS usage.
|
||||
log.warning(f"TWS triggered trade:\n{pformat(msg)}")
|
||||
|
||||
msg['reqid'] = 'tws-' + msg['reqid']
|
||||
msg['reqid'] = 'tws-' + str(-1 * msg['reqid'])
|
||||
|
||||
yield {'remote_trades': (event_name, msg)}
|
||||
continue
|
||||
|
||||
yield {'local_trades': (event_name, msg)}
|
||||
|
|
Loading…
Reference in New Issue