是在接口哪个函数下print的data
self.pos策略持仓也保存了
报这个错通常是因为:要转换成浮点数的字符串中包含非数字字符 的东西,比如空字符串、字母都不可以转换为浮点数。
先检查一下自己的字符串内容,注意里面是否有换换行符 \n,制表符 \t 或空字符串 ‘ ’
发布于vn.py社区公众号【vnpy-community】
原文作者:用Python的交易员 | 发布时间:2020-11-16
更新日期:2020-11-16
针对许多初学者在刚开始使用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内部全部采用官方命名,举例来说:
请注意以上命名中的英文字母大小写,以及年月的数字。
【Q】连接SimNow的CTP服务器,主界面左下角日志区域没有任何输出信息,或者出现4097错误?
【A】可能有以下几个原因,请按顺序排查:
【Q】CTP接口报错:“交易服务器授权验证失败,代码:63,信息:CTP:客户端认证失败”是怎么回事?
【A】这个报错是因为登录时,填写的穿透式认证的产品名称和授权码错误。如果是实盘账户请联系期货公司确认,如果是SimNow账户请使用下面的配置(来自SimNow官网)
【Q】申请穿透式接入时,期货公司要求提供AppID,请问AppID是什么?
【A】AppID是一个由用户提供的交易程序的代码,具体怎么写可以参考这篇文章:《看完这篇,彻底搞定期货穿透式CTP API接入》
【Q】行情订阅失败,说找不到合约,请问这是怎么回事?
【A】查找合约可以点击主界面的顶部菜单栏的【帮助】->【查询合约】打开对话窗口:
通过搜索出来的结果,即可判断合约代码的正确写法。
同时两种比较常见的出错原因:
RQData数据服务
【Q】RQData中的连续合约数据,提供88、888、99等多种类型,做CTA策略回测应该用哪个?
【A】首先是数据的区别,以股指IF合约为例:
具体细节可以参考米筐官方的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系统
Linux/Mac系统
历史数据和数据库
【Q】vn.py支持哪些数据库?对于用户来说应该怎么选择?
【A】目前一共支持四套数据库:SQLite、MySQL、PostgreSQL以及MongoDB。其中SQLite、MySQL和PostgreSQL属于SQL类数据库,MongoDB属于NoSQL类数据库。
从各自的特点看:
关于数据库的具体配置方法,请参考官网文档。
【Q】手头已有从其他来源(淘宝购买、软件导出等)获取的CSV格式的K线数据,如何导入到vn.py中用于策略历史回测分析?
【A】注意:最新版本中已将之前的CsvLoader模块的功能,合并到了DataManager模块中。
操作流程如下:
看提示像数据里有0或者负数
通用的话是没有的,那请自己进行个性化修改了。比如分发单条件记录vt_orderid,等成交以后根据vt_orderid所在的字典进行分辨之类的
你的python 是3.7的吗?
应该是AppID或者AuthCode填错了。
会被最后的覆盖掉,数据库里的K线,基于(symbol, exchange, interval, datetime)这四个键的组合保证唯一性
自己爬取的数据的质量就不一定能保障了。
通信达数据导入社区里好像有相关帖https://www.vnpy.com/forum/topic/3707-tong-da-xin-gu-piao-he-qi-huo-shu-ju-dao-ru-shu-ju-ku
这个还是取决于策略逻辑本身吧,比如说你的逻辑如果是没有持仓时开仓,有持仓时平仓,那就是一一对应的。
多账户可参考https://www.vnpy.com/forum/topic/1467-vnpyke-yi-duo-zhang-hu-yun-xing-ma
https://www.vnpy.com/forum/topic/4920-ru-he-tong-shi-qi-dong-duo-ge-vntrader-yi-ji-shi-xian-duo-zhang-hu-deng-lu
excel表格的话,可以在策略里或者ScriptTrader策略模块下read_excel然后再写交易逻辑吧https://www.vnpy.com/forum/topic/859-vn-pyfa-bu-v2-0-5-jiao-ben-ce-lue-he-rpcfu-wu
回测可以的,如果实盘也想计算,可以导出成交记录和数据模仿backtesting.py里的计算过程自行计算的。
还有就是,有问题请发到‘’提问求助“下,”社区动向“是官方发布新版本公告和社区精选的模块。
很多CTP穿透式测试环境是没有行情的
可参考https://www.vnpy.com/forum/topic/3111-vn-pyfa-bu-v2-1-2-duo-biao-de-zu-he-ce-lue
示例策略在vnpy.app.portfolio_strategy.strategies目录下