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

米筐的1分钟k线从9:01开始,代表9:00:00到9:01:00(左闭右开)这段时间的数据描述。
我的理解是,从1分钟线合成15分钟线时,应该走完9:01~9:15这15根k线才进行合成。
我在米筐的研究环境中做了实验,如果取每天早上的第一条15分钟K线,其成交量为前15分钟K线之和(如下图所示),即用到了9:01~9:15这15条数据。
description

但是vnpy在合成xmin bar的逻辑有如下代码:

if not (bar.datetime.minute + 1) % self.window:
    finished = True

由于这个“+1”的存在,导致程序走完9:14这一根k线的时候就合成完毕了,实际上只用了前14根k线。不知道这算不算bug呢?

我理解实盘的时候是将tick数据转换成分钟数据,因此vnpy是以一分钟的开始作为标记,即用9:30标记9:30~9:31(左闭右开)的数据;然而米筐数据是采用分钟的结束作为标记,即用9:31来标记9:30~9:31(左闭右开)的数据。如果是做回测,是不是会导致分钟k线错位?举个例子:
15分钟K线应该对应以9:16~9:30标记的分钟数据,而vnpy在回测时用到的数据却是9:15~9:29,因为代码中的“+1“,恰好错位了1分钟。

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

可不可以这样理解:
使用CTP接口合成的分钟K线时从00分钟开始,至59分钟结束,因此需要bar.datetime.minute + 1做调整;
但是回测用数据的分钟K线时从01分钟就开始至00分钟结束,如果还用同样的逻辑就会出问题

Administrator
avatar
加入于:
帖子: 4985
声望: 291

不会,vn.py在下载米筐数据时做了调整,保证时间戳的回测和实盘 一致

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

用Python的交易员 wrote:

不会,vn.py在下载米筐数据时做了调整,保证时间戳的回测和实盘 一致

谢谢回复,如果我用其他数据源构建历史数据库的话,是不是要先把K线时间戳调整成K线开始时间点(9:01变成9:00)再做回测呢

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

是的

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

沪公网安备 31011502017034号