def fill_snap(self, m_type, price_level_type, price_levels_type, b_lvl_3, e_lvl_3): if m_type == 'py': m = ExternalMarket(tick_size=0.01, ob_type='py', price_level_type=price_level_type, price_levels_type=price_levels_type) elif m_type == 'cy': m = CyExternalMarket(tick_size=0.01, ob_type='py', price_level_type=price_level_type, price_levels_type=price_levels_type) m.fill_snap(b_lvl_3) snap = m.ob.price_levels.get_snap() corr_snap = agg_snap(b_lvl_3) for price in corr_snap['asks']: corr = corr_snap['asks'][price] self.price_level(corr, price, 'asks', snap, m) for price in corr_snap['bids']: corr = corr_snap['bids'][price] self.price_level(corr, price, 'bids', snap, m) if m_type == 'py': m = ExternalMarket(tick_size=0.01, ob_type='py', price_level_type=price_level_type, price_levels_type=price_levels_type) elif m_type == 'cy': m = CyExternalMarket(tick_size=0.01, ob_type='py', price_level_type=price_level_type, price_levels_type=price_levels_type) m.fill_snap(e_lvl_3) snap = m.ob.price_levels.get_snap() corr_snap = agg_snap(e_lvl_3) for price in sorted(corr_snap['asks']): corr = corr_snap['asks'][price] self.price_level(corr, price, 'asks', snap, m) for price in sorted(corr_snap['bids']): corr = corr_snap['bids'][price] self.price_level(corr, price, 'bids', snap, m)
def get_market(market_type, **kwargs): """ Returns a market based on the parameter. Parameters ---------- market_type : str The type of market to return kwargs Additional settings for the market Returns ------- market : Market """ if market_type == 'pyext': return ExternalMarket(**kwargs) elif market_type == 'cyext': return CyExternalMarket(**kwargs) else: raise NotImplementedError(market_type)
def test_send_message_cylist_cydeque(self): b_lvl_3, e_lvl_3, messages = load() m = ExternalMarket(price_level_type='cydeque', price_levels_type='cylist') self.messages(m, b_lvl_3, e_lvl_3, messages)
def test_send_message_rb_deque(self): b_lvl_3, e_lvl_3, messages = load() m = ExternalMarket(price_level_type='deque', price_levels_type='fast_rb') self.messages(m, b_lvl_3, e_lvl_3, messages)
def test_send_message_avl_ordered(self): b_lvl_3, e_lvl_3, messages = load() m = ExternalMarket(price_level_type='ordered_dict', price_levels_type='fast_avl') self.messages(m, b_lvl_3, e_lvl_3, messages)