欢迎加群讨论: 群链接
QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案. 我们通过高度解耦的模块化以及标准化协议,可以快速的实现面向场景的定制化解决方案.QUANTAXIS是一个渐进式的开放式框架,你可以根据自己的需要,引入自己的数据,分析方案,可视化过程等,也可以通过RESTful接口,快速实现多人局域网/广域网内的协作.
======
已经实现:
- 日线(自1990年)回测 [定点复权] (T+1)
- 分钟线 [1min/5min/15min/30min/60min]回测 (T+1)
- 股指期货日线(T+0)
- 股指期货分钟线 [1min/5min/15min/30min/60min] (T+0)
- 基于tushare/pytdx/各种爬虫的数据源
- 实时交易数据
- 基于Vue.js的前端网站
预计实现:
- 文档更新
- 基本面数据
- 指标数据
- Windows/Linux(ubuntu) 已测试通过
- python3.6(开发环境) python2 回测框架不兼容(attention! 之后会逐步用更多高级语法) [*] 如果需要交易,请下载32位的python3.6
- nodejs 需要安装>7的版本,来支持es6语法
- mongodb是必须要装的
- 强烈推荐mongodb的可视化库 robomongo 百度即可下载
一个简易demo(需要先安装并启动mongodb,python版本需要大于3)
#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
#
git clone https://github.com/yutiansut/quantaxis
cd quantaxis
(sudo) pip install -e . # 一定要用这种方法,python setup.py install方法无法解压 安装在本目录下的开发模式
在命令行输入 quantaxis 进去quantaxis CLI
quantaxis> save all
随意新建一个目录:
在命令行输入 quantaxis 进去quantaxis CLI
输入examples 在目录下生成一个示例策略
python backtest.py
启动网络插件(nodejs 版本号需要大于6,最好是7)
cd QUANTAXISWebkit
(sudo) npm install forever -g
cd backend
(sudo) npm install
(sudo) forever start bin/www
cd ..
cd web
(sudo) npm install
(sudo) npm run dev 或者 forever start build/dev-server.js
会自动启动localhost:8080网页端口,用账户名admin,密码admin登录 (注明: admin注册是在python的QUANTAXIS save all时候执行的)
另外 如果save all已经执行,依然登录不进去 点击插件状态 查看3000端口是否打开
写代码不易...写文档最难过...请....作者喝杯咖啡呗?
(PS: 支付的时候 请带上你的名字/昵称呀 会维护一个赞助列表~ )
第一天挂上项目捐赠就有童靴赞助支持蟹蟹蟹蟹
准备把项目捐赠的钱 以及我自己会补一部分进来 维护一个基金会 主要是奖励文档编写和bug提交的童鞋们~
QUANTAXIS 是一个渐进式的框架,也就是说 你可以很简单的只使用回测部分,也可以逐步深入开发,从数据源获取/数据库替代,到回测的引擎的修改,自定义交易模式,事件修改等等.
在0.5.0以前,api都不是很稳定,所以文档这块比较欠缺,暂时先给一些常用的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 #策略业绩评价的对照行情
#函数:
#获取市场(基于gap)行情:
QB.QA_backtest_get_market_data(QB,code,QB.today)
#获取单个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)
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_fetch_ 系列
从本地数据库获取数据
"""
QA.QA_fetch_stock_day()
QA.QA_fetch_stocklist_day()
QA.QA_fetch_stock_day_adv()
QA.QA_fetch_stocklist_day_adv()
QUANTAXIS-Stardand-Protocol 版本号0.0.8
详情参见 QUANATXISProtocol