哪位大神能讲讲这段代码呢,运行了后 输出完
2020-11-23 14:05:06,807 INFO: 主引擎创建成功
2020-11-23 14:05:06,809 INFO: 注册日志事件监听
2020-11-23 14:05:06,935 INFO: 交易服务器连接成功
2020-11-23 14:05:06,947 INFO: 行情服务器连接成功
2020-11-23 14:05:07,045 INFO: 交易服务器授权验证成功
2020-11-23 14:05:07,045 INFO: 行情服务器登录成功
2020-11-23 14:05:07,160 INFO: 交易服务器登录成功
2020-11-23 14:05:09,437 INFO: 结算信息确认成功
2020-11-23 14:05:19,790 INFO: 合约信息查询成功
2020-11-23 14:05:21,811 INFO: 连接CTP接口
2020-11-23 14:05:21,811 INFO: 开始录制数据
然后就没反应了,也没发现有数据录入数据库
诚心求指导!
xiaohe wrote:
用RPC创建一个独立的进程应该就行了,但是sqlite只能支持单进程写入,所以如果要同时开多个进程来录制或者导入数据请使用其他几个带服务器的数据库
谢谢xiaohe!!昨天翻论坛 翻到一个用户“丘”的行情录制文章,启发很大,我先试试他的方法
大佬们,我看vnpy项目库里没有单独开进程进行行情记录的demo code(论坛里好像有小伙伴说有。。),有没有大佬分享下,感谢!!
再额外记录下这个问题之前的问题
win10 64
先按照longgerchen用户的评论进行处理:
“我解决问题了!!!!!!!!
其实就是windows系统没有 微软运行库的原因,比如缺少V C++ 、Virtual、MUCR等。最简单的方法就是360软件管家里搜索“微软常用运行库合集”,直接安装。
啥??问我为啥不百度这些来安装?百度不到啊!!!”
还有林大用户:
解决方案:
1.下载并安装Win64 OpenSSL v1.1.1d Light
文件下载地址:http://slproweb.com/products/Win32OpenSSL.html
我是参考上面两个用户的帖子更新了,记录下,感谢
解决方法:
打开C:\vnstudio\lib\site-packages\tzlocal\win32.py文件
在74行代码之后添加:
tzkeyname= "China"
总之上面一堆代码就是没有获取到正确的tzkeyname,所以直接将tzkeyname设置一个值,保存,不知道是否有什么隐患
重装pytz模块也无法解决
电脑win10 64位,之前的经验贴已阅读,但是这个错误前面的人没遇到
运行python -m vnstation
返回:
(VN Studio) C:\vnstudio>python -m vnstation
Traceback (most recent call last):
File "C:\vnstudio\lib\runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "C:\vnstudio\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\vnstudio\lib\site-packages\vnstation__main.py", line 4, in <module>
cli()
File "C:\vnstudio\lib\site-packages\click\core.py", line 829, in call
return self.main(args, kwargs)
File "C:\vnstudio\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "C:\vnstudio\lib\site-packages\click\core.py", line 1236, in invoke
return Command.invoke(self, ctx)
File "C:\vnstudio\lib\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, ctx.params)
File "C:\vnstudio\lib\site-packages\click\core.py", line 610, in invoke
return callback(args, kwargs)
File "C:\vnstudio\lib\site-packages\click\decorators.py", line 21, in new_func
return f(get_current_context(), *args, kwargs)
File "C:\vnstudio\lib\site-packages\vnstation\cli.py", line 15, in cli
run()
File "C:\vnstudio\lib\site-packages\click\core.py", line 829, in call
return self.main(args, kwargs)
File "C:\vnstudio\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "C:\vnstudio\lib\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, ctx.params)
File "C:\vnstudio\lib\site-packages\click\core.py", line 610, in invoke
return callback(args, **kwargs)
File "C:\vnstudio\lib\site-packages\vnstation\cli.py", line 20, in run
import vnstation.run
File "C:\vnstudio\lib\site-packages\vnstation\run.py", line 4, in <module>
from vnpy.trader.ui import QtGui, create_qapp
File "C:\vnstudio\lib\site-packages\vnpy\trader\ui\init__.py", line 11, in <module>
from .mainwindow import MainWindow
File "C:\vnstudio\lib\site-packages\vnpy\trader\ui\mainwindow.py", line 14, in <module>
from .widget import (
File "C:\vnstudio\lib\site-packages\vnpy\trader\ui\widget.py", line 19, in <module>
from ..engine import MainEngine
File "C:\vnstudio\lib\site-packages\vnpy\trader\engine.py", line 42, in <module>
from .setting import SETTINGS
File "C:\vnstudio\lib\site-packages\vnpy\trader\setting.py", line 30, in <module>
"database.timezone": get_localzone().zone,
File "C:\vnstudio\lib\site-packages\tzlocal\win32.py", line 93, in get_localzone
_cache_tz = pytz.timezone(get_localzone_name())
File "C:\vnstudio\lib\site-packages\tzlocal\win32.py", line 84, in get_localzone_name
raise pytz.UnknownTimeZoneError('Can not find timezone ' + tzkeyname)
pytz.exceptions.UnknownTimeZoneError: 'Can not find timezone '
用Python的交易员 wrote:
回测可以通过on_bar收到的bar.datetime.day,来判断是否换日,换日后则立即进行一次你要跑的svm拟合,再去执行后面正常的策略逻辑即可。
注意实盘中,要在盘前自己跑完拟合,配置到策略里,不要开盘后跑拟合。。。
谢谢大佬指导!大佬,我理解是对于我们vnpy这种以类的形式创建实例化策略的,不太容易直接在类里面实现盘前运行(before_trading)逻辑对么?
我想尽力实现回测代码和实盘代码的一致性(米筐有before_trading,实盘代码和回测代码完全一致,回测完可直接运行实盘),有没有办法让vnpy的回测逻辑和实盘逻辑 都能有这个“before_trading”规则(这样代码比较统一)?
米筐before_trading函数功能介绍:
before_trading(context)
可选择实现的函数。每天在策略开始交易前会被调用。不能在这个函数中发送订单。需要注意,该函数的触发时间取决于用户当前所订阅合约的交易时间。举例来说,如果用户订阅的合约中存在有夜盘交易的期货合约,则该函数可能会在前一日的 20:30 触发,而不是早晨 08:00.
-----------------------------------分隔符---------------------------------
米筐before_trading函数功能可以让用户在实盘和回测中每日盘前都**取到历史数据**并训练svm模型,在vnpy的策略类里需要实现这个需求,有以下两个疑惑:
问题描述:
一、我理解实际业务中(非回测)通过每天重新实例化策略可以实现每个交易日触发on_init(self),但是在回测过程中(假设回测30个交易日),要如何实现回测中30个交易日中的每个交易日开盘前都触发on_init(self)? 目前看到的策略示例,都是回测过程中仅执行一次初始化,然后回测完所有交易日。
二、我想训练多个svm模型,需要在盘前花较长时间完成,回测中每天训练盘前svm模型的函数是否可以写在on_init(self)里么,这个函数里面能取历史数据么,需要使用至少5000根bar数据。如果on_init(self)不能取数据训练svm模型,那应该写在那里?
求教两个问题!感谢大佬!
守望长城2020-6-11-艾瑞巴蒂 wrote:
守望长城2020-6-11-艾瑞巴蒂 wrote:
xiaohe wrote:
vnpy的数据是从9:00开始的
可参考https://www.vnpy.com/forum/topic/1706-qing-wen-hui-ce-shi-shi-yong-9:01dao-3:00-huan-shi-cong-9:00dao-xia-wu-2:59de-shu-ju感谢! 我还是改成从9:01 开始录制了,希望能帮到有需要的朋友:
utility.py中修改, 用最笨的方法改的:
- self.bar.datetime = self.bar.datetime+timedelta(minutes=1)
self.on_bar(self.bar)
self.bar.datetime = self.bar.datetime-timedelta(minutes=1)
这些代码有问题, 抱歉
“这些代码有问题, 抱歉”这是改好了还是没改好?请教!