如何使用Alpha Vantage API的Python代码指定起止日期提取AAPL每日收盘价
如何用Alpha Vantage API指定起止日期获取AAPL每日收盘价
嘿,我来帮你搞定这个问题!首先得纠正你代码里的一个小失误——你写的data - ts.get_daily(...)应该改成data, meta_data = ts.get_daily(...),因为get_daily方法会返回数据对象和元数据对象两个结果,少了这个赋值的话代码会报错哒。
接下来要说明的是:Alpha Vantage的API本身并没有直接支持指定起止日期的参数,所以我们得先获取完整的日线数据,再用Pandas来筛选出你需要的日期范围。下面是修正后的完整代码:
from alpha_vantage.timeseries import TimeSeries # 注意这里是alpha_vantage,不是alpha.vantage哦 import pandas as pd api_key = '你的API密钥' # 记得把这里替换成你自己的Alpha Vantage API密钥 ts = TimeSeries(key=api_key, output_format='pandas') # 获取AAPL的完整日线历史数据,outputsize='full'会返回所有可用的历史数据 data, meta_data = ts.get_daily('AAPL', outputsize='full') # 把索引的字符串日期转换成datetime类型,这样才能进行日期范围筛选 data.index = pd.to_datetime(data.index) # 定义你需要的起止日期,然后筛选出这段时间的收盘价(Alpha Vantage里收盘价列名为'4. close') start_date = '2020-01-01' end_date = '2021-06-30' filtered_close_data = data.loc[start_date:end_date, ['4. close']] # 给列名改个更直观的名字,方便后续使用 filtered_close_data.rename(columns={'4. close': 'AAPL_Daily_Close'}, inplace=True) # 打印结果 print(filtered_close_data)
几个关键点要注意:
- Alpha Vantage返回的DataFrame索引是
YYYY-MM-DD格式的字符串,必须先转成datetime类型,才能用loc进行日期切片筛选。 - 收盘价对应的列名是
'4. close',你可以通过print(data.columns)查看所有列的名称,确认字段是否正确。 - 如果你只需要最近100条数据,可以把
outputsize='full'改成outputsize='compact',但因为你需要的时间跨度超过100天,所以必须用full来获取完整历史数据。
另外,如果你需要复权后的收盘价,可以用get_daily_adjusted方法,筛选逻辑和上面是完全一样的。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

