Classify L1 tick types
							parent
							
								
									a5d5208cfa
								
							
						
					
					
						commit
						987c13c584
					
				| 
						 | 
				
			
			@ -285,7 +285,7 @@ class Client:
 | 
			
		|||
        self,
 | 
			
		||||
        symbol: str,
 | 
			
		||||
        to_trio,
 | 
			
		||||
        opts: Tuple[int] = ('375',),  # '233', ),
 | 
			
		||||
        opts: Tuple[int] = ('375', '233',),
 | 
			
		||||
        # opts: Tuple[int] = ('459',),
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        """Stream a ticker using the std L1 api.
 | 
			
		||||
| 
						 | 
				
			
			@ -469,9 +469,27 @@ def normalize(
 | 
			
		|||
    for tick in ticker.ticks:
 | 
			
		||||
        td = tick._asdict()
 | 
			
		||||
 | 
			
		||||
        if td['tickType'] in (48, 77):
 | 
			
		||||
        if td['tickType'] in (77,):
 | 
			
		||||
            td['type'] = 'trade'
 | 
			
		||||
 | 
			
		||||
        if td['tickType'] in (48,):
 | 
			
		||||
            td['type'] = 'utrade'
 | 
			
		||||
 | 
			
		||||
        elif td['tickType'] in (0,):
 | 
			
		||||
            td['type'] = 'bsize'
 | 
			
		||||
 | 
			
		||||
        elif td['tickType'] in (1,):
 | 
			
		||||
            td['type'] = 'bid'
 | 
			
		||||
 | 
			
		||||
        elif td['tickType'] in (2,):
 | 
			
		||||
            td['type'] = 'ask'
 | 
			
		||||
 | 
			
		||||
        elif td['tickType'] in (3,):
 | 
			
		||||
            td['type'] = 'asize'
 | 
			
		||||
 | 
			
		||||
        elif td['tickType'] in (5,):
 | 
			
		||||
            td['type'] = 'size'
 | 
			
		||||
 | 
			
		||||
        new_ticks.append(td)
 | 
			
		||||
 | 
			
		||||
    ticker.ticks = new_ticks
 | 
			
		||||
| 
						 | 
				
			
			@ -643,7 +661,7 @@ async def stream_quotes(
 | 
			
		|||
                # if we are the lone tick writer start writing
 | 
			
		||||
                # the buffer with appropriate trade data
 | 
			
		||||
                if not writer_already_exists:
 | 
			
		||||
                    for tick in iterticks(quote, type='trade'):
 | 
			
		||||
                    for tick in iterticks(quote, types=('trade', 'utrade',)):
 | 
			
		||||
                        last = tick['price']
 | 
			
		||||
 | 
			
		||||
                        # update last entry
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,14 +1,14 @@
 | 
			
		|||
"""
 | 
			
		||||
Stream format enforcement.
 | 
			
		||||
"""
 | 
			
		||||
from typing import AsyncIterator, Optional
 | 
			
		||||
from typing import AsyncIterator, Optional, Tuple
 | 
			
		||||
 | 
			
		||||
import numpy as np
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def iterticks(
 | 
			
		||||
    quote: dict,
 | 
			
		||||
    type: str = 'trade',
 | 
			
		||||
    types: Tuple[str] = ('trade', 'utrade'),
 | 
			
		||||
) -> AsyncIterator:
 | 
			
		||||
    """Iterate through ticks delivered per quote cycle.
 | 
			
		||||
    """
 | 
			
		||||
| 
						 | 
				
			
			@ -16,6 +16,6 @@ def iterticks(
 | 
			
		|||
    ticks = quote.get('ticks', ())
 | 
			
		||||
    if ticks:
 | 
			
		||||
        for tick in ticks:
 | 
			
		||||
            # print(tick)
 | 
			
		||||
            if tick.get('type') == type:
 | 
			
		||||
            print(f"{quote['symbol']}: {tick}")
 | 
			
		||||
            if tick.get('type') in types:
 | 
			
		||||
                yield tick
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue