基于Python的Alpha Vantage API:如何遍历股票代码列表生成多个走势图
解决重复生成同一股票走势图的问题
嘿,我一眼就看到问题出在哪啦!你现在的API请求写在了循环外面,而且还提前用了未定义的i变量——这就导致你只获取了一次股票数据,后面循环里反复画的都是这同一份数据,自然全是重复的图啦。
修正后的代码
把API请求移到循环内部,让每次循环都针对当前股票获取数据,这样就能生成每只股票的独立走势图了:
import matplotlib.pyplot as plt # 确保ts已经是你初始化好的Alpha Vantage客户端对象 tickers = ['PENN', 'MGM', 'DKNG', 'TSLA'] # 直接遍历tickers列表,比用range(len(tickers))更直观 for ticker in tickers: # 每次循环都请求当前股票的1分钟级日内数据 data, meta_data = ts.get_intraday(ticker, interval='1min', outputsize='full') plt.figure() # 给图表加上股票代码标题,方便区分不同股票 plt.title(f"Intraday Closing Price - {ticker}") plt.plot(data['4. close']) plt.xlabel("Time") plt.ylabel("Price (USD)") plt.show()
关键修正点
- 把API调用放进循环:这样每一次迭代都会根据当前的
ticker参数,请求对应股票的最新数据,而不是一直用第一次获取的旧数据。 - 直接遍历列表元素:用
for ticker in tickers代替for i in range(len(tickers)),代码更简洁易读,还能避免索引错误。 - 添加图表标题:给每个走势图加上股票代码的标题,能快速区分不同股票的图表,更实用。
原来的代码里,你在循环外就执行了ts.get_intraday(tickers[i], ...),这时候i还没被定义(除非你之前代码里有定义,但即便如此也只会获取一次数据),所以所有循环迭代都在重复绘制同一份数据。把请求移到循环里就完美解决这个问题啦!
内容的提问来源于stack exchange,提问作者Joseph Bertz




