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)

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容

  • numpy介绍:一个用python实现的科学计算包。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广...
    readilen阅读 8,939评论 0 32
  • 1. 股票数据分析  股票数据分析和一般数据分析一样,用到数据清洗分析,机器学习深度学习,自然语言处理等技术,当我...
    xieyan0811阅读 7,026评论 1 3
  • 市场有自己的时间观念。股票投资就如同任何人类互动一样,耐心是一项美德。——罗伯特·D·爱德华《股市趋势技术分析》 ...
    CuteHand阅读 41,131评论 0 18
  • 要求: 在第1部分实验基础上实现进程的分页式内存分配和地址转换过程,并进一步实现请求分页式存储分配和地址转换过程。...
    阿拉39阅读 538评论 0 0
  • 商家在刚开始玩社群时,由于新建社群的创意亮点吸引了一部分粉丝的关注和加入,但是新的东西难免会有一些不够完善的地方,...
    零叫兽阅读 538评论 0 2