VeighNa量化社区
你的开源社区量化交易平台
xiaohe's Avatar
Member
离线
4300 帖子
声望: 268

报错没有plotly, 应该是因为2.1.4图形显示从matplotlib换成了plotly。可以打开cmd执行pip install plotly命令手动安装试试看启动还报不报错

你标红的是一分钟的ohlc,可以看一下你自己的截图,9:00-9:14里的open不就是9:00的开盘3794,high不就是这15个high里的最高3803.0,low不就是15个里的最低3788,close不就是9:14的收盘3794吗?

这期间应该只有4.28-7.24那笔交易,vnpy计算方法是逐日盯市场不是逐笔成交的,5.6-6.8还持有没有交易的状态,那么那时应该只有holding_pnl没有trading_pnl。
要是想改成逐笔成交计算可参考https://www.vnpy.com/forum/topic/2107-vn-pyshe-qu-jing-xuan-14-liang-hua-ce-lue-ping-gu-de-xian-wei-jing-:zhu-bi-dui-chong-tong-ji-shang
https://www.vnpy.com/forum/topic/2227-vn-pyshe-qu-jing-xuan-15-liang-hua-ce-lue-ping-gu-de-xian-wei-jing-:zhu-bi-dui-chong-tong-ji-xia

你这打印的是合成的15分钟的bar吗?

可以去原帖看一下,楼下好像有补充的

用的哪个接口?

不清楚你看的教程,连接simnow可自己去申请账号根据文档登录。ctp_connect.json是保存已配置的登录信息的json文件

可以自己去接口print看看

vnpy.app,paper_account

这个应该不影响运行的

勾选了paper_account模块

有些测试环境就是没有行情的

对应字段修改一下就好了吧

应该是数据掉包了,报错里有说Missing value for bid_price_2.

不清楚逻辑代码怎么写的。如果只是刷新策略参数的话,2楼的方法应该可以了吧。

发布于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】启动VN Trader时,报错zmq.error.ZMQError: Permission denied,请问如何解决?

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

建议可以print一下看看当时是否有tick推送过来

template里buy函数默认是offset为None,自己在算法里写offset方向就行了吧
description

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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