Always cast ems `requid` values to `int`
parent
71cca4ceda
commit
334f512ad3
|
@ -42,7 +42,6 @@ from ib_insync.contract import (
|
|||
from ib_insync.order import (
|
||||
Trade,
|
||||
OrderStatus,
|
||||
Order,
|
||||
)
|
||||
from ib_insync.objects import (
|
||||
Fill,
|
||||
|
@ -124,7 +123,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}` ?',
|
||||
|
@ -148,6 +148,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,
|
||||
|
@ -156,12 +164,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(
|
||||
|
@ -183,7 +186,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}')
|
||||
|
@ -493,8 +496,9 @@ async def trades_dialogue(
|
|||
filled=0,
|
||||
reason='Existing live order',
|
||||
|
||||
# this seems to not be necessarily up to date in the
|
||||
# execDetails event.. so we have to send it here I guess?
|
||||
# this seems to not be necessarily up to date in
|
||||
# the execDetails event.. so we have to send it
|
||||
# here I guess?
|
||||
remaining=quant,
|
||||
broker_details={
|
||||
'name': 'ib',
|
||||
|
|
Loading…
Reference in New Issue