Add stocks search to qt client
							parent
							
								
									f768e6d91e
								
							
						
					
					
						commit
						1b31fcca57
					
				| 
						 | 
				
			
			@ -6,7 +6,7 @@ import inspect
 | 
			
		|||
import time
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from functools import partial
 | 
			
		||||
from itertools import chain
 | 
			
		||||
import itertools
 | 
			
		||||
import configparser
 | 
			
		||||
from typing import List, Tuple, Dict, Any, Iterator, NamedTuple
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -602,6 +602,24 @@ class Client:
 | 
			
		|||
            f"Took {time.time() - start} seconds to retreive {len(bars)} bars")
 | 
			
		||||
        return bars
 | 
			
		||||
 | 
			
		||||
    async def search_stocks(
 | 
			
		||||
        self,
 | 
			
		||||
        pattern: str,
 | 
			
		||||
        # how many contracts to return
 | 
			
		||||
        upto: int = 10,
 | 
			
		||||
    ) -> Dict[str, str]:
 | 
			
		||||
        details = {}
 | 
			
		||||
        results = await self.api.search(prefix=pattern)
 | 
			
		||||
        for result in results['symbols']:
 | 
			
		||||
            sym = result['symbol']
 | 
			
		||||
            if '.' not in sym:
 | 
			
		||||
                sym = f"{sym}.{result['listingExchange']}"
 | 
			
		||||
 | 
			
		||||
            details[sym] = result
 | 
			
		||||
 | 
			
		||||
            if len(details) == upto:
 | 
			
		||||
                return details
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# marketstore TSD compatible numpy dtype for bar
 | 
			
		||||
_qt_bars_dt = [
 | 
			
		||||
| 
						 | 
				
			
			@ -856,7 +874,7 @@ def format_stock_quote(
 | 
			
		|||
            # 'symbol': quote['symbol'],
 | 
			
		||||
            '%': round(change, 3),
 | 
			
		||||
            'MC': mktcap,
 | 
			
		||||
            # why questrade do you have to be an asshole shipping null values!!!
 | 
			
		||||
            # why questrade do you have to be shipping null values!!!
 | 
			
		||||
            # '$ vol': round((quote['VWAP'] or 0) * (quote['volume'] or 0), 3),
 | 
			
		||||
            'close': previous,
 | 
			
		||||
        })
 | 
			
		||||
| 
						 | 
				
			
			@ -870,7 +888,7 @@ def format_stock_quote(
 | 
			
		|||
    new = {}
 | 
			
		||||
    displayable = {}
 | 
			
		||||
 | 
			
		||||
    for key, value in chain(quote.items(), computed.items()):
 | 
			
		||||
    for key, value in itertools.chain(quote.items(), computed.items()):
 | 
			
		||||
        new_key = keymap.get(key)
 | 
			
		||||
        if not new_key:
 | 
			
		||||
            continue
 | 
			
		||||
| 
						 | 
				
			
			@ -888,7 +906,6 @@ def format_stock_quote(
 | 
			
		|||
        new[new_key] = value
 | 
			
		||||
        displayable[new_key] = display_value
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return new, displayable
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue