-
当前版本:0.0.9
-
协议最后修改日期:2017-12-04
-
项目版本:QUANTAXIS 0.5.25
QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案. 我们通过高度解耦的模块化以及标准化协议,可以快速的实现面向场景的定制化解决方案.QUANTAXIS是一个渐进式的开放式框架,你可以根据自己的需要,引入自己的数据,分析方案,可视化过程等,也可以通过RESTful接口,快速实现多人局域网/广域网内的协作.
QUANTAXIS-Standard-Protocol(下称QAS)是为了规范化和标准化QUANTAXIS的数据获取,数据存储,模拟市场交易,以及标准化输出而建立的协议.通过遵守QAS协议,你可以快速的实现定制化需求,当然,你也可以在QAS的基础上增加自己的团队标准.
QUANTAXIS-Future-Protocol(下称QAF)是一些目前尚未实现或未添加的功能/想法,通过issue提交和pull request,你可以参与到QAF的定制与完善中来.
QUANTAXIS是一个渐进式框架,所以会有基础模块和扩展模块之分
-
数据获取类 QAFetch QAFetch 主要是从固定的API获取数据,包括且不限于(Tushare,Wind,Gmsdk)等等,你也可以引入自己的数据模块接口.
模块的命名
- QA+首字母大写的方法(QASpider/QAFetch/QAMarket/QASignal/QATask/QAUtil)
- QA+纯大写字母的缩写(QASU,QAARP)
一般而言,模块是不修改的,当然,如果你需要深度定制你的模块名,则不仅需要遵守QAS#003-1协议,还需要修改"init.py",才能使你的模块生效
类的命名
- QA+ _大写字母类+_小写字母 ( QA_Account,QA_Risk,QA_Market,QA_QAMarket_bid,QA_Backtest )
函数的命名
- QA_模块名_小写字母的函数 (QA_util_date_stamp)
函数的命名除了QA,后面的模块已经函数全部小写,同时,以简单易懂,名词-动词形式为主
主要是为了区分和类的关系
但如果模块是缩写形式,则缩写部分还是大写,如 QA_SU_save_stock_day
QA_QAMarket_bid 这个是类
QA_util_time_stamp 这个是函数
由于多数据源的问题,我们规定了基础指标和扩展指标,方便用户的不同权限的自定义需求
比如说,如果你只有免费的数据源通道,那么你可以选择基础的指标(pytdx,wind大奖章)
如果你具有wind机构版权限,那么你可以在免费的指标上扩展你的指标,但仍然保持原有的基础指标名不变
Client: ip:port
DataBase: quantaxis
Collections:
- trade_date,stock_list,options_list
- stock_day,future_day,options_day
- stock_tick,future_tick,options_tick
- log_signal
- user_setting,user_trade_history
Basical Key:
- date
- date_stamp
- open *stock
- high *stock
- low *stock
- close *stock
- code
- name
QA_fetch_get 系列是数据从外部获取的方法,一般而言,这个系列的函数方法封装的都是api
在使用这个fetch_get系列的时候,一般要指定数据源,比如是wind,或者tushare,或者Gmsdk等等
在QUANTAXIS.QAFetch 可以直接用的
from QUANTAXIS.QAFetch import *
- QA_fetch_get_stock_day
- QA_fetch_get_stock_realtime
- QA_fetch_get_stock_indicator
- QA_fetch_get_trade_date
在QUANTAXIS.QAFetch.QATushare中可以用的
from QUANTAXIS.QAFetch.QATushare import *
- QA_fetch_get_stock_day
- QA_fetch_get_stock_realtime
- QA_fetch_get_stock_info
- QA_fetch_get_stock_tick
- QA_fetch_get_stock_list
- QA_fetch_get_trade_date
这个没有get_头的,是从本地数据库中获取数据
一般是本地的交易回测引擎和策略会使用这个api
from QUANTAXIS.QAFetch.QAQuery import *
- QA_fetch_stock_day
- QA_fetch_trade_date
- QA_fetch_stock_info
- QA_fetch_stocklist_day
- QA_fetch_index_day
这个系列是QUANTAXIS的存储数据的api方法,使用的数据库是mongodb
bid是一个标准报价包
bid={
'price':float(16),
'date':str('2015-01-05'),
'amount':int(10),
'towards':int(1),
'code':str('000001'),
'user':str('root'),
'strategy':str('example01'),
'status':'0x01',
'order_id':str(random.random())
}
- QA_Backtest QA_Backtest 里面有4个抽象类:
account=QA_Account()
market=QA_Market()
bid=QA_QAMarket_bid()
setting=QA_Setting()
- QA_Account
- QA_Risk
- QA_Portfolio
- QA_util_
QATASK 给了5种不同场景下的解决方案:
-
QA_Event 主要负责的是事件的一对多的分发和订阅
-
QA_Queue 主要负责的是维护一个函数句柄队列,可以理解为一个生产者消费者模型
-
QA_Task_Center 主要负责的是一个对外的兼容接口,无论是socket,还是zeromq,celery,rabbitmq,redis等等
-
QA_Multi_Processing 主要是一个多线程和多进程的
-
QA_Schedule 主要是一个定时/延时任务机制