本文用于记录本人回测填坑路上蹚过的坑。

历史数据方面,最近听说rqdata数据质量不错,而且可以通过米匡注册用户享有1个月免费使用期,于是打算用于回测的数据来源。

话不多说。

安装vnpy2.0.5,打算用穿透式测试期货公司申请的测试账户来做,因此from vnpy.gateway.ctptest import CtptestGateway,相应修改run.py中的其他语句,为了方便,我新建了run_ctptest.py,用于ctptest路由的连接。

python run_ctptest.py打开ui,选择“功能-cta回测”,左上角选择、填写相关回测信息,包括策略、交易所、合约信息、k线周期、起止日期、滑点、合约乘数等等。

填好后,点击“下载数据”,出现以下日志:

15:27:54 初始化CTA回测引擎

15:27:54 策略文件加载完成

15:28:23 ----------------------------------------

15:28:23 IF88.CFFEX-1m开始下载历史数据

15:28:23 数据下载失败,无法获取IF88.CFFEX的历史数据

17:13:26 ----------------------------------------

17:13:26 RB1910.SHFE-1m开始下载历史数据

17:13:26 数据下载失败,无法获取RB1910.SHFE的历史数据

17:13:32 ----------------------------------------

17:13:32 RB910.SHFE-1m开始下载历史数据

17:13:32 数据下载失败,无法获取RB910.SHFE的历史数据

开始以为是rb需要小写的原因,后来发现不是这个原因。

然后在BacktesterEngine.run_downloading()中加了打印合约和交易所代码的语句,怀疑是交易所代码有问题导致。log如下,还是无法下载数据。

18:42:52 初始化CTA回测引擎

18:42:52 策略文件加载完成

18:43:20 ----------------------------------------

18:43:20 rb1910.SHFE-1m开始下载1111历史数据

18:43:20 symbol: rb1910 exchange:Exchange.SHFE

18:43:20 数据下载失败,无法获取rb1910.SHFE的历史数据

后来把trader.setting和.vntrader.vt_setting.json中的设置都改了,这时已经能够下载到数据了,但报了一个超长的貌似和数据库有关的错误。如下,

2019-08-08 14:54:00 3682.0 3683.0 3679.0 3682.0 21356.0

2019-08-08 14:55:00 3682.0 3693.0 3682.0 3690.0 40712.0

2019-08-08 14:56:00 3691.0 3691.0 3682.0 3682.0 24736.0

2019-08-08 14:57:00 3682.0 3687.0 3677.0 3677.0 22802.0

2019-08-08 14:58:00 3678.0 3680.0 3675.0 3678.0 21942.0

2019-08-08 14:59:00 3676.0 3677.0 3671.0 3674.0 23170.0

2019-08-08 15:00:00 3674.0 3676.0 3671.0 3672.0 31002.0

[2070 rows x 5 columns]

Exception in thread Thread-4:

Traceback (most recent call last):

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 2875, in execute

_sql

cursor.execute(sql, params or ())

sqlite3.IntegrityError: NOT NULL constraint failed: dbbardata.vt_symbol

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "D:it_skillsVNCondalibthreading.py", line 917, in _bootstrap_inner

self.run()

File "D:it_skillsVNCondalibthreading.py", line 865, in run

self._target(*self._args, **self._kwargs)

File "D:it_skillsVNCondalibsite-packagesvnpyappcta_backtesterengine.py

", line 363, in run_downloading

database_manager.save_bar_data(data)

File "D:it_skillsVNCondalibsite-packagesvnpytraderdatabasedatabase_sql

.py", line 374, in save_bar_data

self.class_bar.save_all(ds)

File "D:it_skillsVNCondalibsite-packagesvnpytraderdatabasedatabase_sql

.py", line 149, in save_all

c).on_conflict_replace().execute()

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 1737, in inner

return method(self, database, *args, **kwargs)

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 1808, in execute

return self._execute(database)

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 2512, in _execut

e

return super(Insert, self)._execute(database)

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 2275, in _execut

e

cursor = database.execute(self)

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 2888, in execute

return self.execute_sql(sql, params, commit=commit)

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 2882, in execute

_sql

self.commit()

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 2666, in __exit_

_

reraise(new_type, new_type(*exc_args), traceback)

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 179, in reraise

raise value.with_traceback(tb)

File "D:it_skillsVNCondalibsite-packagespeewee.py", line 2875, in execute

_sql

cursor.execute(sql, params or ())

peewee.IntegrityError: NOT NULL constraint failed: dbbardata.vt_symbol

既然这样,尝试把数据库从默认的sqlite换成mongodb。配置如下,

"database.driver": "mongodb",

"database.host": "localhost",

"database.port": 27017,

"database.database": "vnpy",

"database.user": "root",

"database.password": "",

"database.authentication_source": "vnpy",

报错。。

把最后一个“,”去掉,就ok了。感叹于json的严谨。。

在ui中点击回测,也相应能出来净值图、回撤图、每日盈亏图和亏损分布图了。

——————————————分割线——————————————————

在调试过程中,发现需要在vnpy的安装库里改代码,很麻烦。

经高手指点,先pip uninstall vnpy,再在vnpy项目本地的setup.py所在目录下直接pip install -e vnpy。

而且改了之后,setting直接在trader.setting中取配置了;改之前是在.vntrader/vt_setting.json中取配置。

————————————————分割线————————————————

上述经验对于高手来说可能很无聊,但对于传统金融行业的非科技人员来说确实是一些有用的经验,而且也花了很多时间和精力,在此跟大家分享,也方便自己日后查找。

感谢过程中高手的指点。

接下来想开跑模拟盘,目前的困难是对策略运行所需盘中数据如何获取并及时写入数据库?

欢迎大神随时指点。

———————————————一更————————————————————

感谢 @王克勤 对rqdata出处的更正。

另外,关于初学者如何使用数据库工具来看下载到本地的.db文件的问题,有高手推荐使用Robo 3T(下载地址:https://robomongo.org/download)来查看mongodb的数据。

安装好了之后,点create创建连接界面,connection setting里命名,然后填入地址和端口,分别是localhost和27017,点connect就可以操作了。

点击左侧栏,右键点刷新,就会把mongodb里的数据库刷出来了。

以后有新内容或继续更新或写新的文章进行记录。

感谢支持~

vnpy怎么创建策略并回测_基于vnpy、rqdata的回测打通历程相关推荐

  1. vnpy怎么创建策略并回测_【手把手教你】入门量化回测最强神器backtrader(一)

    1 引言 目前基于Python的量化回测框架有很多,开源框架有zipline.vnpy.pyalgotrader和backtrader等,而量化平台有Quantopian(国外).聚宽.万矿.优矿.米 ...

  2. 光纤收发器的原理及应用_基于砷化镓传感器的光纤测温原理及其在地铁中的应用...

    1.概况 我们公司研究了一种新型的光纤测温技术及装置,其核心是基于砷化镓传感器对波长的吸收特性.介绍了该测温系统的组成和功能,分析了其在地铁中的应用实例,以及实际测温结果与地铁主所负荷的关系. 大型油 ...

  3. 基于op07的k型热电偶测量电路_基于K型热电偶的测温装置设计

    基于 K 型热电偶的测温装置设计 * 王安敏 孔令布 孟海彦 [摘 要] 摘 要 工业现场的温度检测大多以 K 型热电偶为传感器测量高温,针 对热电偶测量温度存在线性度差,测量误差大等问题.现采用 K ...

  4. 普中单片机怎么接霍尔传感器_基于51单片机的数字测速系统的设计方案

    本方案所设计的基于霍尔元件的脉冲发生器要求成本低,构造简单,性能好.在电气控制系统中存在着较为恶劣的电磁环境,因此要求产品本身要具有较强的抗干扰能力.系统主要由AT89S52 单片机处理系统.电机.传 ...

  5. python判断字符串是否回文_判断字符串是否为回文 python

    回文正序和逆序一样的字符串,例如abccba 方法一 def is_palindrome1(text): l = list(text) l.reverse() t1 = ''.join(l) if t ...

  6. python判断是否回文_对python判断是否回文数的实例详解

    设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数.例如,若n=1234321,则称n为一回文数:但若n=1234567,则n不是回文数. 上面的解释就是说回文数和逆 ...

  7. mysql下拉框回显_下拉框的回显 (修改时候)

    1.效果 2. 实现过程 2.1 点击修改的时候首先根据id去查询该条信息 2.2 显示页面 // 5. select  所属部门 $(function(){ var url="${page ...

  8. java超时事务回滚_查询超时和事务回滚的处理办法

    开发平台V百科|使用技巧: 顾名思义,就是在查询程序中,当查询超过了规定的时间,设备仍未就绪时,就引发超时错误.简单理解,就是查询的时间太长了. 如在日志里看到报错信息为 Statement canc ...

  9. 阿里云网盘公测_这软件终于开始公测了,百度网盘克星

    自从阿里云推出[阿里云网盘]这款产品之后,闹得是沸沸扬扬,虽然现在还没正式推出,但是已经有超多小伙伴表示等它出来以后就放弃百度网盘,毕竟度盘这限速实在有点折磨人 相比之下,阿里云网盘的上传下载不限速+ ...

最新文章

  1. 利用python实现Windows8定时自动关机和休眠
  2. kubelet配置cni插件_kubernetes网络插件对比分析(flannel、calico、weave)
  3. Tungsten Fabric SDN — 网络架构
  4. Eclipse启动报错Java was started but returned exit code=13
  5. ASP.NET MVC下的异步Action的定义和执行原理
  6. c语言中代码参数太少,C语言不定参数探究
  7. Java™ 教程(常见问题及其解决方案)
  8. C语言操作符详解 隐式类型转换 (整型提升 算数转换)
  9. mysql 事务 游标_mysql之——存储过程 + 游标 + 事务
  10. php做抖音在微信中播放,微信小程序实现抖音播放效果的实例代码
  11. 如何用Directshow采集摄像头图像
  12. c语言if语句知识点总结,c语言中if语句知识点总结
  13. 计算机通信机房消防要求,消防专用电话的设置场所及设计要求
  14. Ubuntu 20.04 搜狗输入法安裝
  15. android 优秀源码
  16. Erase/Trim/Discard/Sanitize
  17. 谈一谈网络编程学习经验(陈硕)
  18. Chrome浏览器,就是我所需要的浏览器
  19. 一万在农村能搞养殖吗?可以养多少山鸡?
  20. 微软面试100题2010年版全部答案集锦(含下载地址)

热门文章

  1. 面向对面 静态参数 与 组合
  2. error_reporting()函数
  3. ADO.NET 完整修改、删除、防字符串攻击
  4. 记录一次阻塞引发的系统超时
  5. Android入门之简单拨号器
  6. notepad++ :正则表达式系统教程(zz)
  7. [转 js] 分析JsUnit
  8. C#中计算流指定位置和长度的MD5值
  9. 字符串常量在内存中的存放位置由系统自动安排。_C++核心编程--内存分区模型...
  10. word文档怎么到下一页去写_「word技巧」懂得这几个word排版小技巧,还怕效率不高?...