howtrader bar数据来源

howtrader 2.1.8.0
一、在on_tick函数中加上一行self.bg.update_tick(tick)就可以实现K线合成
二、howtrader\gateway\binance\binance_gateway.py中BinanceDataWebsocketApi推送bar数据到on_bar

        elif channel == "kline_1m":

            dt = generate_datetime(float(data['k']['t']))
            if dt < bar.datetime and bar.close_price > 0:
                # filter the older kline.
                return
            bar.open_price = float(data['k']['o'])
            bar.high_price = float(data['k']['h'])
            bar.low_price = float(data['k']['l'])
            bar.close_price = float(data['k']['c'])
            bar.volume = float(data['k']['v'])
            bar.datetime = dt
            if data['k']['x']:  # bar finished
                self.gateway.on_bar(copy(bar))

目前看来两种方式每一种应该都可以,
############################################################
更正,howtrader计算binance k线数据不能使用update_tick(tick)K线合成方法,因为VNPY Trader是根据tick的数据来合成分钟的K线,然后再讲分钟的K线合成更高界别的K线数据。但是币安的api他们推送的ticker数据是滚动24小时的ticker数据,成交的价格和量都是过去24小时的数据

 {
 "e": "24hrTicker",  // 事件类型
 "E": 123456789,     // 事件时间
 "s": "BNBBTC",      // 交易对
 "p": "0.0015",      // 24小时价格变化
 "P": "250.00",      // 24小时价格变化(百分比)
 "w": "0.0018",      // 平均价格
 "x": "0.0009",      // 整整24小时之前,向前数的最后一次成交价格
 "c": "0.0025",      // 最新成交价格
 "Q": "10",          // 最新成交交易的成交量
 "b": "0.0024",      // 目前最高买单价
 "B": "10",          // 目前最高买单价的挂单量
 "a": "0.0026",      // 目前最低卖单价
 "A": "100",         // 目前最低卖单价的挂单量
 "o": "0.0010",      // 整整24小时前,向后数的第一次成交价格
 "h": "0.0025",      // 24小时内最高成交价
 "l": "0.0010",      // 24小时内最低成交加
 "v": "10000",       // 24小时内成交量
 "q": "18",          // 24小时内成交额
 "O": 0,             // 统计开始时间
 "C": 86400000,      // 统计结束时间
 "F": 0,             // 24小时内第一笔成交交易ID
 "L": 18150,         // 24小时内最后一笔成交交易ID
 "n": 18151          // 24小时内成交数
}

根据这样的ticker数据处理,实际上得分钟的数据是不对的。所以需要订阅分钟的数据,然后拿到分钟的数据进行合成。
如图所对比在这里插入图片描述

观看了大佬的博客搞懂了这个原理针对VNPY的软件bugs的修改总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值