专栏名称: quantOS
quantOS 量化开源系统的一站式解决方案
目录
相关文章推荐
51好读  ›  专栏  ›  quantOS

跟着样例学JAQS(4) - 如何将JAQS对接VNPY进行实盘交易

quantOS  · 公众号  ·  · 2017-12-20 11:18

正文

请到「今天看啥」查看全文


社区很多朋友咨询,如何正确使用JAQS对接vnpy进行实盘交易,本文将完整介绍这一过程,解决大家的疑惑。


1. 正确安装vnpy

vnpy目前最稳定的python环境是py2.7(32位),因此我们建议的安装方式是:

下载并安装anaconda。

下载地址:https://www.anaconda.com/download/,选择windows平台32位,python2.7

下载并安装vnpy。

要注意,不能使用pip安装,需要从github下载dev分支的代码,下载地址:https://github.com/vnpy/vnpy

下载完成后,目录结构如下, 请在刚才安装的Anacanda,也就是“python2.7 32位”环境下,运行install.bat,安装vnpy。


2. 安装JAQS

请在刚才安装的Anacanda,也就是“python2.7 32位”环境下,执行两步:

  • 安装python-snappy,从 https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-snappys 下载python-snappy的安装包。

pip install python_snappy-0.5.1-cp27-cp27m-win32.whl

  • 安装JAQS

pip install jaqs


3. 启动vnpy的JAQS服务

进入刚才下载的vnpy的代码目录,位于examples\jaqsService下,目录下的文件结构如下:

有三个重要的文件需要修改:

  • CTP_connect.json - CTP连接的信息

  • JS_setting.json - JAQS服务信息

  • run.py - 启动JAQS的脚本

CTP_connect.json

{

"brokerID": "9999",

"mdAddress": "tcp://180.168.146.187:10011",

"tdAddress": "tcp://180.168.146.187:10001",

"userID": "userID",

"password": "password"

}

JS_setting.json

{

"host": "127.0.0.1",

"port": 8901

}

  • JS_setting.json 配置JAQS的服务监听地址,一般不用修改。

  • CTP_connect.json 配置CTP服务器地址和账户信息,需要修改成你实盘的地址和账户信息。


run.py


def main():

"""主程序入口"""

# 创建Qt应用对象

qApp = createQApp()

# 创建事件引擎

ee = EventEngine()

# 创建主引擎

me = MainEngine(ee)

# 添加交易接口

me.addGateway(ctpGateway)

# 添加上层应用

me.addApp(jaqsService)

# 创建主窗口

mw = MainWindow(me, ee)

mw.showMaximized()

# 在主线程中启动Qt事件循环

sys.exit(qApp.exec_())


if __name__ == '__main__':

main()



run.py是一个主程序,在这个主程序里面,添加了ctpGateway和jaqsService两个模块。


ctpGateway是真正的实盘交易通道,jaqsService是服务转接模块。

启动方法很简单,运行 python run.py 即可!

运行成功,则会出现vnpy经典的主界面,如下图所示:

在“功能”菜单,会出现一个“Jaqs服务”,点击之后,是一个消息文本框,用于查看jaqs服务的运行日志。

这是表明,JAQS的服务已经启动成功了。


4. 启动CTP交易通道

这个和vnpy启动其他交易通道的方法完全相同,在系统菜单下,点击“连接CTP”即可。

运行成功的界面如下:


5. 启动JAQS策略,对接vnpy

这里我们举一个特别简单的策略的例子,来说明一下JAQS策略如何进行实盘。策略原理:

(1) 做rb1805.SHF和rb1810.SHF的价差套利,如果价差超过195,则空rb1805.SHF,多rb1810.SHF,如果价差小于180,则反向做。

(2) 为了演示效果,只开仓不平仓。

(3) 策略启动后,根据tick数据,实时计算价差。

(4) 每次策略启动只做一次来回。

参考代码如下:

只要将交易发送的地址,修改成“tcp://127.0.0.1:8901”,这个地址就是之前vnpy启动本地Jaqs服务的地址。

SpreadAlgo策略代码不在文章中贴出,请大家直接下载代码。

运行后,策略会根据条件,选择是否开仓,在vnpy的界面,可以看到开仓结果。

是不是很简单?


6. 想尝试一下?

请访问www.quantos.org,下载安装JAQS,开始自己的量化旅程吧。

这里的东西都是开源和免费的。


本文转载自 量化嘉

更多讨论,请登录https://www.quantOS.org







请到「今天看啥」查看全文