发布于vn.py社区公众号【vnpy-community】

 

原文作者:用Python的交易员 | 发布时间:2020-05-30
 

更新日期:2020-5-30
 
针对许多初学者在刚开始使用vn.py时,容易遇到的各种常见问题,整理了这份FAQ文档,后续也会持续保持更新。

 

CTP期货接口


【Q】已经连接登录了CTP接口,但是在VN Trader主界面,左上角的编辑框中输入合约代码后,为何回车无法订阅行情?

【A】请检查合约代码是否输入正确,国内4家期货交易所的合约命名规则有所区别,vn.py内部全部采用官方命名,举例来说:

  • 中金所:IF2003
  • 上期所:au2003
  • 大商所:m2003
  • 郑商所:TA003

请注意以上命名中的英文字母大小写,以及年月的数字。


【Q】连接SimNow的CTP服务器,主界面左下角日志区域没有任何输出信息,或者出现4097错误?

【A】可能有以下几个原因,请按顺序排查:

  1. SimNow提供两套环境,其中第一套仿真**实盘环境只能在交易时段使用(9:00-15:00),第二套仿真测试环境**只能在非交易时段使用(所有其他时间);
  2. 第一套环境中又分为三组服务器,vn.py只能连接第二和第三组服务器(支持穿透式验证的版本),不能连接第一组;
  3. 由于运维方面的原因,SimNow服务器有时会出现停机维护的情况(2019年之后尤其频繁),此时只能等待到下一个交易日再尝试。

 

RQData数据服务


【Q】RQData中的连续合约数据,提供88、888、99等多种类型,做CTA策略回测应该用哪个?

【A】首先是数据的区别,以股指IF合约为例:

  • IF88:简单将IF股指期货每个主力月份的量价数据进行拼接,未做任何平滑处理,在主力合约换月时数据会有跳空的现象,因此该数据只适合日内CTA策略的回测(收盘无持仓)
  • IF888:在IF88数据的基础上,当主力合约换月时记录换月的价差金额,并对之前的历史数据全部加上或者减去该价差,进行平滑处理,因此该数据适合隔夜CTA策略的回测(收盘有持仓)
  • IF99:由所有可交易品种的数据,以累计持仓量进行加权平均后,得出的指数数据,由于其在现实中不可交易(交易所并不提供指数合约),因此不推荐使用该数据进行回测,可用于某些数据模型的研究

具体细节可以参考米筐官方的RQData文档页面

 
CTA策略交易


【Q】我自己开发的策略,应该放到什么目录?

【A】CtaStrategy和CtaBacktester两个模块,在启动时都会自动扫描加载VN Trader运行时目录(主界面窗口顶部标题栏的路径)下的strategies目录中的策略文件。

默认情况下,运行时目录是当前操作系统的用户目录,假设你的用户名为abc:

  • Windows系统

    • 用户目录为c:\users\abc;
    • 策略应该放在c:\users\strategies中
  • Linux/Mac系统

    • 用户目录为/home/abc
    • 策略应该放在/home/abc/strategies中

 

历史数据和数据库


【Q】vn.py支持哪些数据库?对于用户来说应该怎么选择?

【A】目前一共支持四套数据库:SQLite、MySQL、PostgreSQL以及MongoDB。其中SQLite、MySQL和PostgreSQL属于SQL类数据库,MongoDB属于NoSQL类数据库。

从各自的特点看:

  • SQLite:采用单一本地文件来保存数据,用户无需安装任何软件即可使用,也是vn.py默认使用的数据库,推荐绝大部分刚上手的用户使用(无需做任何配置);
  • MySQL:互联网时代使用广泛的数据库,需要额外安装运行MySQL数据库服务(可以选择本机或者独立服务器部署),推荐需要同时运行多个VN Trader进程访问数据库,且有一定SQL经验的用户使用;
  • MongoDB:基于类似Json格式储存的文件型数据库,其查询语言比起SQL更加适合交易员的胃口(易上手),同时速度性能比起MySQL有一定优势,推荐需要同时运行多个VN Trader进程访问数据库,且不会SQL的用户使用
  • PostgreSQL:功能强大的开源数据库之一,比起MySQL支持更复杂的查询语法和数据格式,但同样也需要大量的时间来学习和配置,只推荐对其已有丰富使用经验的用户使用。

关于数据库的具体配置方法,请参考官网文档


【Q】手头已有从其他来源(淘宝购买、软件导出等)获取的CSV格式的K线数据,如何导入到vn.py中用于策略历史回测分析?

【A】注意:最新版本中已将之前的CsvLoader模块的功能,合并到了DataManager模块中。

操作流程如下:

  1. 在VN Station中启动VN Trader Pro时,勾选加载DataManager应用模块;
  2. 打开VN Trader主界面后,点击顶部菜单栏的【功能】->【数据管理】,打开DataManager窗口;
  3. 点击右上角的【导入数据】按钮,弹出对话框【从CSV导入数据】;
  4. 点击【选择文件】按钮,在弹出的对话框中选择要导入的CSV文件路径;
  5. 在【合约信息】栏目下,配置要把数据放到其中的目标数据库,注意周期只支持:MINUTE(1分钟线)、HOUR(1小时线)、DAILY(1日线)、WEEKLY(1周线);
  6. 在【表头信息】栏目下,根据CSV文件内的表头进行匹配,注意如果是英文大小写必须完全一致;
  7. 在【格式信息】栏目下,对日期时间戳的字符串格式进行匹配,大部分情况下注意分隔符(如年月日用“-”还是“/”)以及日期时间之间是否有空格就够了;
  8. 点击【确定】按钮执行导入操作,导入过程中界面会假死,通常耗费几秒到十几分钟的时间(视乎数据量);
  9. 完成后点击右上角的【刷新】按钮,即可查询数据库中当前该合约的数据范围情况。

 
 

2020年的第二期vn.py小班课还剩最后一个名额!

  • 两天共计10小时的密集提高课程

  • 8套高端CTA策略源代码分享

    • DoubleChannel
    • KeltnerBandit
    • RsiMomentum
    • SuperTurtle
    • TrendThrust
    • Cinco
    • Cuatro
    • SuperCombo
  • 动态风险仓位管理模型

  • 策略内嵌复杂算法交易

详情请戳 2020年第二期小班课:CTA策略开发