VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 4669
声望: 285

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2021-08-18
 
《量化交易零基础入门系列 - 30天解锁Python量化开发》销量已达273份,课程价格将在销量到达300份后上调至599元,目前499元的价格还剩最后27个名额,需要的同学请抓紧不要错过!!!
 
周一发布了vn.py的2.5.0版本,本次更新的内容主要是实现了社区呼声已久的Web应用后端服务,满足许多用户希望通过浏览器(而非PyQt桌面端)来运行管理vn.py量化策略交易的需求。

请注意,2.5.0新版本中包含了对底层数据库结构的修改,因此对于之前版本的数据库需要进行手动迁移操作,具体操作流程请参考下文的【数据库升级迁移】章节。

和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,请下载VN Studio-2.5.0,体验一键安装的量化交易Python发行版,下载链接:

https://download.vnpy.com/vnstudio-2.5.0.exe

 

Web应用后端服务

 

架构设计

WebTrader采用了FastAPI作为后端服务器,支持REST主动请求调用和Websocket被动数据推送,运行时的整体架构图如下:

description

后端服务包括两个独立的进程:

  • 策略交易进程

    • 运行VN Trader的进程,负责所有策略交易功能的运行;
    • 启动了RpcServer用于对Web服务进程提供功能调用;
  • Web服务进程

    • 运行FastAPI的进程,负责对外提供Web访问的服务;
    • 启动了RpcClient用于调用策略交易进程的相关功能。

从网页端到策略交易进程的双向通讯模式包括:

  • 主动请求调用(订阅行情、挂撤单、查询数据)

    • 浏览器发起REST API调用(访问某个URL地址提交数据)到Web服务进程;
    • Web服务进程收到后,转换为RPC请求(Req-Rep通讯模式)发送给策略交易进程;
    • 策略交易进程执行请求处理后,返回结果给Web服务进程;
    • Web服务进程返回数据给浏览器;
  • 被动数据推送(行情推送、委托成交推送)

    • 浏览器发起Websocket连接到Web服务进程;
    • 策略交易进程通过RPC推送(Pub-Sub通讯模式),将数据推送给Web服务进程;
    • Web服务进程收到后,将数据通过Websocket API实时推送给浏览器(JSON格式)。

使用步骤

新增的Web应用服务源代码位于vnpy_webtrader项目中,用户可以通过VN Station启动时加载WebTrader应用即可。

启动VN Trader后,首先登录要交易的接口,然后点击顶部菜单栏的【功能】->【Web服务】打开如下图所示的窗口:

description

此时系统中运行的只包括策略交易进程,右上角区域的服务器配置选项包括:

  • 用户名和密码:从网页端登录Web应用时所用的用户名和密码,使用时请修改为自己想用的用户名和密码,请注意这里的用户名和密码与底层交易接口无关;
  • 请求和订阅地址:架构图中Web服务进程和策略交易进程之间,进行RPC通讯的地址,注意端口不要和其他程序冲突即可。

点击启动按钮后,会根据用户输入的配置信息在系统后台启动Web服务进程,同时在右侧区域输出FastAPI运行过程中的相关日志信息:

description

此时启动浏览器打开网址http://127.0.0.1:8000/docs,即可看到如下图所示的FastAPI接口文档网页:

description

这里包含了目前WebTrader支持的相关接口信息,用户可以结合vnpy_webtrader项目下提供的Jupyter Notebook进行相关接口的测试。

后续计划

WebTrader仅实现Web应用的后端(提供了给浏览器访问数据的接口),而前端页面(也就是浏览器中看到的网页)则按照之前的计划交给社区用户来实现,欢迎大家贡献代码。

同时WebTrader目前只支持了基础的手动交易功能,后续将会逐渐加上策略交易应用相关的管理功能(比如CtaStrategy的相关调用)。

 

TTS交易接口

 

CTP API在过去10年间,已经逐渐成为了国内金融市场的交易API标准,类似海外市场中FIX协议的地位,罗列几个兼容或者高度接近CTP的API:

  • 融航API:期货资管系统;
  • 铭创API:券商自营系统;
  • 华鑫奇点API:证券极速柜台系统。

最近知乎网友krenx推出了OpenCTP项目(CTP开放平台),同样是在兼容CTP API的基础上(只需替换dll),自主实现了整套CTP柜台的仿真交易功能(除了期货外,还引入了指数、股票等更多品种的支持),大家在SimNow之外又多了一个选择。

2.5.0版本中也增加了对OpenCTP交易系统的支持,接口名称为TtsGateway(Tick Trading System),从VN Station加载即可使用。

TtsGateway的连接配置信息如下:

  • 交易服务器:tcp://121.36.146.182:20002
  • 行情服务器:tcp://121.36.146.182:20004
  • 用户名和密码:关注公众号【CTP开放平台】获取即可
  • 其他字段全部留空即可(不校验)

 

数据库升级迁移

 

2.5.0新版本中对底层数据结构进行了扩展增强,增加的字段包括:

  • TickData

    • localtime:本地时间戳,用于高频策略回测的数据对齐;
    • turnover:成交额,用于计算日内VWAP等衍生数据;
  • BarData

    • turnover:同上。

同时所有的数据库管理器(vnpy.database)也都进行了对应的修改,升级后可能由于数据库结构变化造成系统无法启动。

对于购买了RQData等数据服务的用户,可以直接删除数据库后重新下载即可:

  • SQLite(默认数据库)的用户,请删除C:\users\administrator.vntrader\database.db文件;
  • 其他数据库(MySQL、MongoDB等)的用户,请删除DbTickData和DbBarData对应的数据表。

对于自行录制收集数据的用户(数据不能删的),需要进行数据迁移操作:

  1. 安装DBeaver之类的数据库管理工具;
  2. 用DBeaver将DbTickData和DbBarData中的数据导出为CSV文件;
  3. 删除上述数据表;
  4. 更新到2.5.0版本后,启动VN Trader创建新的数据表;
  5. 用DBeaver将之前导出的CSV文件,重新导入到数据库中即可。

 

其他更新

 

易盛内盘交易接口

新增基于易盛新推出的【启明星/北斗星兼容交易API】开发的EsunnyGateway(位于vnpy_esunny项目中),支持内盘期货、黄金TD、外盘期货等市场的交易。

接口剥离

  1. UFT接口,剥离到vnpy_uft项目中,采用3.7.2.4版本的API;

  2. 融航接口,剥离到vnpy_rohon项目中,采用6.5.1版本的API;

  3. CTP期权接口,剥离到vnpy_sopt项目中,采用3.5.5版本的API;

上述剥离的接口,均增加了Ubuntu上的一键自动安装功能,同时支持通过pip install命令进行快速安装。

 

CHANGELOG

 

新增

  1. 新增TTS交易系统(兼容CTP的仿真交易环境)的接口vnpy_tts(6.5.1)
  2. 新增易盛启明星/北斗星兼容交易API的接口vnpy_esunny(1.0.2.2)
  3. 新增BarData和TickData的成交额turnover字段

调整

  1. 将SpreadTrading模块策略初始化时的K线价差数据加载,改为优先通过RQData查询数据
  2. 在MainWindow的AboutDialog中,基于importlib_metadata模块来获取版本信息
  3. 隐藏所有对话框右上角的【?】按钮
  4. 将易盛外盘TapGateway的合约信息,从行情接口获取改为交易接口获取(避免外盘合约size为0的问题)
  5. 改进VN Trader的异常捕捉对话框弹出方式,避免多次重复报错情况下的程序卡死崩溃

修复

  1. 修复Linux下安装时,对于已经剥离的XTP API的自动编译操作
  2. 修复PortfolioManager的UI组件,对于成交事件监听类型错误的BUG
  3. 修复vnpy_rest下的Response对象缺乏text字段导致的BUG
  4. 修复ArrayManager的Aroon指标计算输出结果顺序错误的BUG
  5. 修复数据库管理器读写TickData时,由于缺少对localtime字段处理导致的BUG

剥离

  1. 将融航接口剥离到vnpy_rohon项目中,并升级到6.5.1版本
  2. 将CTP MINI接口剥离到vnpy_mini项目中,并升级到1.5.6版本
  3. 将CTP期权接口剥离到vnpy_sopt项目中
  4. 将恒生UFT柜台极速API接口剥离到vnpy_uft项目中
     
Member
avatar
加入于:
帖子: 3
声望: 0

更新了以后,无法载入数据

Member
avatar
加入于:
帖子: 4669
声望: 285

发低烧的沐浴露 wrote:

更新了以后,无法载入数据
请认真看一下发布公告的数据库升级迁移这一段

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】