【发布时间】:2021-04-08 01:01:18
【问题描述】:
我想使用 Alpha Vantage 的技术指标获取 5 只股票的列表。以下是我导入和定义的内容:
from alpha_vantage.timeseries import TimeSeries
from alpha_vantage.foreignexchange import ForeignExchange
from alpha_vantage.cryptocurrencies import CryptoCurrencies
from alpha_vantage.techindicators import TechIndicators
from alpha_vantage.sectorperformance import SectorPerformances
import datetime
import numpy as np
import pandas as pd
top5 = ['CELH', 'MAXR', 'CD', 'WDC', 'IMAB']
查询技术指标会返回一个数据框(data)和一个字典(meta_data)
data, meta_data = ti.get_sma(symbol=ticker, interval='weekly')
如何为我的 top5 列表运行查询?我首先认为它应该是这样的:
for ticker in top5:
ticker_sma[ticker], ticker_meta_sma[ticker] =
ti.get_sma(symbol=ticker, interval='weekly')
或像这样:
sma = {}
for ticker in top5gainers:
gainers_sma[ticker], gainers_sma_data[ticker] =
ti.get_sma(symbol=ticker, interval='weekly')
gainers_sma.keys()
gainers_sma.values()
但我对这种方法的运气为零。我收到名称错误...
NameError: name 'ticker_sma' is not defined
...这对我来说很奇怪,因为我成功获取了单个股票的数据,例如 Microsoft,如下所示:
msft_sma, msft_meta_sma = ti.get_sma(symbol='msft', interval='weekly')
如果我删除 [ticker],然后运行此获取请求...
for ticker in top5:
data_sma, meta_sma = ti.get_sma(symbol=ticker, interval='weekly')
...那么根据 meta_sma 中的元数据,我只获得了 5 个股票中第 4 个股票的数据:
{'1: 符号': 'IMAB', '2: 指标': '简单移动平均线 (SMA)', '3:上次刷新':'2020-12-31', '4:间隔':'每周', '5:时间段':20, '6:系列类型':'关闭', '7:时区':'美国/东部'}
感谢您阅读此问题并提供答案!
【问题讨论】:
-
您能否详细说明您的评论“运气为零”?究竟是什么不工作?
-
@Martin,感谢您了解这一点。我用更多细节更新了问题。
标签: python pandas dataframe for-loop alpha-vantage