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.basic_buy_bot
							parent
							
								
									3fcf44aa52
								
							
						
					
					
						commit
						f7f76137ca
					
				| 
						 | 
					@ -136,10 +136,8 @@ async def handle_order_requests(
 | 
				
			||||||
    and deliver acks or errors.
 | 
					    and deliver acks or errors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    # XXX: UGH, let's unify this.. with ``msgspec``.
 | 
					    # XXX: UGH, let's unify this.. with ``msgspec``!!!
 | 
				
			||||||
    msg: dict[str, Any]
 | 
					    msg: dict | Order
 | 
				
			||||||
    order: BrokerdOrder
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    async for msg in ems_order_stream:
 | 
					    async for msg in ems_order_stream:
 | 
				
			||||||
        log.info(f'Rx order msg:\n{pformat(msg)}')
 | 
					        log.info(f'Rx order msg:\n{pformat(msg)}')
 | 
				
			||||||
        match msg:
 | 
					        match msg:
 | 
				
			||||||
| 
						 | 
					@ -227,7 +225,7 @@ async def handle_order_requests(
 | 
				
			||||||
                    # XXX strip any .<venue> token which should
 | 
					                    # XXX strip any .<venue> token which should
 | 
				
			||||||
                    # ONLY ever be '.spot' rn, until we support
 | 
					                    # ONLY ever be '.spot' rn, until we support
 | 
				
			||||||
                    # futes.
 | 
					                    # futes.
 | 
				
			||||||
                    bs_fqme: str = order.symbol.rstrip('.spot')
 | 
					                    bs_fqme: str = order.symbol.replace('.spot', '')
 | 
				
			||||||
                    psym: str = bs_fqme.upper()
 | 
					                    psym: str = bs_fqme.upper()
 | 
				
			||||||
                    pair: str = f'{psym[:3]}/{psym[3:]}'
 | 
					                    pair: str = f'{psym[:3]}/{psym[3:]}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -891,7 +889,7 @@ async def handle_order_updates(
 | 
				
			||||||
                            ids.inverse.get(reqid) is None
 | 
					                            ids.inverse.get(reqid) is None
 | 
				
			||||||
                        ):
 | 
					                        ):
 | 
				
			||||||
                            # parse out existing live order
 | 
					                            # parse out existing live order
 | 
				
			||||||
                            fqme = pair.replace('/', '').lower()
 | 
					                            fqme = pair.replace('/', '').lower() + '.spot'
 | 
				
			||||||
                            price = float(price)
 | 
					                            price = float(price)
 | 
				
			||||||
                            size = float(vol)
 | 
					                            size = float(vol)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue