Drop remaining `BaseModel` api usage from rest of codebase
parent
b44e2d9ed9
commit
2a99f7a4d7
|
@ -148,7 +148,7 @@ async def handle_order_requests(
|
|||
oid=request_msg['oid'],
|
||||
symbol=request_msg['symbol'],
|
||||
reason=f'No account found: `{account}` ?',
|
||||
).dict())
|
||||
))
|
||||
continue
|
||||
|
||||
client = _accounts2clients.get(account)
|
||||
|
@ -161,7 +161,7 @@ async def handle_order_requests(
|
|||
oid=request_msg['oid'],
|
||||
symbol=request_msg['symbol'],
|
||||
reason=f'No api client loaded for account: `{account}` ?',
|
||||
).dict())
|
||||
))
|
||||
continue
|
||||
|
||||
if action in {'buy', 'sell'}:
|
||||
|
@ -188,7 +188,7 @@ async def handle_order_requests(
|
|||
oid=request_msg['oid'],
|
||||
symbol=request_msg['symbol'],
|
||||
reason='Order already active?',
|
||||
).dict())
|
||||
))
|
||||
|
||||
# deliver ack that order has been submitted to broker routing
|
||||
await ems_order_stream.send(
|
||||
|
@ -197,9 +197,8 @@ async def handle_order_requests(
|
|||
oid=order.oid,
|
||||
# broker specific request id
|
||||
reqid=reqid,
|
||||
time_ns=time.time_ns(),
|
||||
account=account,
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
|
||||
elif action == 'cancel':
|
||||
|
@ -559,7 +558,7 @@ async def trades_dialogue(
|
|||
cids2pps,
|
||||
validate=True,
|
||||
)
|
||||
all_positions.extend(msg.dict() for msg in msgs)
|
||||
all_positions.extend(msg for msg in msgs)
|
||||
|
||||
if not all_positions and cids2pps:
|
||||
raise RuntimeError(
|
||||
|
@ -665,7 +664,7 @@ async def emit_pp_update(
|
|||
msg = msgs[0]
|
||||
break
|
||||
|
||||
await ems_stream.send(msg.dict())
|
||||
await ems_stream.send(msg)
|
||||
|
||||
|
||||
async def deliver_trade_events(
|
||||
|
@ -743,7 +742,7 @@ async def deliver_trade_events(
|
|||
|
||||
broker_details={'name': 'ib'},
|
||||
)
|
||||
await ems_stream.send(msg.dict())
|
||||
await ems_stream.send(msg)
|
||||
|
||||
case 'fill':
|
||||
|
||||
|
@ -803,7 +802,7 @@ async def deliver_trade_events(
|
|||
broker_time=trade_entry['broker_time'],
|
||||
|
||||
)
|
||||
await ems_stream.send(msg.dict())
|
||||
await ems_stream.send(msg)
|
||||
|
||||
# 2 cases:
|
||||
# - fill comes first or
|
||||
|
@ -879,7 +878,7 @@ async def deliver_trade_events(
|
|||
cid, msg = pack_position(item)
|
||||
# acctid = msg.account = accounts_def.inverse[msg.account]
|
||||
# cuck ib and it's shitty fifo sys for pps!
|
||||
# await ems_stream.send(msg.dict())
|
||||
# await ems_stream.send(msg)
|
||||
|
||||
case 'event':
|
||||
|
||||
|
@ -891,7 +890,7 @@ async def deliver_trade_events(
|
|||
# level...
|
||||
# reqid = item.get('reqid', 0)
|
||||
# if getattr(msg, 'reqid', 0) < -1:
|
||||
# log.info(f"TWS triggered trade\n{pformat(msg.dict())}")
|
||||
# log.info(f"TWS triggered trade\n{pformat(msg)}")
|
||||
|
||||
# msg.reqid = 'tws-' + str(-1 * reqid)
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ from piker.clearing._messages import (
|
|||
BrokerdPosition,
|
||||
BrokerdStatus,
|
||||
)
|
||||
from pikerd.data.types import Struct
|
||||
from piker.data.types import Struct
|
||||
from . import log
|
||||
from .api import (
|
||||
Client,
|
||||
|
@ -110,7 +110,7 @@ async def handle_order_requests(
|
|||
'https://github.com/pikers/piker/issues/299'
|
||||
),
|
||||
|
||||
).dict())
|
||||
))
|
||||
continue
|
||||
|
||||
# validate
|
||||
|
@ -136,7 +136,7 @@ async def handle_order_requests(
|
|||
symbol=order.symbol,
|
||||
reason="Failed order submission",
|
||||
broker_details=resp
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
else:
|
||||
# TODO: handle multiple orders (cancels?)
|
||||
|
@ -161,7 +161,7 @@ async def handle_order_requests(
|
|||
# account the made the order
|
||||
account=order.account
|
||||
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
|
||||
elif action == 'cancel':
|
||||
|
@ -189,7 +189,7 @@ async def handle_order_requests(
|
|||
symbol=msg.symbol,
|
||||
reason="Failed order cancel",
|
||||
broker_details=resp
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
|
||||
if not error:
|
||||
|
@ -217,7 +217,7 @@ async def handle_order_requests(
|
|||
# cancels will eventually get cancelled
|
||||
reason="Order cancel is still pending?",
|
||||
broker_details=resp
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
|
||||
else: # order cancel success case.
|
||||
|
@ -230,7 +230,7 @@ async def handle_order_requests(
|
|||
status='cancelled',
|
||||
reason='Order cancelled',
|
||||
broker_details={'name': 'kraken'}
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
else:
|
||||
log.error(f'Unknown order command: {request_msg}')
|
||||
|
@ -330,7 +330,7 @@ async def trades_dialogue(
|
|||
avg_price=p.be_price,
|
||||
currency='',
|
||||
)
|
||||
position_msgs.append(msg.dict())
|
||||
position_msgs.append(msg)
|
||||
|
||||
await ctx.started(
|
||||
(position_msgs, [acc_name])
|
||||
|
@ -408,7 +408,7 @@ async def trades_dialogue(
|
|||
broker_details={'name': 'kraken'},
|
||||
broker_time=broker_time
|
||||
)
|
||||
await ems_stream.send(fill_msg.dict())
|
||||
await ems_stream.send(fill_msg)
|
||||
|
||||
filled_msg = BrokerdStatus(
|
||||
reqid=reqid,
|
||||
|
@ -432,7 +432,7 @@ async def trades_dialogue(
|
|||
# https://github.com/pikers/piker/issues/296
|
||||
remaining=0,
|
||||
)
|
||||
await ems_stream.send(filled_msg.dict())
|
||||
await ems_stream.send(filled_msg)
|
||||
|
||||
# update ledger and position tracking
|
||||
trans = await update_ledger(acctid, trades)
|
||||
|
@ -469,7 +469,7 @@ async def trades_dialogue(
|
|||
# TODO
|
||||
# currency=''
|
||||
)
|
||||
await ems_stream.send(pp_msg.dict())
|
||||
await ems_stream.send(pp_msg)
|
||||
|
||||
case [
|
||||
trades_msgs,
|
||||
|
|
|
@ -58,11 +58,11 @@ class OrderBook:
|
|||
|
||||
def send(
|
||||
self,
|
||||
msg: Order,
|
||||
msg: Order | dict,
|
||||
|
||||
) -> dict:
|
||||
self._sent_orders[msg.oid] = msg
|
||||
self._to_ems.send_nowait(msg.dict())
|
||||
self._to_ems.send_nowait(msg)
|
||||
return msg
|
||||
|
||||
def update(
|
||||
|
@ -73,9 +73,8 @@ class OrderBook:
|
|||
|
||||
) -> dict:
|
||||
cmd = self._sent_orders[uuid]
|
||||
msg = cmd.dict()
|
||||
msg.update(data)
|
||||
self._sent_orders[uuid] = Order(**msg)
|
||||
msg = cmd.copy(update=data)
|
||||
self._sent_orders[uuid] = msg
|
||||
self._to_ems.send_nowait(msg)
|
||||
return cmd
|
||||
|
||||
|
@ -88,7 +87,7 @@ class OrderBook:
|
|||
oid=uuid,
|
||||
symbol=cmd.symbol,
|
||||
)
|
||||
self._to_ems.send_nowait(msg.dict())
|
||||
self._to_ems.send_nowait(msg)
|
||||
|
||||
|
||||
_orders: OrderBook = None
|
||||
|
@ -149,7 +148,7 @@ async def relay_order_cmds_from_sync_code(
|
|||
book = get_orders()
|
||||
async with book._from_order_book.subscribe() as orders_stream:
|
||||
async for cmd in orders_stream:
|
||||
if cmd['symbol'] == symbol_key:
|
||||
if cmd.symbol == symbol_key:
|
||||
log.info(f'Send order cmd:\n{pformat(cmd)}')
|
||||
# send msg over IPC / wire
|
||||
await to_ems_stream.send(cmd)
|
||||
|
|
|
@ -231,7 +231,7 @@ async def clear_dark_triggers(
|
|||
price=submit_price,
|
||||
size=cmd['size'],
|
||||
)
|
||||
await brokerd_orders_stream.send(msg.dict())
|
||||
await brokerd_orders_stream.send(msg)
|
||||
|
||||
# mark this entry as having sent an order
|
||||
# request. the entry will be replaced once the
|
||||
|
@ -247,14 +247,11 @@ async def clear_dark_triggers(
|
|||
|
||||
msg = Status(
|
||||
oid=oid, # ems order id
|
||||
resp=resp,
|
||||
time_ns=time.time_ns(),
|
||||
symbol=fqsn,
|
||||
resp=resp,
|
||||
trigger_price=price,
|
||||
broker_details={'name': broker},
|
||||
cmd=cmd, # original request message
|
||||
|
||||
).dict()
|
||||
brokerd_msg=cmd,
|
||||
)
|
||||
|
||||
# remove exec-condition from set
|
||||
log.info(f'removing pred for {oid}')
|
||||
|
@ -577,11 +574,11 @@ async def translate_and_relay_brokerd_events(
|
|||
|
||||
if name == 'position':
|
||||
|
||||
pos_msg = BrokerdPosition(**brokerd_msg).dict()
|
||||
pos_msg = BrokerdPosition(**brokerd_msg)
|
||||
|
||||
# XXX: this will be useful for automatic strats yah?
|
||||
# keep pps per account up to date locally in ``emsd`` mem
|
||||
sym, broker = pos_msg['symbol'], pos_msg['broker']
|
||||
sym, broker = pos_msg.symbol, pos_msg.broker
|
||||
|
||||
relay.positions.setdefault(
|
||||
# NOTE: translate to a FQSN!
|
||||
|
@ -672,7 +669,7 @@ async def translate_and_relay_brokerd_events(
|
|||
entry.reqid = reqid
|
||||
|
||||
# tell broker to cancel immediately
|
||||
await brokerd_trades_stream.send(entry.dict())
|
||||
await brokerd_trades_stream.send(entry)
|
||||
|
||||
# - the order is now active and will be mirrored in
|
||||
# our book -> registered as live flow
|
||||
|
@ -712,7 +709,7 @@ async def translate_and_relay_brokerd_events(
|
|||
# if 10147 in message: cancel
|
||||
|
||||
resp = 'broker_errored'
|
||||
broker_details = msg.dict()
|
||||
broker_details = msg
|
||||
|
||||
# don't relay message to order requester client
|
||||
# continue
|
||||
|
@ -747,7 +744,7 @@ async def translate_and_relay_brokerd_events(
|
|||
resp = 'broker_' + msg.status
|
||||
|
||||
# pass the BrokerdStatus msg inside the broker details field
|
||||
broker_details = msg.dict()
|
||||
broker_details = msg
|
||||
|
||||
elif name in (
|
||||
'fill',
|
||||
|
@ -756,7 +753,7 @@ async def translate_and_relay_brokerd_events(
|
|||
|
||||
# proxy through the "fill" result(s)
|
||||
resp = 'broker_filled'
|
||||
broker_details = msg.dict()
|
||||
broker_details = msg
|
||||
|
||||
log.info(f'\nFill for {oid} cleared with:\n{pformat(resp)}')
|
||||
|
||||
|
@ -774,7 +771,7 @@ async def translate_and_relay_brokerd_events(
|
|||
time_ns=time.time_ns(),
|
||||
broker_reqid=reqid,
|
||||
brokerd_msg=broker_details,
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
except KeyError:
|
||||
log.error(
|
||||
|
@ -846,7 +843,7 @@ async def process_client_order_cmds(
|
|||
f'Submitting cancel for live order {reqid}'
|
||||
)
|
||||
|
||||
await brokerd_order_stream.send(msg.dict())
|
||||
await brokerd_order_stream.send(msg)
|
||||
|
||||
else:
|
||||
# this might be a cancel for an order that hasn't been
|
||||
|
@ -868,7 +865,7 @@ async def process_client_order_cmds(
|
|||
resp='dark_cancelled',
|
||||
oid=oid,
|
||||
time_ns=time.time_ns(),
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
# de-register this client dialogue
|
||||
router.dialogues.pop(oid)
|
||||
|
@ -923,7 +920,7 @@ async def process_client_order_cmds(
|
|||
# handle relaying the ems side responses back to
|
||||
# the client/cmd sender from this request
|
||||
log.info(f'Sending live order to {broker}:\n{pformat(msg)}')
|
||||
await brokerd_order_stream.send(msg.dict())
|
||||
await brokerd_order_stream.send(msg)
|
||||
|
||||
# an immediate response should be ``BrokerdOrderAck``
|
||||
# with ems order id from the ``trades_dialogue()``
|
||||
|
@ -1003,7 +1000,7 @@ async def process_client_order_cmds(
|
|||
resp=resp,
|
||||
oid=oid,
|
||||
time_ns=time.time_ns(),
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -117,7 +117,7 @@ class PaperBoi:
|
|||
reason='paper_trigger',
|
||||
remaining=size,
|
||||
)
|
||||
await self.ems_trades_stream.send(msg.dict())
|
||||
await self.ems_trades_stream.send(msg)
|
||||
|
||||
# if we're already a clearing price simulate an immediate fill
|
||||
if (
|
||||
|
@ -173,7 +173,7 @@ class PaperBoi:
|
|||
broker=self.broker,
|
||||
time_ns=time.time_ns(),
|
||||
)
|
||||
await self.ems_trades_stream.send(msg.dict())
|
||||
await self.ems_trades_stream.send(msg)
|
||||
|
||||
async def fake_fill(
|
||||
self,
|
||||
|
@ -216,7 +216,7 @@ class PaperBoi:
|
|||
'name': self.broker + '_paper',
|
||||
},
|
||||
)
|
||||
await self.ems_trades_stream.send(msg.dict())
|
||||
await self.ems_trades_stream.send(msg)
|
||||
|
||||
if order_complete:
|
||||
|
||||
|
@ -240,7 +240,7 @@ class PaperBoi:
|
|||
'name': self.broker,
|
||||
},
|
||||
)
|
||||
await self.ems_trades_stream.send(msg.dict())
|
||||
await self.ems_trades_stream.send(msg)
|
||||
|
||||
# lookup any existing position
|
||||
token = f'{symbol}.{self.broker}'
|
||||
|
@ -268,7 +268,7 @@ class PaperBoi:
|
|||
)
|
||||
pp_msg.size, pp_msg.avg_price = pp.lifo_update(size, price)
|
||||
|
||||
await self.ems_trades_stream.send(pp_msg.dict())
|
||||
await self.ems_trades_stream.send(pp_msg)
|
||||
|
||||
|
||||
async def simulate_fills(
|
||||
|
@ -384,7 +384,7 @@ async def handle_order_requests(
|
|||
oid=request_msg['oid'],
|
||||
symbol=request_msg['symbol'],
|
||||
reason=f'Paper only. No account found: `{account}` ?',
|
||||
).dict())
|
||||
))
|
||||
continue
|
||||
|
||||
# validate
|
||||
|
@ -416,7 +416,7 @@ async def handle_order_requests(
|
|||
# broker specific request id
|
||||
reqid=reqid,
|
||||
|
||||
).dict()
|
||||
)
|
||||
)
|
||||
|
||||
elif action == 'cancel':
|
||||
|
|
|
@ -264,7 +264,8 @@ class OrderMode:
|
|||
self,
|
||||
|
||||
) -> OrderDialog:
|
||||
'''Send execution order to EMS return a level line to
|
||||
'''
|
||||
Send execution order to EMS return a level line to
|
||||
represent the order on a chart.
|
||||
|
||||
'''
|
||||
|
@ -273,13 +274,9 @@ class OrderMode:
|
|||
oid = str(uuid.uuid4())
|
||||
|
||||
# format order data for ems
|
||||
fqsn = symbol.front_fqsn()
|
||||
order = staged.copy(
|
||||
update={
|
||||
'symbol': fqsn,
|
||||
'oid': oid,
|
||||
}
|
||||
)
|
||||
order = staged.copy()
|
||||
order.oid = oid
|
||||
order.symbol = symbol.front_fqsn()
|
||||
|
||||
line = self.line_from_order(
|
||||
order,
|
||||
|
|
Loading…
Reference in New Issue