使用Alpaca API获取TSLA历史收盘价,如何单独提取收盘价?
解决Alpaca API提取特定股票历史收盘价的问题
你遇到的问题根源在于初始化StockHistoricalDataClient时设置了raw_data=True,这会让API返回原始的JSON字典数据,而非Alpaca封装好的BarSet对象,导致getclose()(正确方法名是get_close())无法按预期提取收盘价。以下是两种解决方法:
方法一:使用封装对象提取(推荐)
去掉raw_data=True参数(默认值为False),利用Alpaca提供的封装类方法来获取收盘价:
修改客户端初始化代码:
data_client = StockHistoricalDataClient(API_KEY, API_SECRET)
之后获取并提取收盘价:
day = datetime(2024, 6, 3, 0, 0) request = StockBarsRequest( symbol_or_symbols = "TSLA", start = day, end = (day + timedelta(days = 1)), timeframe = TimeFrame.Day, limit = 1 ) data1 = data_client.get_stock_bars(request) # 获取TSLA的收盘价序列(pandas Series) close_series = data1["TSLA"].get_close() # 提取单日收盘价 tsla_close_price = close_series.iloc[0] print(tsla_close_price)
方法二:直接从原始数据中提取
如果需要保留raw_data=True,可以直接从返回的字典结构中提取收盘价:
data_client = StockHistoricalDataClient(API_KEY, API_SECRET, raw_data = True) # ... 其他代码不变 ... data1 = data_client.get_stock_bars(request) # 从原始字典中提取收盘价 tsla_close_price = data1["TSLA"][0]["c"] print(tsla_close_price)
说明:当raw_data=True时,返回的数据结构为{"TSLA": [{"c": 收盘价, "o": 开盘价, "h": 最高价, "l": 最低价, ...}]},其中"c"字段对应收盘价。
内容的提问来源于stack exchange,提问作者Melville Spencer
相关产品推荐
相关产品推荐

