vn.py官网
开源量化社区
Member
avatar
加入于:
帖子: 3033
声望: 174

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

 

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

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

软件安装和基础使用


【Q】阅读和开发vn.py相关的代码,推荐怎么选择Python版本和IDE工具?

【A】建议使用vn.py官方打包的Python发行版VN Studio作为Python环境,同时使用Visual Studio Code(安装Python和Pylance插件)作为IDE工具。

对于新手来说,尤其不推荐使用PyCharm,作为针对大型Python项目的PyCharm,使用时需要用户对运行环境进行大量细节配置,不熟悉的人很容易在各种地方出错,浪费大量时间去爬坑。

对于经验丰富的老手来说就无所谓了,选择自己最熟悉的Python版本和IDE工具就好。

 

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年之后尤其频繁),此时只能等待到下一个交易日再尝试。

【Q】CTP接口报错:“交易服务器授权验证失败,代码:63,信息:CTP:客户端认证失败”是怎么回事?

【A】这个报错是因为登录时,填写的穿透式认证的产品名称和授权码错误。如果是实盘账户请联系期货公司确认,如果是SimNow账户请使用下面的配置(来自SimNow官网)

  • 产品名称:simnow_client_test
  • 授权编码:0000000000000000

【Q】申请穿透式接入时,期货公司要求提供AppID,请问AppID是什么?

【A】AppID是一个由用户提供的交易程序的代码,具体怎么写可以参考这篇文章:《看完这篇,彻底搞定期货穿透式CTP API接入》


【Q】行情订阅失败,说找不到合约,请问这是怎么回事?

【A】查找合约可以点击主界面的顶部菜单栏的【帮助】->【查询合约】打开对话窗口:

  • 在对话窗口的搜索框中输入想要交易的合约代码的一部分,搜索全部相关的合约信息;
  • 或者将搜索框留空,直接点击搜索,则会显示当前已连接的交易接口所能交易的全部合约。

通过搜索出来的结果,即可判断合约代码的正确写法。

同时两种比较常见的出错原因:

  1. 代码名称写错,比如【RM101.CZCE】可能打成了【rm101.CZCE】。
  2. 找不到该合约,比如说已退市的合约或者是账户权限外的合约。像SimNow账户就不支持期权仿真环境,所以SimNow账户是找不到期权合约的。如果需要的话,可以去支持期权仿真环境的期货公司申请试用账户。

【Q】CTP/CTPTEST接口在登陆时报错:“交易服务器登录失败,代码:3,信息:CTP:不合法的登录”,是怎么回事?

【A】这个报错是典型的账号密码错误,可以检查一下是否输入错误:

  1. 对于SimNow环境,账号是填写InvestorID(纯数字),而不是网站注册时填写的账号(手机号);
  2. 如果确定没有输入错误的话,那么请检查是否服务器的地址配置产生错误了(比如测试和生产环境搞混)。

 

RQData数据服务


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

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

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

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


【Q】RQData报错:this license is only allowed to access through the education network,请问这个该怎么解决?

【A】这个报错说明使用的是学生账号,只能在校园网环境下使用。如果已经使用的是校园网络,但仍报同样的错,应该是ip地址不在的RQData网段池里,建议联系RQData的工作人员进行添加。


【Q】RQData报错:rqdatac.share.errors.QuotaExceeded: Quota exceeded,请问这个是什么情况?

【A】这个报错说明目前该账户同时登录的次数超过了限制。对于付费用户,RQData默认允许同时有3个连接登录,对于试用账户则只有1个了。请关闭其他连接了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】启动CTA策略模块时,弹出报错json.decoder.JSONDecodeError: Expecting value: line xx column xx (char xxx),应该该怎么解决呢?

【A】首先请删除C:\users\administrator.vntrader文件夹里对应的json文件:

  • cta_strategy_setting.json
  • cta_strategy_data.json

注意,这里的administrator应该是你的Windows操作系统用户名。删除后重启VN Trader即可。

如果后续再次出现该错误,请检查策略代码中,是否有把str、bool、int、float类型以外的变量名称写到了parameters列表中,这四种类型以外的变量由于无法通过json序列化会导致保存策略状态出错(损坏json文件)。

 

历史数据和数据库


【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. 完成后点击右上角的【刷新】按钮,即可查询数据库中当前该合约的数据范围情况。

 
数字货币接口


【Q】连接数字货币接口时(如HuobiGateway、OkexGateway),没有“Websocket连接成功”的日志输出,同时出现底层报错[WinError 10060]、[WinError 10061],请问怎么解决?

【A】出现该问题是由于没有在连接交易接口对话框中正确配置代理软件的地址和端口。vn.py目前只支持Shadowsocks和Trojan两款代理软件,即使用这两个也不支持全局模式。实盘交易的话,还是建议使用海外的云服务器来保证网络连接的稳定性。

 

其他应用模块


【Q】启动VN Trader时,报错zmq.error.ZMQError: Permission denied,请问如何解决?

【A】出现这个报错是因为ZeroMQ使用的端口冲突了。在VN Station中配置VN Trader的加载模块时请注意,ExcelRtd、RpcService、Mt5Gateway都需要用到ZeroMQ,因此同时加载就可能导致冲突情况。建议在使用的时候,只加载自己需要用到的模块即可。

Member
avatar
加入于:
帖子: 1
声望: 0

连接ctp输入窗口,有个产品信息。填什么?谢谢

Member
avatar
加入于:
帖子: 3033
声望: 174

可以不用填

Member
avatar
加入于:
帖子: 21
声望: 1

您好,我想请问一下有没有API说明的文档,正在看cta_strategy部分,一直用help查很费事

Member
avatar
加入于:
帖子: 3033
声望: 174

现在没有的,这是项目文档https://www.vnpy.com/docs/cn/index.html

Member
avatar
加入于:
帖子: 2
声望: 0

谢谢分享

Member
avatar
加入于:
帖子: 1
声望: 0

想请问下vnpy里有没有资金费率查询的接口呢?

Member
avatar
加入于:
帖子: 3033
声望: 174

胖虎 wrote:

想请问下vnpy里有没有资金费率查询的接口呢?
没有的,如果有需要的话请自己个性化开发了。

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

沪公网安备 31011502017034号