efinance icon indicating copy to clipboard operation
efinance copied to clipboard

如何获得更多类型的股票指数?例如macd,jdk,sar等指数。

Open z-yf17 opened this issue 2 years ago • 3 comments

z-yf17 avatar Aug 09 '21 14:08 z-yf17

以 macd 指标为例,你可以通过以下方法计算出来,示例代码如下

import efinance as ef
# 股票代码
stock_code = 'AAPL'
df = ef.stock.get_quote_history(stock_code)
ticker = df['收盘']
# 12 日指数滑动平均值
exp1 = ticker.ewm(span=12, adjust=False).mean()
# 26 日指数滑动平均值
exp2 = ticker.ewm(span=26, adjust=False).mean()
# dif 值
dif = exp1-exp2
# dea 值
dea = dif.ewm(span=9, adjust=False).mean()
# macd 值
macd = 2*(dif-dea)

如果你需要获取这些指标,其中的一个方法是

  1. 查阅相关资料,弄清楚计算这些指标需要哪些数据
  2. 查阅 pandas 文档,学会一些操作以用代码实现公式计算

如果这些指标不能通过计算获得,你再反馈一下,我帮你找找。

Micro-sheep avatar Aug 09 '21 14:08 Micro-sheep

谢谢大佬~ 已按照您说的去查了相关指标的计算方式,但是在使用efinance进行实现的时候还是遇到了问题,主要问题在于对库函数不熟悉,不知如何调用所需要的函数。大佬是否能提供一些典型指数的计算方法和函数调用,以供大家进一步参考呢?还有就是是否能够麻烦大佬提供一下jdk和sar的计算代码呢?自己查到了但是无法用代码实现,谢谢!!

z-yf17 avatar Aug 10 '21 00:08 z-yf17

谢谢大佬~ 已按照您说的去查了相关指标的计算方式,但是在使用efinance进行实现的时候还是遇到了问题,主要问题在于对库函数不熟悉,不知如何调用所需要的函数。大佬是否能提供一些典型指数的计算方法和函数调用,以供大家进一步参考呢?还有就是是否能够麻烦大佬提供一下jdk和sar的计算代码呢?自己查到了但是无法用代码实现,谢谢!!

efinance 主要是用来获取数据的,并且数据的返回类型 绝大多是是 pandas.Seriespandas.DataFrame,这意味着你可以在此基础上对其使用 pandas 提供的 pandas.Series 以及 pandas.DataFrame 的操作。

ewm 函数为例,它是 pandas.DataFrame 所提供的操作方法,是 pandas 官方编写的,所以你应该查阅他们写的文档。 具体流程是

  1. 打开 pandas 的 API 参考链接:pandas
  2. 在明确知道你需要的函数的情况下,你可以在这个 API 参考界面的搜索框输入你需要了解的函数,例如:ewm,当你搜索之后,会有比较精确的搜索结果展示给你。比如 ewm 的搜索结果对应的链接:ewm 搜索结果 ,预览如下

image

因为前面说到,efinance 返回的数据绝大多数是 pandas.Seriespandas.DataFrame,所以你应该优先参考前面那两个搜索结果。依次点进去,以 pandas.Series.ewm 为例,点开它之后,预览如下

image

你会看到文档大致分为:函数构造、参数类型、返回值以及使用例子。efinance 的文档也是如此。

你了解 ewm 的公式之后,再结合例子应该可以掌握它。

至于对 efinance 的函数不熟悉,你可以参考 efinance 的文档:efinance api reference,这些文档本身是从代码注释生成的,这意味着如果你选择一个好的 IDE 或者编辑器,便可以在写代码的过程中获得一个很好的体验。以 vs code 为例,在装了 python 以及 pylance 这两个插件之后,代码补全以及注释文档渲染效果如下

image image image

  1. 总结:如果你需要计算某个指标,则需在 efinance 的参考文档里面查阅或者搜索某些关键词,以掌握如何用它来获取数据。在得到数据之后,再查阅指标的计算公式。遇到代码实现。则去搜索 pandas 的 API 文档。

Micro-sheep avatar Aug 10 '21 01:08 Micro-sheep