I have been trying to work with Regular Trading Hours (RTH) market data using the Alpaca API but never succeeded in getting data similar to what I get from other brokers. Interactive Brokers API provides something like a “useRTH =False” parameter to either work with Regular Trading Hours or not!
Why can’t Alpaca Markets API have a similar thing to make our lives easier?
You can easily filter the data returned for market hours. See the commented line below:
def get_bars(self, symbols:pd.Series, start_datetime:datetime, end_datetime:datetime, timeframe):
stockbar_request = StockBarsRequest(symbol_or_symbols=symbols.tolist(), start=start_datetime, end=end_datetime, \
timeframe=timeframe, adjustment=Adjustment.DIVIDEND, feed=DataFeed.SIP)
try:
df = self.historicaldata_client.get_stock_bars(stockbar_request).df
#print(df)
df = df.reset_index()
#print(df)
df.set_index('timestamp', inplace=True)
df = df.tz_convert('America/New_York')
##################################
# filter the data returned for market hours
df= df.between_time("9:30", "16:00")
##################################
#print(df)
except BaseException as error:
print('An exception occurred: {}'.format(error))
df = pd.DataFrame()
return df
1 Like
Thank you for the code,
I will give it a try.
Thank you