VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 15
声望: 0

请教一下原因是什么?

相关代码如下:
def on_5min_bar(self, bar: BarData):

    self.cancel_all()
    self.am_5min.update_bar(bar)
    # 其余代码...
    if not self.am_5min.inited:
        print('5_bar initialization Failed')
        print(f"5分钟K线数量: {self.am_5min.count}")
        return

前期初始化没有问题,代码如下:
def on_init(self):
"""策略初始化"""
self.bg_5min = BarGenerator(
self.on_bar, 5, self.on_5min_bar, interval=Interval.MINUTE)

    self.am_5min = ArrayManager(size=60)

    self.load_bar(
        days=10,
        interval=Interval.MINUTE,
        use_database=True
    )
    self.write_log('Initialized')

输出如下
DEBUG:peewee:('SELECT t1.id, t1.symbol, t1.exchange, t1.datetime, t1.interval, t1.volume, t1.turnover, t1.open_interest, t1.open_price, t1.high_price, t1.low_price, t1.close_price FROM dbbardata AS t1 WHERE (((((t1.symbol = %s) AND (t1.exchange = %s)) AND (t1.interval = %s)) AND (t1.datetime >= %s)) AND (t1.datetime <= %s)) ORDER BY t1.datetime', ['ru2509', 'SHFE', '1m', datetime.datetime(2025, 6, 10, 21, 6, 57, 155907, tzinfo=zoneinfo.ZoneInfo(key='Asia/Shanghai')), datetime.datetime(2025, 6, 20, 21, 6, 57, 155907, tzinfo=zoneinfo.ZoneInfo(key='Asia/Shanghai'))])

description

另一个策略合成的15min_bar就没有这个问题。

Member
avatar
加入于:
帖子: 5498
声望: 334

你打印的就是没初始化成功前的size,初始化成功之后就有60了

Member
avatar
加入于:
帖子: 15
声望: 0

对,我知道的,我做排查用的。之前的策略是直接初始化就成功了(load size是一样的),这个会一直print 50遍failed然后才进入。麻烦问下具体是什么原因?是同时加载几个策略会让load bar变慢吗?

Member
avatar
加入于:
帖子: 5498
声望: 334

am都要一根根的存储,直到有size根了才能inited成功。如果你是已经60根了然后减少了,那么查一下代码看看有没有对am的array做编辑
如果count是从0到60那就是正常的

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

沪公网安备 31011502017034号

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