TaLib金融工具库

注册掘金软件,获取密钥
TaLib金融工具库_第1张图片
TaLib金融工具库_第2张图片

安装 gm

pip install gm

安装 TaLib

pip install talib

windows 64位 下载参考链接

Talib金融工具库

history_n()

用于获取若干段的时间序列内容

参数 描述
df=True 获取一个pandas类型的返回值
from gm.api import *
import numpy as np
import talib

set_token("xxxxxxxxxxxxxxxxxxxxxxxxx")
# 399006 创业版
data = history_n(symbol="SZSE.399006",frequency="1d",count=100,end_time="2017-12-31",fields="close",fill_missing="last",adjust=ADJUST_PREV,df=True)

TaLib金融工具库_第3张图片
TaLib金融工具库_第4张图片

TaLib金融工具库_第5张图片

转numpy格式

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

TaLib金融工具库_第6张图片

talib.MA() 计算滑动平均值

参数 描述
timeperiod 可以计算相应的滑动平均周期

TaLib金融工具库_第7张图片

np.nan_to_sum() 将nan型改成零

ma3 = np.nan_to_num(ma3)
print(ma3)

TaLib金融工具库_第8张图片

MA5均值

from gm.api import *
import numpy as np
import talib

set_token("xxxxxxxxxxxxxxxxxxxxxx")

data = history_n(symbol="SZSE.399006",frequency="1d",count=100,end_time="2017-12-31",fields="close",fill_missing="last",adjust=ADJUST_PREV,df=True)
close = np.asarray(data["close"].values)
ma5 = talib.MA(close,timeperiod=5)
print(ma5)

TaLib金融工具库_第9张图片

TaLib金融工具库_第10张图片

talib.EMA() 指数平均数

EMA 指数平均数指标,也叫 EXPMA 指标,是一种趋向类指标,是以指数式递减加权的移动平均
E M A = α × P r i c e N + ( 1 − α ) × P r i c e ( N − 1 ) EMA=\alpha\times Price_N + (1-\alpha)\times Price_{(N-1)} EMA=α×PriceN+(1α)×Price(N1)
α \alpha α平滑指数
α = 2 ( N + 1 ) \alpha=\frac{2}{(N+1)} α=(N+1)2

from gm.api import *
import numpy as np
import talib

set_token("xxxxxxxxxxxxxxxxxxx")

data = history_n(symbol="SZSE.399006",frequency="1d",count=100,end_time="2017-12-31",fields="close",fill_missing="last",adjust=ADJUST_PREV,df=True)
close = np.asarray(data["close"].values)
ema = talib.EMA(close,timeperiod=12)   # 默认时间30
ema = np.nan_to_num(ema)
print(ema)

TaLib金融工具库_第11张图片

  1. EXPMA一般以观察12日和50日二条均线为主;
  2. 12日指数平均线向上交叉50日指数平均线时,买进;
  3. 12日指数平均线向下交叉50日指数平均线时,卖出;
    TaLib金融工具库_第12张图片

talib.MACD() 指数平滑移动平均线

用于对股票趋势的分析
MACD的意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势

  1. 当MACD从正数转向负数时,是卖的信号
  2. 当MACD从负数转向正数时,是买的信号
  3. 当MACD以大角度变化时,表示快的移动平均线和慢的移动平均线的差距非常迅速地拉开,代表一个市场大趋势

MACD默认值12、26、9为
快速移动平均值(一般选12日)与慢速移动平均值(一般选26日)
以这个数值作为测量两者(快速与慢速线)间的“差离值”的依据。所谓“差离值”(DIF),即12日EMA数值减去26日EMA值。

  1. 在持续的涨势中,12日EMA在26日EMA之上,其间的正差离值( + D I F +DIF +DIF)会越来越大
  2. 在持续的跌势中,负差离值( − D I F -DIF DIF)会越来越大
  3. 正或负差异值要缩小到一定的程度,才真正时行情反转的信号

MACD的反转信号界定为“差离值”的9日移动平均值(9日EMA)

from gm.api import *
import numpy as np
import talib

set_token("xxxxxxxxxxxxxxxxxxxx")

data = history_n(symbol="SZSE.399006",frequency="1d",count=100,end_time="2017-12-31",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)

TaLib金融工具库_第13张图片

TaLib金融工具库_第14张图片
用如上数据绘图:

import matplotlib.pyplot as plt

plt.plot(macd,'r')
plt.savefig("macd.png")
plt.show()

TaLib金融工具库_第15张图片

np.diff() MACD斜率

MACD值在单位时间内变化情况的大小

np.diff(a, n=1, axis=-1)

处理相邻数间的差值大小

from gm.api import *
import numpy as np
import talib

set_token("xxxxxxxxxxxxxxxxxxxxxxxxxxx")

data = history_n(symbol="SZSE.399006",frequency="1d",count=100,end_time="2017-12-31",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)

macd_gradient = np.diff(macd)
print(macd_gradient)

TaLib金融工具库_第16张图片

talib.AD() 累积派发线AD 与 talib.ADX() 平均趋向指数ADX

AD(累积派发线)是一种平衡交易量指标,以当日得收盘价来估算成交流量,用于估计一段时间内该证券累积得资金流量
AD为资金趋势函数

  1. 向上得AD表示买方占优势
  2. 向下得AD表示卖方占优势
  3. AD与价格的背离可视为买卖信号,即底背离考虑买入,顶背离考虑卖出

通常与ADX一起使用,利用多空趋向的变化差离与总和判定平均趋势,ADX数值不能显示趋势的发展方向。
如果趋势存在,ADX可以衡量趋势的强度

from gm.api import *
import numpy as np
import talib

set_token("xxxxxxxxxxxxxxxxxxxxxxxxxxxx")

# 002310 东方园林
data = history_n(symbol="SZSE.002310",frequency="1d",count=100,end_time="2017-12-31",fields="high,low,close,open,volume",fill_missing="last",adjust=ADJUST_PREV,df=True)

close = np.asarray(data["close"].values)
open = np.asarray(data["open"].values)
high = np.asarray(data["high"].values)
low = np.asarray(data["low"].values)
volume = np.asarray(data["volume"].values).astype(np.double)

adx = talib.ADX(high,low,close)
adx = np.nan_to_num(adx)
adx = adx/np.max(adx)

ad = talib.AD(high,low,close,volume)
ad = np.nan_to_num(ad)
ad = ad/np.max(ad)

ADX数值
TaLib金融工具库_第17张图片
AD数值
TaLib金融工具库_第18张图片

import matplotlib.pyplot as plt

plt.plot(ad,"r",adx,"b")
plt.savefig("ad_adx.png")
plt.show()

TaLib金融工具库_第19张图片

talib.BBANDS() 布林森线

  1. 布林森指标用来判断股票未来走势以及波动
  2. 布林线指标(即BOLL)指标,其英文全称是Bollinger Bands。布林线由约翰~布林先生创造,其利用统计原理求出股价的标准差以及信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称为布林带。
  3. 其上下范围不固定,随股价的滚动而变化。布林指标和麦克(指标)一样属于路径指标,股价波动在上限和下限的区间之内,这条带状区的宽窄随着股价波动幅度的大小而变化,股价涨跌幅度加大时,带状区变宽,涨跌幅度狭小盘整时,带状区则变窄。
from gm.api import *
import numpy as np
import talib

set_token("61c4ec11af460c782950cd5ed41faacd5ac560f9")

data = history_n(symbol="SZSE.002129",frequency="3600s",count=100,end_time="2017-12-31",fields="high,low,close,open,volume",fill_missing="last",adjust=ADJUST_PREV,df=True)

close = np.asarray(data["close"].values)
open = np.asarray(data["open"].values)
high = np.asarray(data["high"].values)
low = np.asarray(data["low"].values)
volume = np.asarray(data["volume"].values).astype(np.double)

upperband,middleband,lowerband = talib.BBANDS(close)

TaLib金融工具库_第20张图片
TaLib金融工具库_第21张图片
TaLib金融工具库_第22张图片
TaLib金融工具库_第23张图片

你可能感兴趣的:(python金融量化)