为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Python 中使用 yahoo_fin 计算移动平均线?

如何在 Python 中使用 yahoo_fin 计算移动平均线?

慕森卡 2022-10-18 14:37:35
我正在尝试制作一个程序,当股票价格超过移动平均线并且我正在使用该库时通过电子邮件发送警报yahoo_fin(这里是文档)我正在尝试从中获取移动平均数据,yahoo_fin.stock_info.get_stats('a')但出现以下错误:File "lib\site-packages\yahoo_fin\stock_info.py", line 241, in get_stats  table.columns = ["Attribute" , "Value"]  File "lib\site-packages\pandas\core\generic.py", line 5287, in __setattr__  return object.__setattr__(self, name, value)  File "pandas\_libs\properties.pyx", line 67, in pandas._libs.properties.AxisProperty.__set__  File "lib\site-packages\pandas\core\generic.py", line 661, in _set_axis  self._data.set_axis(axis, labels)  File "lib\site-packages\pandas\core\internals\managers.py", line 178, in set_axis  f"Length mismatch: Expected axis has {old_len} elements, new "  ValueError: Length mismatch: Expected axis has 9 elements, new values have 2 elements解决此问题的任何帮助都会很棒!如果您不知道如何使此特定功能起作用,我尝试过的另一种似乎可行的替代方法是使用 method yahoo_fin.stock_info.get_data('a'),但我需要帮助才能知道如何根据这些数据计算移动平均值。
查看完整描述

2 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

get_data您可以使用以下代码计算 50 天移动平均线:


import yahoo_fin

from yahoo_fin import stock_info

yahoo_fin.stock_info.get_data('a', interval='1d')['close'][-50:].mean()

如果你想在一段时间内计算它:


df = yahoo_fin.stock_info.get_data('a', interval='1d')

moving_average = [df['close'][i-50:i].mean() for i in range(50, df.shape[0]+1)]


查看完整回答
反对 回复 2022-10-18
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

我为此推送了一个补丁 - 如果您将 yahoo_fin 的版本升级到 0.8.5,现在应该已修复。


from yahoo_fin import stock info as si

si.get_stats("a")

由此,您可以获得 50 天和 200 天移动平均线。但是,正如@user7440787 的回复中提到的,您可以使用 get_data 方法来拉取价格历史记录,然后计算您需要的任何窗口大小的移动平均线(10 天、100 天、150 天等)。


查看完整回答
反对 回复 2022-10-18
  • 2 回答
  • 0 关注
  • 57 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信