Always cast ems `requid` values to `int`

open_order_loading
Tyler Goodlet 2022-08-05 17:07:50 -04:00
parent 016b669d63
commit 1510383738
1 changed files with 15 additions and 12 deletions

View File

@ -41,7 +41,6 @@ from ib_insync.contract import (
from ib_insync.order import (
Trade,
OrderStatus,
Order,
)
from ib_insync.objects import (
Fill,
@ -123,7 +122,8 @@ async def handle_order_requests(
f'An IB account number for name {account} is not found?\n'
'Make sure you have all TWS and GW instances running.'
)
await ems_order_stream.send(BrokerdError(
await ems_order_stream.send(
BrokerdError(
oid=request_msg['oid'],
symbol=request_msg['symbol'],
reason=f'No account found: `{account}` ?',
@ -147,6 +147,14 @@ async def handle_order_requests(
# validate
order = BrokerdOrder(**request_msg)
# 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..)
reqid = order.reqid
if reqid is not None:
reqid = int(reqid)
# call our client api to submit the order
reqid = client.submit_limit(
oid=order.oid,
@ -155,12 +163,7 @@ async def handle_order_requests(
action=order.action,
size=order.size,
account=acct_number,
# 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..)
reqid=order.reqid,
reqid=reqid,
)
if reqid is None:
await ems_order_stream.send(BrokerdError(
@ -182,7 +185,7 @@ async def handle_order_requests(
elif action == 'cancel':
msg = BrokerdCancel(**request_msg)
client.submit_cancel(reqid=msg.reqid)
client.submit_cancel(reqid=int(msg.reqid))
else:
log.error(f'Unknown order command: {request_msg}')