Is it possible to use ‘get_bars’ from the Python API to:
Only get e.g. hour data bars from the open market (normally 9.30 to 16.00) over several days, and skip the pre/post market data bars?
Get hour data bars following the market hour timing, i.e. {9.30-10.30, 10.30-11.30, …} instead of {9.00-10.00, 10.00-11.00, …}, since the latter would include some pre-market data?
Hi @saskaaning and @gm_scan - sorry for joining the party late. The API does not support this currently, but I will take this back to the team and review the possibilities.
An alternate solution in the meantime could be to query minute bars for the periods you want to use.
@saskaaning As @Abel_Alpaca noted, the way I would do this is to fetch minute bars and then use the magic of the pandas resample method to create hour bars. Something like this
# Get all the bars between a start and end time
start_time = pd.to_datetime('2021-12-20', utc=True)
end_time = pd.to_datetime('2021-12-23', utc=True)
symbols = ['IBM']
# Fetch the bars and format as a dataframe
minute_bars = api_data.get_bars(symbols, '1Minute',
start=start_time.isoformat(),
end=end_time.isoformat(), adjustment='split').df
# Convert to market time for easier reading
minute_bars = minute_bars.tz_convert('America/New_York')
# Resample the bars to get hourly bars for only market hours
agg_functions = {'open': 'first', 'high': 'max', 'low': 'min', 'close': 'last', 'volume': 'sum', 'trade_count': 'sum', }
hour_bars = minute_bars.resample('1H', offset='30T').agg(agg_functions).between_time('9:30', '16:00')
That creates the following hourly bars as desired.