图表背后的秘密 | 了解VN.PY中的K线合成器

​在之前的文章中我们已经学会自己用Python编写代码来合成K线,那么现在来了解下VN.PY中的K线合成器BarGenerator的工作原理。

BarGenerator的定义在utility文件中:

在这里我们可以看到,BarGenerator的作用分两个:

第一个是generating1minute bar data from tick data。就是用tick数据来合成一分钟K线的数据。

第二个则是generatingx minute bar/x hour data from 1 minute data,就是用一分钟的K线再去合成后面的X分钟K线或者X小时的K线。

这里的注释中还有一个Notice,这里的意思是说你的X必须是可以被60整除的数,比如2、3、5、6、10、15、20、30(分钟)等等。这个主要是考虑到在K线合成上大家一般的使用习惯。

在创建BarGenerator对象的时候,需要的参数除了self,还有四个,分别是on_bar、window、on_window_bar和interval。他们分别的意思是这样:

1、on_bar:当一分钟的K线合成完成的时候,BarGenerator会自动去调用这一回调函数。

2、window:要合成的周期数,也就是X分钟或X小时的X。如果windows=0,就不会合成X分钟或者X小时的K线。

3、on_window_bar:要合成的自定义周期的K线合成之后对应的回调函数。

4、interval:要合成的周期,默认是MINUTE。可以是MINUTE、HOUR、DAILY、WEEKLY这四种中的一种。

在策略中,我们只需要在on_tick函数中加上一行self.bg.update_tick(tick)就可以实现K线合成,不需要了解BarGenerator的实现细节:

我们每收到一个tick数据的推送,就会调用一次bg.update_tick,把新的tick数据加载的K线合成器中。K线合成器会自己判断什么时候一分钟已经走完了,需要更新K线。

我们最后再来看看update_tick这个函数的实现细节:

猜你喜欢

转载自blog.csdn.net/m0_62038975/article/details/123891337