ricequant / rqalpha-mod-vnpy

RQAlpha 对接 vnpy 的扩展 Mod。通过启用该 Mod 来实现期货策略的实盘交易
Apache License 2.0
298 stars 59 forks source link
futures rqalpha rqalpha-mod trade vnpy

rqalpha-mod-vnpy

RQAlpha 对接 vnpy 的扩展 Mod。通过启用该 Mod 来实现期货策略的实盘交易。目前本模块仍处在正式发布前的测试阶段,您可以下载参与测试并开 Issue 提交 bug,也欢迎您提交代码,参与开发。

本开源模块未进行详尽完备的测试,作者不保证您通过本模块获取到数据的完整以及准确性、不保证您的策略逻辑正确触发对应的实盘操作,您通过使用本模块实盘操作产生的损益与作者无关。

当前版本的 rqalpha-mod-vnpy 仅支持 VN.PY 的最新版本,请您及时更新 VN.PY 的代码

环境要求

由于 VN.PY 项目仅支持 Linux 和 Windows 系统,python2.7 环境,目前本模块也仅支持在 Linux 或 Windows 系统下 python2.7 环境。
作者仅在 ubuntu 16.04 LTS 系统进行了测试。关于 Windows 及其他 Linux 发行版下的兼容性,作者会在精力允许的情况进行测试,也欢迎您将兼容性情况反馈给我。

编译和安装

本模块依赖 RQAlpha 和 VN.PY 两个项目,所以需要完成两个项目的安装。

安装 RQAlpha

rqalpha-mod-vnpy 依赖 2.0.X 版本的 RQAlpha,您可以执行如下命令来安装 RQAlpha

 pip install -U rqalpha

安装 VN.PY

VN.PY 项目未提供 pip 安装包,所以您只能通过下载源代码自行编译的方式进行安装。详细的环境配置和安装说明您可以查看 VN.PY官方教程

安装 mod

在您完成 RQAlpha 的安装之后,您可以执行以下命令来安装 mod:

rqalpha mod install vnpy

之后您可以执行以下命令来启动 mod:

rqalpha mod enable vnpy

如果您需要关闭或者卸载 mod 您可以执行以下两条命令:

rqalpha mod disable vnpy

rqalpha mod uninstall vnpy

配置项

您需要在配置项中填入 vnpy 相关文件夹的路径及您的 CTP 账号密码等信息,您可以在 simnow 官网 申请实盘模拟账号。
配置项的使用与 RQAlpha 其他 mod 无异

"vnpy": {
    # 您需要接入的接口,目前仅支持 CTP
    "gateway_type": "CTP",
    # VN.PY 项目目录下有一个 vn.trader 文件夹,您需要把该文件夹的路径填到此处
    "vn_trader_path": None,
    # 您使用 simnow 模拟交易时可以选择使用24小时服务器,该服务器允许您在收盘时间测试相关 API,如果您需要全天候测试,您需要开启此项。
    "all_day": True,
    # VN.PY 创建临时文件的目录
    "temp_path": "./vnpy_temp",
    # 以下是您的 CTP 账户信息,由于您需要将密码明文写在配置文件中,您需要注意保护个人隐私。
    "CTP": {
        "userID": "",
        "password": "",
        "brokerID": "9999",
        "tdAddress": "tcp://180.168.146.187:10030",
        "mdAddress": "tcp://180.168.146.187:10031",
    },
}

开箱即用虚拟机

为了让用户能够在最短时间内体验 rqapha-mod-vnpy,免去繁琐的环境配置和接口编译,作者提供了开箱即用的虚拟机镜像。

有关虚拟机镜像的导入以及 rqalpha 的调试和运行,您可以参考 rqalpha 文档

点此下载

体验 rqalpha-mod-vnpy

source activate py2

python rqalpha_vnpy_test.py



## FAQ
* 为什么策略在初始化期间停滞了几十秒甚至数分钟?   

    程序在启动前,需要从 CTP 获取 Instrument 和 Commission 等数据,由于CTP控流等原因,像 CTP 发送大量请求会占用很长时间。您可以将 log_level 设置成 verbose 来查看详细的回调函数执行情况。未来可能会考虑开放设置是否全量更新 commission 信息以换取更快的启动速度。*

* 为什么我在RQAlpha中查询到的账户、持仓信息与我通过快期、vn.trader 等终端查询到的不一致?

    本 mod 会尽力将您的账户信息恢复至 RQAlpha 中,但由于计算逻辑的不同,可能会导致各个终端显示的数字有差异,另外您通过其他终端下单交易也有可能导致数据同步的不及时。不过这也有可能是程序bug,如果您发现不一致情况严重,欢迎通过Issue的方式向作者提出。*

* VN.PY 的环境配置和安装比较复杂,我搞不定/懒得搞怎么办?

    作者会尽力研究,争取将VN.PY的安装包含进 mod 中,通过 pip 的形式一键安装,在这之前,作者会提供一个开箱即用虚拟机镜像,供您直接下载使用。*

* 为什么会报 NotImplementedError?

    请尝试将配置文件中的 frequency 设置为 tick。

* 我如何在 python3.x 下使用该 mod?

    您可以尝试使用 [rqalpha-mod-ctp](https://github.com/ricequant/rqalpha-mod-ctp), 该 mod 实现了 python3.x 的支持。待 rqalpha-mod-ctp 逐步完善后,rqalpha-mod-vnpy 将不再维护。

## History

* 0.9.30
    * 脱离对 vn.py 上层代码的依赖,直接对接 TdApi 和 MdApi 类。
    * 启动时不再因为 vn.py 接口不完整报错。
    * 修复断线重连及账户恢复时的若干 bug。
    * 提升运行效率