talib 安装与使用

talib 安装与使用

 

I 安装

最简单的安装方式:

$ pip install TA-Lib

有可能遇到的问题:

 func.c:256:28: fatal error: ta-lib/ta_libc.h: No such file or directorycompilation terminated.

这个问题的意思是找不到基础的TALIB库,所以我们不能用上面的简便方式安装。

Mac下安装方式:

$ brew install ta-lib

Windows下安装方式:

 从ta-lib-0.4.0-msvc.zip 下载,并解压到路径C:\ta-lib

Linux下安装方式:

下载ta-lib-0.4.0-src.tar.gz   然后依次运行

$ untar and cd
$ ./configure --prefix=/usr
$ make
$ sudo make install

如果使用make -jx构建TA LIB可能会失败,需要在最后再加一条命令

$ mae -jX 

II 使用

1、指数移动均线和MACD代码

import matplotlib.pyplot as plt
import numpy as np
import talib

df=ts.get_k_data('600600')
close = [float(x) for x in df['close']]
# 调用talib计算指数移动平均线的值
df['EMA12'] = talib.EMA(np.array(close), timeperiod=6)  
df['EMA26'] = talib.EMA(np.array(close), timeperiod=12)   
 # 调用talib计算MACD指标
df['MACD'],df['MACDsignal'],df['MACDhist'] = talib.MACD(np.array(close),
                            fastperiod=6, slowperiod=12, signalperiod=9)   
df.tail(12)

 

动量和RSI的函数

import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import talib

df=ts.get_k_data('600600')
close = [float(x) for x in df['close']]
df['RSI']=talib.RSI(np.array(close), timeperiod=12)     #RSI的天数一般是6、12、24
df['MOM']=talib.MOM(np.array(close), timeperiod=5)
df.tail(12)

 

2、K线图代码

#!/usr/bin/env python
# encoding: utf-8

#@author: 好
#@file: test0701.py
#@time: 2019/7/2 17:22

import pandas_datareader as pdr
import datetime
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import mpl_finance as mpf
import seaborn as sns
import talib as tl


start = datetime.datetime(2018,4,1)
df_300427  = pdr.DataReader('300427.SZ', 'yahoo', start=start)


df_300427.index = df_300427.index.format(formatter=lambda x: x.strftime('%Y-%m-%d'))
fig = plt.figure(figsize=(24, 8))
ax = fig.add_subplot(1, 1, 1)
ax.set_xticks(range(0, len(df_300427.index), 10))
ax.set_xticklabels(df_300427.index[::10])
mpf.candlestick2_ochl(ax, df_300427['Open'], df_300427['Close'], df_300427['High'],
                      df_300427['Low'], width=0.6, colorup='r', colordown='g', alpha=0.75);

#加均线
sma_10 = tl.SMA(np.array(df_300427['Close']), 10)
sma_30 = tl.SMA(np.array(df_300427['Close']), 30)

fig = plt.figure(figsize=(24, 8))
ax = fig.add_subplot(1, 1, 1)
ax.set_xticks(range(0, len(df_300427.index), 10))
ax.set_xticklabels(df_300427.index[::10])
mpf.candlestick2_ochl(ax, df_300427['Open'], df_300427['Close'], df_300427['High'],
                      df_300427['Low'], width=0.6, colorup='r', colordown='g', alpha=0.75)
plt.rcParams['font.sans-serif']=['Microsoft JhengHei']
ax.plot(sma_10, label='10日均线')
ax.plot(sma_30, label='30日均线')
ax.legend();

#加成交量
sma_10 = tl.SMA(np.array(df_300427['Close']), 10)
sma_30 = tl.SMA(np.array(df_300427['Close']), 30)

fig = plt.figure(figsize=(24, 15))
ax = fig.add_axes([0,0.2,1,0.5])
ax2 = fig.add_axes([0,0,1,0.2])

ax.set_xticks(range(0, len(df_300427.index), 10))
ax.set_xticklabels(df_300427.index[::10])
mpf.candlestick2_ochl(ax, df_300427['Open'], df_300427['Close'], df_300427['High'],
                      df_300427['Low'], width=0.6, colorup='r', colordown='g', alpha=0.75)
plt.rcParams['font.sans-serif']=['Microsoft JhengHei']
ax.plot(sma_10, label='10日均线')
ax.plot(sma_30, label='30日均线')

mpf.volume_overlay(ax2, df_300427['Open'], df_300427['Close'], df_300427['Volume'], colorup='r', colordown='g', width=0.5, alpha=0.8)
ax2.set_xticks(range(0, len(df_300427.index), 10))
ax2.set_xticklabels(df_300427.index[::10])

ax.legend();

#加上kd值

sma_10 = tl.SMA(np.array(df_300427['Close']), 10)
sma_30 = tl.SMA(np.array(df_300427['Close']), 30)
df_300427['k'], df_300427['d'] = tl.STOCH(df_300427['High'], df_300427['Low'], df_300427['Close'])
df_300427['k'].fillna(value=0, inplace=True)
df_300427['d'].fillna(value=0, inplace=True)

fig = plt.figure(figsize=(24, 20))
ax = fig.add_axes([0,0.3,1,0.4])
ax2 = fig.add_axes([0,0.2,1,0.1])
ax3 = fig.add_axes([0,0,1,0.2])

ax.set_xticks(range(0, len(df_300427.index), 10))
ax.set_xticklabels(df_300427.index[::10])
mpf.candlestick2_ochl(ax, df_300427['Open'], df_300427['Close'], df_300427['High'],
                      df_300427['Low'], width=0.6, colorup='r', colordown='g', alpha=0.75)
plt.rcParams['font.sans-serif']=['Microsoft JhengHei']
ax.plot(sma_10, label='10日均线')
ax.plot(sma_30, label='30日均线')

ax2.plot(df_300427['k'], label='K值')
ax2.plot(df_300427['d'], label='D值')
ax2.set_xticks(range(0, len(df_300427.index), 10))
ax2.set_xticklabels(df_300427.index[::10])

mpf.volume_overlay(ax3, df_300427['Open'], df_300427['Close'], df_300427['Volume'], colorup='r', colordown='g', width=0.5, alpha=0.8)
ax3.set_xticks(range(0, len(df_300427.index), 10))
ax3.set_xticklabels(df_300427.index[::10])

ax.legend();
ax2.legend();

plt.show()

【参考】:

1、https://www.cnblogs.com/zhuminghui/p/9196793.html

2、https://www.cnblogs.com/52shaidan/p/11125233.html

3、https://www.zhihu.com/question/39951384

4、https://zhuanlan.zhihu.com/p/36219963

5、https://www.ricequant.com/welcome/

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值