Python量化交易之二_工具库

十年前有个朋友的毕业论文题目与股票数据分析相关。于是他用程序实现了解析通达信数据、计算统计指标、绘图……结果时间过去大半,核心的分析功能还没开始实现。

而现在使用Python语言,下载数据、计算统计指标、绘图,以及数据分析都有现成的工具,我们不用再去关注细节,可以将主要精力用于组合工具和实验。本篇将介绍量化交易相关的常用三方库。

1.常用三方库

  • 数据分析工具
    Pandas:数据表工具
    Numpy:数学计算工具
    Scipy:数学计算工具
    Sklearn:机器学习工具

  • 下载数据
    TuShare:读取国内股票数据
    Pandas_reader:读取国内外股票数据

  • 回溯框架
    PyAlgoTrade:离线的分析回溯工具,PyAlgoTrade-cn为A股版本
    Zipline:分析回溯工具

  • 计算技术指标
    TA-Lib:计算技术指标,底层由C语言实现,支持150多个函数
    Pandas_talib:计算技术指标,由Python语言实现,支持30多个函数

  • 金融绘图
    Mpl_finance:金融绘图工具,原matplotlib中的子模块

数据分析工具比较通用,不在股票专题中介绍;上一篇在数据下载方法中介绍了Tushare和Pandas_reader软件的用法,下一篇将讲解回溯工具,本篇则介绍计算技术指标和金融相关的绘图方法。

2.计算技术指标

a) 技术指标

Ta-lib支持150多个函数,而pandas_talib也加入了一些量价结合的新功能,可以二者配合使用,通过分析pandas_talib源码可以看到功能的具体实现方法。
Ta-lib从各种均线到蜡烛图指标,能想到的差不多都有,分成以下几类:

  • Overlap Studies(重叠研究类)
  • Momentum Indicators(动量指标类)
  • Volume Indicators(成交量指标类)
  • Volatility Indicators(波动性指标类)
  • Price Transform(价格指标类)
  • Cycle Indicators(周期指标类)
  • Pattern Recognition(形态识别类)
  • Statistic Functions(统计函数类)
  • Math Transform(数学变换类)
  • Math Operators(数学运算符类)

详见talib中文文档:https://github.com/HuaRongSAO/talib-document,点开每个指标都有中文说明及例程。

b) 直接安装

由于ta-lib底层依赖C语言实现,在Windows系统中安装过程相对比较麻烦,我在ubuntu系统中安装。

$ sudo pip install Ta-Lib
$ sudo pip install git+git://github.com/femtotrader/pandas_talib.git 

如果有以下错误提示:
talib/_ta_lib.c:526:28: fatal error: ta-lib/ta_defs.h
这是由于没有底层依赖C库支持,在Ubuntu系统中用以下方法安装。

$ wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
$ tar xvzf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib/
$ ./configure
$ sudo make install
$ sudo ldconfig

c) Github下载

$ git clone https://github.com/mrjbq7/ta-lib.git
$ git clone https://github.com/femtotrader/pandas_talib.git

d) 使用方法

输入数据默认为Numpy的ndarray格式,而Pandas也是基于Numpy,基本能直接使用,使用方法形如: real = talib.ROC(df.close, timeperiod=10)

3.金融绘图

从matplotlib2.2.0版本开始,matplotlib.finance已经从matplotlib中剥离出来,名为mpl_finance,需要单独安装。

a) 安装

$ sudo pip install https://github.com/matplotlib/mpl_finance/archive/master.zip

b) 使用

下例为使用tushare下载002230,并绘制K线图:

from matplotlib import pyplot as plt
import mpl_finance as mpf
from matplotlib.pylab import date2num
import pandas as pd
import datetime
import tushare as ts
%matplotlib inline

def draw(stock):
 stock['datestr'] = stock['date'].apply(lambda x: date2num(datetime.datetime.strptime(x,'%Y-%m-%d')))
 quotes = stock[['datestr','open','high','low','close']]
 fig, ax = plt.subplots(figsize=(12,8))
 fig.subplots_adjust(bottom=0.1)
 ax.xaxis_date()
 plt.xticks(rotation=45) #日期显示的旋转角度
 mpf.candlestick_ohlc(ax, quotes.values, width=0.7, colorup='r', colordown='g')

 # 格式是:date,open,high,low,close, 格式为list
 plt.grid(True)
 plt.show()

df = ts.get_hist_data('002230', start='2019-08-01')
df = df.reset_index()
draw(df)

程序运行结果如下图所示:

学任何一门复杂的技术都需要时间和精力,可以说无捷径可走,操作策略也需要经过反复验证后再使用,不懂就做一般都会被割韭菜,所以要么花时间精力,要么交给适合的人,要么别碰。

发布了322 篇原创文章 · 获赞 246 · 访问量 119万+

猜你喜欢

转载自blog.csdn.net/xieyan0811/article/details/100863353
今日推荐