最近和大家讨论了窗口和间隔的问题,很多朋友可能对这个概念不是很清楚,所以越说越迷糊,我把他写写吧。
数据周期就是我们平时选择的如1分钟K线,5分钟K线的那个时间单位,1分钟,5分钟,1日,1周等;数据窗口是指一个固定时间,比如5分钟的数据窗口,就是用当前5分钟的数据进行统计值计算;而间隔就是在数据窗口内,取值的步长。
首先我抛出一个问题,比如“求5分钟的收盘价均值”。其实这样的提问不准确,用更准确点的语言提问就是“窗口为5分钟,间隔为n的收盘价均值”,因为每tick(500ms)都有数据到来,间隔为1的话,就是每个tick到来的数据(没有数据到来用一种补齐机制填充)就可以看做是他的open,high,low,close,因为只有一个数据。如果间隔为n,那么就把时间窗口5分钟内的所有数据分成n“等分”,然后计算出每“等分”数据中的open,high,low,close,分别为每等分数据中的第一个数据,最大值数据,最小值数据,最后一个数据。因此相同的时间窗口,在不同间隔下的统计值是不一样的,要准确刻画出一个成交价格序列的统计值,间隔是必不可少的一个参数。我们要计算的是,某一个时间窗口的序列统计值,比如收盘价的1分钟,5分钟,10分钟均值,可变的参数是你计算的时间间隔,不同的时间间隔会影响你的统计的值。
目前常见的交易软件,比如TB,文华,金字塔等等,他的程序化交易是基于数据周期,也就是他的每根K线数据而计算,判断,发出交易信号的。所以程序里面所编写的求均值的函数,实际上的求的n个bar上某个数据的均值。比如MA(close,n),其中的n指的是n个数据周期,而非n分钟。而选择的tick,5s,。。1min等等那些值其实刻画的是数据的间隔,因此每选择一次,时间的窗口就变化了。举个例子,我程序写的是MA(close,5),然后选择的是5s的k线bar,时间间隔就是5x2=10,也就是说每根k线bar的数据是由10个tick数据计算出来的,而时间窗口就是5x5=25s;这时更改为1min的k线bar,那么时间间隔就是1x60x2=120,而时间窗口变成了1min x 5=5分钟。
这两个概念一定不能混淆,如果使用这些交易软件进行程序化编程的时候,为了事先设计的时间窗口不发生改变,在程序里对于那个n就必须做出处理,不然类似于“求5分钟的收盘价均值”就只能适应一种时间的k线bar选项。
|