python 股票指标库talib_Talib金融库的使用

在这里我们使用掘金量化平台获取数据以及后续的一些基础操作,除了调用最基本的包之外,与掘金量化数据库进行通讯必须使用对应的账号密码,这些只需要直接创建空策略,基本信息以及配置就都设置好了。

我们只需额外加上我们另外要调用的包即可import numpy as np

import talib

这里注意,Talib 的安装是以下命令:

pip install Ta-Lib

一、数据获取与滑动平均值的计算data = history_n(symbol="SZSE.399006", frequency="1d", count=100, end_time="2019-11-27", fields="close",

fill_missing="last", adjust=ADJUST_PREV, df=True)

close = np.asarray(data["close"].values)

ma3 = talib.MA(close, timeperiod=3)

print(ma3)

history_n():获取历史信息df=True:获得一个pandas类型的返回值

frequency:对应的时间周期。比如 “1d” 表示按天,“3600s” 表示按小时

data["close"].values:均线计算值

talib.MA:计算滑动平均值,timeperiod 为设定的时间周期(前 timeperiod-1个数据的值为 nan,即不计算,如果想要考虑进去的话,可以使用np.nan_to_num(ma3) 将 nan 转为0,或者直接 mask 筛掉)

二、EMA

中文为:指数平均数指标,也叫EXPMA指标,是一种趋势类指标,是以指数式递减加权的移动平均。

$$

\text {EMA}=\alpha \times \text{Price}_{\text N}+(1-\alpha)\times\text{Price_(N-1)}

$$

其中,$\alpha$ 为平滑指数,一般取作 $\frac 2 {N+1}$

代码的话和上面基本类似data = history_n(symbol="SZSE.399006", frequency="1d", count=300, end_time="2019-11-27", fields="close",

fill_missing="last", adjust=ADJUST_PREV, df=True)

close = np.asarray(data["close"].values)

ema = talib.EMA(close)

ema = np.nan_to_num(ema)

print(ema)

这里有一点需要注意,计算出的前29个值都是nan,这是因为 EMA 的默认的时间周期为30

三、MACD

MACD:指数平滑移动平均线,用于对股票趋势分析。

MACD 的意义

和双移动平均线基本相同,由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势。当 MACD 从负数转向正数时,是买的信号。当 MACD 从正数转向负数时,是卖的信号。当 MACD 以大角度变化时,表示快的移动平均线和慢的移动平均线的差距非常迅速地拉开,代表一个市场大趋势的转变。data = history_n(symbol="SZSE.399006", frequency="1d", count=300, end_time="2019-11-27", fields="close",

fill_missing="last", adjust=ADJUST_PREV, df=True)

close = np.asarray(data["close"].values)

macd, signal, hist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)

macd = np.nan_to_num(macd)

print(macd)

这里简单介绍一下MACD函数。MACD函数的默认值分别为 fastperiod=12, slowperiod=26, signalperiod=9。这里分别是快速(一般选12日)移动平均值与慢速(一般选26日)移动平均值。

以这两个数值作为测量两者(快速与慢速线)间的 “差离值” 的依据。所谓 “差离值”(DIF),即12日EMA数值减去26日EMA数值。因此,在持续的涨势中,12日EMA在26日EMA之上。其间的正差离值(+DIF)会愈来愈大。反之在跌势中,差离值可能变负(-DIF),也愈来愈大。至于行情开始回转,正或负差离值要缩小到一定的程度,才真正是行情反转的信号。MACD的反转信号界定为 “差离值” 的9日移动平均值(9日EMA)。

从返回值来看,signal 与 hist 分别为MACD的参数辅助量

我们可以用matplotlib输出看一下:plt.plot(macd, "r")

plt.show()

这段时间姑且可以算有涨有跌

但是,MACD的值只能用于反应不同时间周期内的买卖趋势情况,并不直接代表涨跌快慢,这时我们可以通过其它方法进行计算,这里借助的是 np.diff,返回相邻数之间的对应差值data = history_n(symbol="SZSE.002310",frequency="1d",count=300, end_time="2019-11-27",fields="close",fill_missing="last",adjust=ADJUST_PREV,df=True)

lose = np.asarray(data["close"].values)

acd, signal, hist = talib.MACD(close)

acd = np.nan_to_num(macd)

acd_gradient = np.diff(macd)

lt.plot(macd_gradient[33:], "r")

<
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值