QUANTAXIS icon indicating copy to clipboard operation
QUANTAXIS copied to clipboard

QA回测-模拟配置流程说明文档(基于QAStrategy)

Open 5267 opened this issue 5 years ago • 8 comments

上一篇中,把本地从头配置QA基础服务及深层次服务(数据,行情展示,策略回测,模拟交易等)完整地说了一遍,实现的基本效果是:你可以基于QA自动维护市场(主要以股票和期货为主)数据、进行基础的数据分析、投研分析、写策略回测、模拟交易等,大体如下图所示: image

  1. 开一个terminal,输入quantaxis进入QA的命令行,输入save就能看到目前支持下载存储的数据项,输入对应的命令就能将你所需要的数据下载到自己本地的mongo数据库。当然,为了方便起见,你也可以自己搞一个定时调度,每天盘后定时对数据进行更新。 image
  2. 本地有了数据,你就可以使用QA随心所欲的进行数据处理、投研分析以及策略编写工作了。开一个jupyter notebook,导入必要的QA库及依赖库。骚年,尽情发挥你的聪明才智吧。 image
  3. 回测策略写完,进行回测后,切换到回测页面,你就能看到这个回测结果展示页面,包括基本的策略评估数据及可视化效果 image
  4. 回测完了之后,如果觉得策略表现不错。那就可以把跑跑模拟盘了,模拟策略运行成功之后,开启必要的后台服务,切换到模拟页面,你就能看到策略的基本模拟效果了。

大体弄明白了上面这套逻辑之后,基本就可以一个人尽情的专注于徒手撸策略了。不过,最近QA又有更新(QAStrategy),有些细节还需要再说明下。以前没有QAStrategy这个策略模板,想用QA写一套策略出来,估计会把很多人憋死,因为QA的模块都是分离的,你要写策略,必须对策略所需的各个模块都了解一点,所以以前想要用QA写个策略,难度还是有点大的。现在有了QAStrategy这个东西,就方便多了,你可以理解为QAStragedy可以为你提供一个策略模块,你只需要专注于核心的策略逻辑即可(这个思路和目前主流的量化交易平台策略思路类似,比如聚宽)。所以,本篇将基于QAStrategy进行策略模拟的示例讲解(前期是上一篇的那些配置你已经都弄好了哈),希望对大家快速上手QA有所帮助。为了能够说清楚,我们分步骤来进行讲解:

第一步:升级QAStragedy,下载下方的这个文件,命令行或JupyterNotebook内运行:pip install QAStrategy-0.0.9-py3-none-any.whl(QQ群文件里有,请自行下载),请确保成功运行。

第二步:升级qifiaccount,运行:pip install qifiaccount -U,请确保成功运行。

第三步:基于QAStragedy模块写策略代码,如下示例:螺纹rb2001,1min, 利用CCI指标进行多空交易(CCI的简单用法是:CCI值大于100时看空,小于-100时看多) image

看到这个策略,之前徒手撸策略的朋友估计会泪崩,哈哈,基于QAStragedy模板来写策略比以前简直优雅了太多。左边的代码是对策略进行回测,右边的是对策略进行模拟,差别就在最后一行,睁大眼睛清楚各位。回测完之后,再进行模拟,运行完模拟代码后你会看到一个输出信息 : Create new Account,这表示模拟账户成功创建,这个时候你去你的mongo数据库里查看QAREALTIME这个库,对应的account表中,就能看到你新创建的模拟账户啦(如左下图)。

同时,打开一个terminal,命令行运行:qatraderserver,启动模拟服务后台(默认8020端口),切换到模拟页面,就能看到你的账号已经在页面中可视化出来了。 特别注意:做到目前这步,只是表示你创建了一个模拟策略账户以及启动了模拟服务后台。还并未真正的实现实时的策略信号监控,模拟下单交易等,原因在于实时行情服务还没开启、回测品种的数据的周期重采样服务还未开启、行情订阅服务未开启等等。 image

第四步:启动实时行情采集/分发后台服务,打开一个terminal,命令行输入:QARC_WEBSERVER,注意:都是大写,不要以为我写错了。

第五步:启动实时行情推送服务,打开一个terminal,命令行输入:QACTPBEE --userid 133496,注意:133496是自己的simnow账户,自己到网站上去申请。

第六步:订阅数据,打开一个terminal,命令行输入:QARC_Start --code rb2001。

第七步:数据重采样,打开一个terminal,命令行输入:QARC_Resample --code rb2001 --freq 1min。

第八步:发起策略中涉及交易品种的行情订阅请求,比如我上面的策略交易的品种是rb2001,打开postman,发送post请求,输入:http://127.0.0.1:8011?action=new_handler&market_type=future_cn&code=rb2001,当然用其他能够post的工具运行这个均可,这个命令的作用在于向MQ发起数据订阅请求。

第九步:开始定数据订阅,打开一个terminal,命令行输入:qaps_sub --exchange realtime_1min_rb2001 --model fanout,这里需要注意下--exchange参数后的realtime_1min_rb2001的标准格式。具体设置含义请参考这里

上面的这些服务开启后,为了验证行情数据流是否成功接进来,你可以打开MQ后台服务页面,看到CTPX那一栏的Message rate in字段下有数据动态变化,就证明ok了。此时,在此回到模拟页面,当有信号出现触发交易下单后,你就能在改页面看到实时动态变化的资产曲线,成交记录,委托记录,当前持仓等信息啦。 image

总结:看了这篇文章,不管是个人投资者还是中小型机构投资者,你应该可以很嗨皮的进行策略回测、模拟交易,利用QA进行愉快地玩耍啦。可以看到(如下图),手动开启QA基础服务至模拟阶段的服务,你需要开启8个terminal,所以电脑要能刚得住才行哦。 image

另外,QA还提供模拟策略交易信号下单的微信推送,就是当你的策略进行模拟交易时,如果有信号下单了,他会发送微信通知你。写策略的时候改两个地方即可,具体看下面的代码。wechatid具体咋申请,看这个文章吧。信号推送的效果如下图。 image

好了,差不多就写到这里了,祝各位投资愉快。

5267 avatar Nov 15 '19 10:11 5267

优秀的你~

yutiansut avatar Nov 15 '19 10:11 yutiansut

这文档是本地配置吧 不是docker 是这样吧。

rafaelchan avatar Nov 15 '19 12:11 rafaelchan

这文档是本地配置吧 不是docker 是这样吧。

docker啥也不需要 直接在QACommunity的那个jupyter里面写策略就完了 这就是docker的好处

yutiansut avatar Nov 15 '19 12:11 yutiansut

不错 有这种文档我也能本地化配置了

rafaelchan avatar Nov 15 '19 12:11 rafaelchan

赞++++++++++++++

xiaopge avatar Nov 16 '19 12:11 xiaopge

对于非docker用户而言 :::

补充一下 rabbitmq的admin账户需要配置一个这个权限

image

yutiansut avatar Jan 08 '20 07:01 yutiansut

请教下大神,这是期货的,股票的怎么配置呢?

zhizunbao84 avatar Jun 19 '20 02:06 zhizunbao84

股票也差不多,和期货的不同之处在于行情接收的参数,以及策略逻辑方面,具体你看下QA的文档和QA的论坛吧,都有写的

5267 avatar Jun 20 '20 02:06 5267