From f7f76137ca56875d2155581e4ade7addfb05ba14 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 22 Jun 2023 15:28:20 -0400 Subject: [PATCH] kraken: handle `.spot.kraken` new-style FQMEs After #520 we've moved to better supporting explicit venues for cex backends which is important where a provider offers both spot and derivatives markets (kraken, binance, kucoin) and we need to distinguish which is being traded given a common asset pair (eg. BTC/USDT). So, make this work for `kraken`'s brokerd such that requests and pre-existing live order are (un)packed to/from EMS messaging form. --- piker/brokers/kraken/broker.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/piker/brokers/kraken/broker.py b/piker/brokers/kraken/broker.py index 3d08f92b..7cb59672 100644 --- a/piker/brokers/kraken/broker.py +++ b/piker/brokers/kraken/broker.py @@ -136,10 +136,8 @@ async def handle_order_requests( and deliver acks or errors. ''' - # XXX: UGH, let's unify this.. with ``msgspec``. - msg: dict[str, Any] - order: BrokerdOrder - + # XXX: UGH, let's unify this.. with ``msgspec``!!! + msg: dict | Order async for msg in ems_order_stream: log.info(f'Rx order msg:\n{pformat(msg)}') match msg: @@ -227,7 +225,7 @@ async def handle_order_requests( # XXX strip any . token which should # ONLY ever be '.spot' rn, until we support # futes. - bs_fqme: str = order.symbol.rstrip('.spot') + bs_fqme: str = order.symbol.replace('.spot', '') psym: str = bs_fqme.upper() pair: str = f'{psym[:3]}/{psym[3:]}' @@ -891,7 +889,7 @@ async def handle_order_updates( ids.inverse.get(reqid) is None ): # parse out existing live order - fqme = pair.replace('/', '').lower() + fqme = pair.replace('/', '').lower() + '.spot' price = float(price) size = float(vol)