Raise `DataUnavailable` when a contract's 'earliest time' is hit

ib_1m_hist
Tyler Goodlet 2022-10-26 10:28:59 -04:00
parent 2f7b272d8c
commit 553d0557b6
1 changed files with 19 additions and 4 deletions

View File

@ -39,7 +39,11 @@ import tractor
import trio import trio
from trio_typing import TaskStatus from trio_typing import TaskStatus
from .._util import SymbolNotFound, NoData from .._util import (
NoData,
DataUnavailable,
SymbolNotFound,
)
from .api import ( from .api import (
# _adhoc_futes_set, # _adhoc_futes_set,
con2fqsn, con2fqsn,
@ -126,6 +130,8 @@ async def open_history_client(
mean: float = 0 mean: float = 0
count: int = 0 count: int = 0
head_dt = await proxy.get_head_time(fqsn=symbol)
async def get_hist( async def get_hist(
timeframe: float, timeframe: float,
end_dt: Optional[datetime] = None, end_dt: Optional[datetime] = None,
@ -153,7 +159,9 @@ async def open_history_client(
f'mean: {mean}' f'mean: {mean}'
) )
if out is None: if (
out is None
):
# could be trying to retreive bars over weekend # could be trying to retreive bars over weekend
log.error(f"Can't grab bars starting at {end_dt}!?!?") log.error(f"Can't grab bars starting at {end_dt}!?!?")
raise NoData( raise NoData(
@ -161,6 +169,9 @@ async def open_history_client(
# frame_size=2000, # frame_size=2000,
) )
if end_dt and end_dt <= head_dt:
raise DataUnavailable(f'First timestamp is {head_dt}')
bars, bars_array, first_dt, last_dt = out bars, bars_array, first_dt, last_dt = out
# volume cleaning since there's -ve entries, # volume cleaning since there's -ve entries,
@ -363,8 +374,12 @@ async def get_bars(
# try to decrement start point and look further back # try to decrement start point and look further back
# end_dt = end_dt.subtract(seconds=2000) # end_dt = end_dt.subtract(seconds=2000)
if end_dt is not None:
end_dt = end_dt.subtract(days=1) end_dt = end_dt.subtract(days=1)
print("SUBTRACTING DAY") print("SUBTRACTING DAY")
else:
end_dt = pendulum.now().subtract(days=1)
continue continue
elif 'API historical data query cancelled' in err.message: elif 'API historical data query cancelled' in err.message: