linux 文件夹复权,GitHub - 416104443/QUANTAXIS: QUANTAXIS 量化金融框架 Quantitative Financial Framework 中小型策略团队解...

QUANTAXIS 量化金融策略框架

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f77617463686572732f79757469616e7375742f7175616e74617869732e7376673f7374796c653d736f6369616c266c6162656c3d576174636865727326

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f79757469616e7375742f7175616e74617869732e7376673f7374796c653d736f6369616c266c6162656c3d5374617226

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f79757469616e7375742f7175616e74617869732e7376673f7374796c653d736f6369616c266c6162656c3d466f726b26

[点击右上角Star和Watch来跟踪项目进展! 点击Fork来创建属于你的QUANTAXIS!]

687474703a2f2f6f736e68616b6d61792e626b742e636c6f7564646e2e636f6d2f4d61696e5f312e676966

687474703a2f2f69312e7069696d672e636f6d2f313934392f363263353130646237393135383337612e706e67

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f56657273696f6e2d253230302e352e362d6f72616e67652e737667

68747470733a2f2f7472617669732d63692e6f72672f79757469616e7375742f5155414e54415849532e7376673f6272616e63683d6d6173746572

68747470733a2f2f62616467652e776166666c652e696f2f79757469616e7375742f5155414e54415849532e7376673f6c6162656c3d7265616479267469746c653d5265616479

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f746563682d737461636b2d3036393066612e7376673f7374796c653d666c6174

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5141532d253230302e302e382d62726f776e2e737667

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507970692d253230302e352e362d626c75652e737667

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d253230332e362f332e352f332e342f77696e2f7562756e74752d6461726b677265792e737667

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e706d2d253230302e342e302d79656c6c6f772e737667

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f506f776572656425323062792d25323025323079757469616e7375742d7265642e737667

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d2532304d49542d627269676874677265656e2e737667

欢迎加群讨论: 群链接

QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案. 我们通过高度解耦的模块化以及标准化协议,可以快速的实现面向场景的定制化解决方案.QUANTAXIS是一个渐进式的开放式框架,你可以根据自己的需要,引入自己的数据,分析方案,可视化过程等,也可以通过RESTful接口,快速实现多人局域网/广域网内的协作.

======

已经实现:

日线(自1990年)回测 [定点复权] (T+1)

分钟线 [1min/5min/15min/30min/60min]回测 (T+1)

股指期货日线(T+0)/指数日线/ETF日线

股指期货分钟线(T+0) / 指数分钟线/ETF分钟线 [1min/5min/15min/30min/60min]

基于tushare/pytdx/各种爬虫的数据源

实时交易数据

基于Vue.js的前端网站

自定义的数据结构

指标计算

板块数据(0.5.1新增)

预计实现:

文档更新

基本面数据

框架结构

687474703a2f2f69312e7069696d672e636f6d2f3536373537312f646333633831316135616663623466622e706e67

部署问题:

Windows/Linux(ubuntu) 已测试通过

python3.6(开发环境) python2 回测框架不兼容(attention! 之后会逐步用更多高级语法) [*] 如果需要交易,请下载32位的python3.6

nodejs 需要安装>7的版本,来支持es6语法

mongodb是必须要装的

强烈推荐mongodb的可视化库 robomongo 百度即可下载

一个简易demo(需要先安装并启动mongodb,python版本需要大于3)

git

windows

百度搜索:git 下载--exe安装

linux

自带 无需安装

MongoDB

Windows

下载地址 MongoDB 64位 3.4.7:下载链接

可以使用迅雷下载加速

下载完毕以后双击MSI文件安装,一般会安装到C:\Program Files\MongoDB\Server\3.4\bin

MongoDB需要一个data目录一个logo目录,一般我们会在D:中新建一个data目录

# 打开Powershell(Win键+R 在运行中输入Powershell)

cd D:

md data

# 然后在data目录下 新建一个data目录用于存放mongo的数据,log目录用于存放log

cd data

md data

md log

# 到Mongo的程序文件夹下,使用命令

cd C:\Program Files\MongoDB\Server\3.4\bin

# 用mongod 命令安装

.\mongod.exe --dbpath D:\data\data --logpath D:\data\log\mongo.log --httpinterface --rest --serviceName 'MongoDB' --install

# 启动mongodb服务

net start MongoDB

linux

Ubuntu

# 添加源

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

# Ubuntu 12.04

echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

# Ubuntu 14.04

echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

# Ubuntu 16.04

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

# 更新源

sudo apt-get update

# 安装MongoDB

sudo apt-get install -y mongodb-org

# 开启MongoDB服务

sudo service mongod start

Nodejs

windows

直接下载exe 按要求安装即可 最新版本 8.2.1

Linux

Ubuntu

sudo apt-get install npm

sudo npm install n -g

sudo n latest

sudo npm install npm -g #更新npm

sudo npm install forever -g #安装一个全局的forever 用于之后启动

linux/mac下的nodejs有一个版本管理包 叫n 需要全局安装 -g

所以无论装了什么版本的nodejs 只需要npm install n -g 就行

python

Linux

#install python3.6 in linux

sudo add-apt-repository ppa:jonathonf/python-3.6

sudo apt-get update

sudo apt-get install python3.6

wget https://bootstrap.pypa.io/get-pip.py

sudo -H python3.6 get-pip.py

Windows

建议直接安装Anaconda包,记住在安装时 选择添加path不然后面会很麻烦

python的一些需要编译的包的安装

安装TA-Lib

Ubuntu

sudo apt-get update

sudo apt-get install python3.6-dev

# 装talib前要先装numpy

sudo python3.6 -m pip install numpy -i https://pypi.doubanio.com/simple

wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz

tar -xzvf ta-lib-0.4.0-src.tar.gz

cd ta-lib

./configure --prefix=/usr

make

sudo make install

cd ..

sudo python3.6 -m pip install TA-Lib

# 安装剩余的依赖项

sudo python3.6 -m pip install -r requirements.txt -i https://pypi.doubanio.com/simple

sudo python3.6 -m pip install tushare<0.9

Windows

# 访问http://www.lfd.uci.edu/~gohlke/pythonlibs/  下载对应的whl安装包

# pip install xxxxx(文件名).whl

安装QUANTAXIS

git clone https://github.com/yutiansut/quantaxis

cd quantaxis .

pip install -r requirements.txt -i https://pypi.doubanio.com/simple

pip install tushare<0.9

(sudo) pip install -e . # 一定要用这种方法,python setup.py install方法无法解压 安装在本目录下的开发模式

安装QUANATXIS_WebKit

cd QUANTAXIS_Webkit

(sudo) npm install forever -g

# 先去后台项目的文件夹安装

cd backend

(sudo) npm install

# 再去前端的文件夹安装

cd ..

cd web

(sudo) npm install

启动QUANTAXIS CLI 并进行数据的初始化存储

在命令行输入 quantaxis 进去quantaxis CLI

quantaxis> save all

随意新建一个目录:(不要跟QUANTAXIS文件夹在一个目录)

在命令行输入 quantaxis 进去quantaxis CLI

输入examples 在当前目录下生成一个示例策略

运行这个示例策略:

python backtest.py

一般而言 日线4个组合的回测(一年)在14-17秒左右 5min级别4个组合的回测(一年)在3-4分钟左右

启动QUANTAXIS_Webkit来查看回测的结果

启动网络插件(nodejs 版本号需要大于6,最好是7)

cd QUANTAXIS_Webkit

# 先启动后台服务器  在3000端口

cd backend

(sudo) forever start bin/www

cd ..

# 再启动前端服务器  在8080端口

cd web

(sudo) npm run dev 或者 forever start build/dev-server.js

会自动启动localhost:8080网页端口,用账户名admin,密码admin登录

(注明: admin注册是在python的QUANTAXIS save all时候执行的)

另外 如果save all已经执行,依然登录不进去 点击插件状态 查看3000端口是否打开

登录后点击左上角 在模拟回测的选择界面的用户名搜索框输入回测的时候的用户名(默认是admin),回车

选择和你回测策略中名称一致的结果即可进入可视化界面

更新QUANTAXIS

由于目前项目还在开发中,所以需要使用Git来更新项目:

点击右上角的Star和watch来持续跟踪项目进展~

常规更新:

cd QUANTAXIS

git pull

如果本地有进行更改,遇到更新失败:

(注意: 最好不要在本地修改该项目文件,如果需要做一些自定义功能,可以进fork[在项目的右上角])

git reset --hard origin/master

git pull

项目捐赠

写代码不易...写文档最难过...请作者喝杯咖啡呗?

687474703a2f2f6f736e68616b6d61792e626b742e636c6f7564646e2e636f6d2f2545352542452541452545342542462541312545352539422542452545372538392538375f32303137303932333133323031382e6a7067

(PS: 支付的时候 请带上你的名字/昵称呀 会维护一个赞助列表~ )

关于QUANTAXIS基金

第一天挂上项目捐赠就有童靴赞助支持蟹蟹蟹蟹

准备把项目捐赠的钱 以及我自己会补一部分进来 维护一个基金会 主要是奖励文档编写和bug提交的童鞋们~

一些基础的api介绍

QUANTAXIS 是一个渐进式的框架,也就是说 你可以很简单的只使用回测部分,也可以逐步深入开发,从数据源获取/数据库替代,到回测的引擎的修改,自定义交易模式,事件修改等等.

在0.5.0以前,api都不是很稳定,所以文档这块比较欠缺,暂时先给一些常用的api说明:

QUANTAXIS.QABacktest 的 api

from QUANTAXIS import QA_Backtest as QB

#常量:

QB.backtest_type #回测类型 day/1min/5min/15min/30min/60min/index_day/index_1min/index_5min/index_15min/index_30min/index_60min/

QB.account.message #当前账户消息

QB.account.cash #当前可用资金

QB.account.hold # 当前账户持仓

QB.account.history #当前账户的历史交易记录

QB.account.assets #当前账户总资产

QB.account.detail #当前账户的交易对账单

QB.account.init_assest #账户的最初资金

QB.strategy_gap #前推日期

QB.strategy_name #策略名称

QB.strategy_stock_list #回测初始化的时候 输入的一个回测标的

QB.strategy_start_date #回测的开始时间

QB.strategy_end_date #回测的结束时间

QB.today #在策略里面代表策略执行时的日期

QB.now #在策略里面代表策略执行时的时间

QB.benchmark_code #策略业绩评价的对照行情

QB.backtest_print_log = True # 是否在屏幕上输出结果

QB.setting.QA_setting_user_name = str('admin') #回测账户

QB.setting.QA_setting_user_password = str('admin') #回测密码

#函数:

#获取市场(基于gap)行情:

QB.QA_backtest_get_market_data(QB,code,QB.today/QB.now)

- 可选项: gap_

- 可选项: type_ 'lt','lte' 默认是lt

#获取单个bar

QB.QA_backtest_get_market_data_bar(QB,code,QB.today/QB.now)

#拿到开高收低量

Open,High,Low,Close,Volume=QB.QA_backtest_get_OHLCV(QB,QB.QA_backtest_get_market_data(QB,item,QB.today))

#获取市场自定义时间段行情:

QA.QA_fetch_stock_day(code,start,end,model)

#一键平仓:

QB.QA_backtest_sell_all(QB)

#报单:

QB.QA_backtest_send_order(QB, code,amount,towards,order: dict)

"""

order有三种方式:

1.限价成交 order['bid_model']=0或者l,L

注意: 限价成交需要给出价格:

order['price']=xxxx

2.市价成交 order['bid_model']=1或者m,M,market,Market [其实是以bar的开盘价成交]

3.严格成交模式 order['bid_model']=2或者s,S

及 买入按bar的最高价成交 卖出按bar的最低价成交

3.收盘价成交模式 order['bid_model']=3或者c,C

"""

#查询当前一只股票的持仓量

QB.QA_backtest_hold_amount(QB,code)

#查询当前一只股票的可卖数量

QB.QA_backtest_sell_available(QB,code)

#查询当前一只股票的持仓平均成本

QB.QA_backtest_hold_price(QB,code)

QUANTAXIS的核心数据结构

QA_DataStruct

属性用@property装饰器装饰,进行懒运算 提高效率

DataStruct具有的功能:

数据容器

数据变换 [分拆/合并/倒序] split/merge/reverse

数据透视 pivot

数据筛选 select_time/select_time_with_gap/select_code/get_bar

数据复权 to_qfq/to_hfq

数据显示 show

格式变换 to_json/to_pandas/to_list/to_numpy

数据库式查询 query

画图 plot

计算指标 add_func

QA_DataStruct_Stock_block

(属性)该类下的所有板块名称 block_name

查询某一只股票所在的所有板块 get_code(code)

查询某一个板块下的所有股票 get_block(block)

展示当前类下的所有数据 show

我们可以通过

import QUANTAXIS as QA

# QA.QA_fetch_stock_day_adv

# QA.QA_fetch_stock_min_adv

# QA.QA_fetch_index_day_adv

# QA.QA_fetch_index_min_adv

day线的参数是code, start, end

min线的参数是code, start, end, type_='1min'

其中 code 可以是一个股票,也可以是一列股票(list)

取一个股票的数据

QA.QA_fetch_stock_day_adv('000001','2017-01-01','2017-10-01')

In [5]: QA.QA_fetch_stock_day_adv('000001','2017-01-01','2017-10-01')

Out[5]: QA_DataStruct_Stock_day with 1 securities

取多个股票的数据

QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-01-01','2017-10-01')

In [6]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-01-01','2017-10-01')

Out[6]: QA_DataStruct_Stock_day with 2 securities

显示结构体的数据 .data

In [10]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').data

Out[10]:

code open high low close volume date

date code

2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-20

2017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-21

2017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-22

2017-09-25 000001 000001 11.44 11.45 11.18 11.29 532391.0 2017-09-25

2017-09-26 000001 000001 11.26 11.30 10.96 11.05 967460.0 2017-09-26

2017-09-27 000001 000001 11.01 11.08 10.90 10.93 727188.0 2017-09-27

2017-09-28 000001 000001 10.98 10.98 10.82 10.88 517220.0 2017-09-28

2017-09-29 000001 000001 10.92 11.16 10.86 11.11 682280.0 2017-09-29

2017-09-20 000002 000002 28.50 29.55 28.00 28.73 613095.0 2017-09-20

2017-09-21 000002 000002 28.50 29.06 27.75 28.40 536324.0 2017-09-21

2017-09-22 000002 000002 28.39 28.67 27.52 27.81 423093.0 2017-09-22

2017-09-25 000002 000002 27.20 27.20 26.10 26.12 722702.0 2017-09-25

2017-09-26 000002 000002 26.12 27.22 26.10 26.76 593044.0 2017-09-26

2017-09-27 000002 000002 27.00 27.28 26.52 26.84 367534.0 2017-09-27

2017-09-28 000002 000002 27.00 27.15 26.40 26.41 262347.0 2017-09-28

2017-09-29 000002 000002 26.56 26.80 26.00 26.25 345752.0 2017-09-29

显示结构体的开/高/收/低 .open/.high/.close/.low

In [5]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').high

Out[5]:

date code

2017-09-20 000001 11.37

2017-09-21 000001 11.51

2017-09-22 000001 11.52

2017-09-25 000001 11.45

2017-09-26 000001 11.30

2017-09-27 000001 11.08

2017-09-28 000001 10.98

2017-09-29 000001 11.16

2017-09-20 000002 29.55

2017-09-21 000002 29.06

2017-09-22 000002 28.67

2017-09-25 000002 27.20

2017-09-26 000002 27.22

2017-09-27 000002 27.28

2017-09-28 000002 27.15

2017-09-29 000002 26.80

Name: high, dtype: float64

数据结构复权to_qfq()/to_hfq()

返回的是一个DataStruct,用.data展示返回的数据的结构

其中DataStruct.if_fq的属性会改变

In [4]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').to_qfq().data

Out[4]:

code open high low close volume date \

date code

2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-20

2017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-21

2017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-22

2017-09-25 000001 000001 11.44 11.45 11.18 11.29 532391.0 2017-09-25

2017-09-26 000001 000001 11.26 11.30 10.96 11.05 967460.0 2017-09-26

2017-09-27 000001 000001 11.01 11.08 10.90 10.93 727188.0 2017-09-27

2017-09-28 000001 000001 10.98 10.98 10.82 10.88 517220.0 2017-09-28

2017-09-29 000001 000001 10.92 11.16 10.86 11.11 682280.0 2017-09-29

2017-09-20 000002 000002 28.50 29.55 28.00 28.73 613095.0 2017-09-20

2017-09-21 000002 000002 28.50 29.06 27.75 28.40 536324.0 2017-09-21

2017-09-22 000002 000002 28.39 28.67 27.52 27.81 423093.0 2017-09-22

2017-09-25 000002 000002 27.20 27.20 26.10 26.12 722702.0 2017-09-25

2017-09-26 000002 000002 26.12 27.22 26.10 26.76 593044.0 2017-09-26

2017-09-27 000002 000002 27.00 27.28 26.52 26.84 367534.0 2017-09-27

2017-09-28 000002 000002 27.00 27.15 26.40 26.41 262347.0 2017-09-28

2017-09-29 000002 000002 26.56 26.80 26.00 26.25 345752.0 2017-09-29

preclose adj

date code

2017-09-20 000001 NaN 1.0

2017-09-21 000001 11.29 1.0

2017-09-22 000001 11.46 1.0

2017-09-25 000001 11.44 1.0

2017-09-26 000001 11.29 1.0

2017-09-27 000001 11.05 1.0

2017-09-28 000001 10.93 1.0

2017-09-29 000001 10.88 1.0

2017-09-20 000002 NaN 1.0

2017-09-21 000002 28.73 1.0

2017-09-22 000002 28.40 1.0

2017-09-25 000002 27.81 1.0

2017-09-26 000002 26.12 1.0

2017-09-27 000002 26.76 1.0

2017-09-28 000002 26.84 1.0

2017-09-29 000002 26.41 1.0

数据透视 .pivot()

In [6]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').pivot('open')

Out[6]:

code 000001 000002

date

2017-09-20 11.14 28.50

2017-09-21 11.26 28.50

2017-09-22 11.43 28.39

2017-09-25 11.44 27.20

2017-09-26 11.26 26.12

2017-09-27 11.01 27.00

2017-09-28 10.98 27.00

2017-09-29 10.92 26.56

数据的时间筛选.select_time(start,end)

In [10]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_time('2017-09-20','2017-09-25')

Out[10]: QA_DataStruct_Stock_day with 2 securities

In [11]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_time('2017-09-20','2017-09-25').data

Out[11]:

code open high low close volume date

date code

2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-20

2017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-21

2017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-22

2017-09-25 000001 000001 11.44 11.45 11.18 11.29 532391.0 2017-09-25

2017-09-20 000002 000002 28.50 29.55 28.00 28.73 613095.0 2017-09-20

2017-09-21 000002 000002 28.50 29.06 27.75 28.40 536324.0 2017-09-21

2017-09-22 000002 000002 28.39 28.67 27.52 27.81 423093.0 2017-09-22

2017-09-25 000002 000002 27.20 27.20 26.10 26.12 722702.0 2017-09-25

数据按时间往前/往后推 select_time_with_gap(time,gap,methods)

time是你选择的时间

gap是长度 (int)

methods有 '<=','lte','','gt','>=','gte'的选项

In [14]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_time_with_gap('2017-09-20',2,'gt')

Out[14]: QA_DataStruct_Stock_day with 2 securities

In [15]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_time_with_gap('2017-09-20',2,'gt').data

Out[15]:

code open high low close volume date

date code

2017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-21

2017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-22

2017-09-21 000002 000002 28.50 29.06 27.75 28.40 536324.0 2017-09-21

2017-09-22 000002 000002 28.39 28.67 27.52 27.81 423093.0 2017-09-22

选取结构组里面某一只股票select_code(code)

In [16]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_code('000001')

Out[16]: QA_DataStruct_Stock_day with 1 securities

In [17]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_code('000001').data

Out[17]:

code open high low close volume date

date code

2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-20

2017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-21

2017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-22

2017-09-25 000001 000001 11.44 11.45 11.18 11.29 532391.0 2017-09-25

2017-09-26 000001 000001 11.26 11.30 10.96 11.05 967460.0 2017-09-26

2017-09-27 000001 000001 11.01 11.08 10.90 10.93 727188.0 2017-09-27

2017-09-28 000001 000001 10.98 10.98 10.82 10.88 517220.0 2017-09-28

2017-09-29 000001 000001 10.92 11.16 10.86 11.11 682280.0 2017-09-29

取某一只股票的某一个时间的bar(code,time,if_trade)

第三个选项 默认是True

第三选项的意义在于,如果出现了停牌,参数如果是True 那么就会返回空值 而如果是False,就会返回停牌前最后一个交易日的值

In [18]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').get_bar('000001','2017-09-20',True)

Out[18]: QA_DataStruct_Stock_day with 1 securities

In [19]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').get_bar('000001','2017-09-20',True).data

Out[19]:

code open high low close volume date

date code

2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-20

画图 plot(code)

如果是()空值 就会把全部的股票都画出来

In [20]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').plot()

QUANTAXIS>> The Pic has been saved to your path: .\QA_stock_day_codepackage_bfq.html

In [21]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').plot('000001')

QUANTAXIS>> The Pic has been saved to your path: .\QA_stock_day_000001_bfq.html

687474703a2f2f6f736e68616b6d61792e626b742e636c6f7564646e2e636f6d2f515125453625383825414125453525394225424532303137313030343132353333362e706e67

QUANTAXIS的指标系统

QUANTAXIS的核心数据结构有一个方法叫add_func(func,*args,**kwargs),作为一个指标入口,会返回一个和DataStruct中股票数量一致长度的list

QUANTAXIS有两种类型的指标:

基础指标(输入为Series的指标)

应用级指标(可应用于DataStruct的指标)

其中,基础指标是为了应用级指标做准备的,及对应于Series的分析和dataframe的分析的关系

基础类指标 [基本和同花顺/通达信一致]

import QUANTAXIS as QA

QA.MA(Series, N)

QA.EMA(Series, N)

QA.DIFF(Series, N=1)

QA.HHV(Series, N)

QA.LLV(Series, N)

QA.SUM(Series, N)

QA.ABS(Series)

QA.MAX(A, B)

QA.MIN(A, B)

QA.CROSS(A, B)

QA.COUNT(COND, N)

QA.IF(COND, V1, V2)

QA.REF(Series, N)

QA.STD(Series, N)

QA.AVEDEV(Series, N)

QA.BBIBOLL(Series, N1, N2, N3, N4, N, M)

应用级指标 add_func(func)

import QUANTAXIS as QA

QA.QA_indicator_OSC(DataFrame, N, M)

QA.QA_indicator_BBI(DataFrame, N1, N2, N3, N4)

QA.QA_indicator_PBX(DataFrame, N1, N2, N3, N4, N5, N6)

QA.QA_indicator_BOLL(DataFrame, N)

QA.QA_indicator_ROC(DataFrame, N, M)

QA.QA_indicator_MTM(DataFrame, N, M)

QA.QA_indicator_KDJ(DataFrame, N=9, M1=3, M2=3)

QA.QA_indicator_MFI(DataFrame, N)

QA.QA_indicator_ATR(DataFrame, N)

QA.QA_indicator_SKDJ(DataFrame, N, M)

QA.QA_indicator_WR(DataFrame, N, N1)

QA.QA_indicator_BIAS(DataFrame, N1, N2, N3)

QA.QA_indicator_RSI(DataFrame, N1, N2, N3)

QA.QA_indicator_ADTM(DataFrame, N, M)

QA.QA_indicator_DDI(DataFrame, N, N1, M, M1)

QA.QA_indicator_CCI(DataFrame, N=14)

自己写一个指标:

比如 绝路航标

import QUANTAXIS as QA

def JLHB(data, m=7, n=5):

"""

通达信定义

VAR1:=(CLOSE-LLV(LOW,60))/(HHV(HIGH,60)-LLV(LOW,60))*80;

B:SMA(VAR1,N,1);

VAR2:SMA(B,M,1);

绝路航标:IF(CROSS(B,VAR2) AND B<40,50,0);

"""

var1 = (data['close'] - QA.LLV(data['low'], 60)) / \

(QA.HHV(data['high'], 60) - QA.LLV(data['low'], 60)) * 80

B = QA.MA(var1, m)

var2 = QA.MA(B, n)

if QA.CROSS(B,var2) and B[-1]<40:

return 1

else:

return 0

# 得到指标

QA.QA_fetch_stock_day_adv('000001','2017-01-01','2017-01-31').to_qfq().add_func(JLHB)

QUANTAXIS的行情分析/研究用

主要是针对行情的各种统计学特征/指标等分析,支持QA_DataStruct_系列的add_func()功能

接收DataFrame形式的行情以及QUANTAXIS.QADATA格式的行情

目前有:

(属性)

一阶差分

样本方差

方差

标准差

样本标准差

平均数

调和平均数

众数

振幅(极差)

偏度

峰度

百分比变化

平均绝对偏差

import QUANTAXIS as QA

data=QA.QA_fetch_stock_day_adv('600066','2013-12-01','2017-10-01') #[可选to_qfq(),to_hfq()]

s=QA.QA_Analysis_stock(data)

# s 的属性是( < QA_Analysis_Stock > )

s.open # 开盘价序列

s.close # 收盘价序列

s.high # 最高价序列

s.low # 最低价序列

s.vol # 量

s.volume # 同vol

s.date # 日期

s.datetime

s.index # 索引

s.price # 平均价(O+H+L+C)/4

s.mean # price的平均数

s.max # price的最大值

s.min # price的最小值

s.mad # price的平均绝对偏差

s.mode # price的众数(没啥用)

s.price_diff # price的一阶差分

s.variance # price的方差

s.pvariance # price的样本方差

s.stdev # price的标准差

s.pstdev # price的样本标准差

s.mean_harmonic # price的调和平均数

s.amplitude #price的振幅[极差]

s.skewnewss # price的峰度 (4阶中心距)

s.kurtosis # price的偏度 (3阶中心距)

s.pct_change # price的百分比变化序列

s.add_func(QA.QA_indicator_CCI) # 指标计算, 和DataStruct用法一致

QUANTAXIS的api

import QUANTAXIS as QA

"""

QA.QA_fetch_get_ 系列:

从网上获取数据

"""

QA.QA_util_log_info('日线数据')

QA.QA_util_log_info('不复权')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_day('00001','2017-01-01','2017-01-31')

QA.QA_util_log_info('前复权')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_day('00001','2017-01-01','2017-01-31','01')

QA.QA_util_log_info('后复权')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_day('00001','2017-01-01','2017-01-31','02')

QA.QA_util_log_info('定点前复权')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_day('00001','2017-01-01','2017-01-31','03')

QA.QA_util_log_info('定点后复权')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_day('00001','2017-01-01','2017-01-31','04')

QA.QA_util_log_info('分钟线')

QA.QA_util_log_info('1min')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_min('000001','2017-07-01','2017-08-01','1min')

QA.QA_util_log_info('5min')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_min('000001','2017-07-01','2017-08-01','5min')

QA.QA_util_log_info('15min')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_min('000001','2017-07-01','2017-08-01','15min')

QA.QA_util_log_info('除权除息')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_xdxr('00001')

QA.QA_util_log_info('股票列表')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_list('stock')

QA.QA_util_log_info('指数列表')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_list('index')

QA.QA_util_log_info('全部列表')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_list('all')

QA.QA_util_log_info('指数日线')

data=QA.QAFetch.QATdx.QA_fetch_get_index_day('000001','2017-01-01','2017-09-01')

QA.QA_util_log_info('指数分钟线')

QA.QA_util_log_info('1min')

data=QA.QAFetch.QATdx.QA_fetch_get_index_min('000001','2017-07-01','2017-08-01','1min')

QA.QA_util_log_info('5min')

data=QA.QAFetch.QATdx.QA_fetch_get_index_min('000001','2017-07-01','2017-08-01','5min')

QA.QA_util_log_info('15min')

data=QA.QAFetch.QATdx.QA_fetch_get_index_min('000001','2017-07-01','2017-08-01','15min')

QA.QA_util_log_info('最后一次交易价格')

QA.QA_util_log_info('参数为列表')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_latest(['000001','000002'])

QA.QA_util_log_info('参数为一只股票')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_latest('000001')

QA.QA_util_log_info('实时价格')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_realtime(['000001','000002'])

QA.QA_util_log_info('分笔成交')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_transaction('000001','2001-01-01','2001-01-15')

QA.QA_util_log_info('板块数据')

data=QA.QAFetch.QATdx.QA_fetch_get_stock_block()

"""

QA.QA_fetch_ 系列

从本地数据库获取数据

"""

# 股票

QA_fetch_stock_day_adv(code,start,end)

QA_fetch_stock_min_adv(code,start,end,type_='1min') # type_可以选1min/5min/15min/30min/60min

# 指数/ETF

QA_fetch_index_day_adv(code,start,end)

QA_fetch_index_min_adv(code,start,end,type_='1min') # type_可以选1min/5min/15min/30min/60min

# 板块

QA_fetch_stock_block_adv(code)

回测Webkit插件概览

687474703a2f2f69322e6d75696d672e636f6d2f3536373537312f373336626134616464613966616338352e706e67

687474703a2f2f69322e6d75696d672e636f6d2f3538383932362f333435653932346134356361653665352e706e67

687474703a2f2f69312e7069696d672e636f6d2f313934392f376236653266633334373232306637622e706e67

687474703a2f2f69312e7069696d672e636f6d2f3536373537312f303962643035633336393866326433382e706e67

687474703a2f2f69312e7069696d672e636f6d2f3536373537312f303533616333653338353066386636302e706e67

687474703a2f2f6f736e68616b6d61792e626b742e636c6f7564646e2e636f6d2f7175616e74617869732532306d61726b646f776e2e676966

QUANTAXIS 标准化协议和未来协议

QUANTAXIS-Stardand-Protocol 版本号0.0.8

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值