Error out clearing task on first quote being nan
							parent
							
								
									59defa378c
								
							
						
					
					
						commit
						65ad18b5c3
					
				| 
						 | 
					@ -20,6 +20,7 @@ In da suit parlances: "Execution management systems"
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
from contextlib import asynccontextmanager
 | 
					from contextlib import asynccontextmanager
 | 
				
			||||||
from dataclasses import dataclass, field
 | 
					from dataclasses import dataclass, field
 | 
				
			||||||
 | 
					from math import isnan
 | 
				
			||||||
from pprint import pformat
 | 
					from pprint import pformat
 | 
				
			||||||
import time
 | 
					import time
 | 
				
			||||||
from typing import AsyncIterator, Callable
 | 
					from typing import AsyncIterator, Callable
 | 
				
			||||||
| 
						 | 
					@ -47,9 +48,11 @@ log = get_logger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TODO: numba all of this
 | 
					# TODO: numba all of this
 | 
				
			||||||
def mk_check(
 | 
					def mk_check(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    trigger_price: float,
 | 
					    trigger_price: float,
 | 
				
			||||||
    known_last: float,
 | 
					    known_last: float,
 | 
				
			||||||
    action: str,
 | 
					    action: str,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
) -> Callable[[float, float], bool]:
 | 
					) -> Callable[[float, float], bool]:
 | 
				
			||||||
    """Create a predicate for given ``exec_price`` based on last known
 | 
					    """Create a predicate for given ``exec_price`` based on last known
 | 
				
			||||||
    price, ``known_last``.
 | 
					    price, ``known_last``.
 | 
				
			||||||
| 
						 | 
					@ -77,8 +80,7 @@ def mk_check(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return check_lt
 | 
					        return check_lt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    else:
 | 
					    raise ValueError('trigger: {trigger_price}, last: {known_last}')
 | 
				
			||||||
        return None
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@dataclass
 | 
					@dataclass
 | 
				
			||||||
| 
						 | 
					@ -177,7 +179,15 @@ async def clear_dark_triggers(
 | 
				
			||||||
                    tuple(execs.items())
 | 
					                    tuple(execs.items())
 | 
				
			||||||
                ):
 | 
					                ):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if not pred or (ttype not in tf) or (not pred(price)):
 | 
					                    if (
 | 
				
			||||||
 | 
					                        not pred or
 | 
				
			||||||
 | 
					                        ttype not in tf or
 | 
				
			||||||
 | 
					                        not pred(price)
 | 
				
			||||||
 | 
					                    ):
 | 
				
			||||||
 | 
					                        log.debug(
 | 
				
			||||||
 | 
					                            f'skipping quote for {sym} '
 | 
				
			||||||
 | 
					                            f'{pred}, {ttype} not in {tf}?, {pred(price)}'
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
                        # majority of iterations will be non-matches
 | 
					                        # majority of iterations will be non-matches
 | 
				
			||||||
                        continue
 | 
					                        continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1005,7 +1015,8 @@ async def _emsd_main(
 | 
				
			||||||
        first_quote = feed.first_quotes[symbol]
 | 
					        first_quote = feed.first_quotes[symbol]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        book = _router.get_dark_book(broker)
 | 
					        book = _router.get_dark_book(broker)
 | 
				
			||||||
        book.lasts[(broker, symbol)] = first_quote['last']
 | 
					        last = book.lasts[(broker, symbol)] = first_quote['last']
 | 
				
			||||||
 | 
					        assert not isnan(last)  # ib is a cucker but we've fixed it in the backend
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # open a stream with the brokerd backend for order
 | 
					        # open a stream with the brokerd backend for order
 | 
				
			||||||
        # flow dialogue
 | 
					        # flow dialogue
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue