2.2 Lines内部数据格式
Lines在BackTrader中有特殊含义,是一种基于时序的数据组链条,相当于Pandas中的Series数据列。
一个Lines也被称作Lineseries,相当于一组数据。
如图2-3所示的OHLC金融数据格式,类似于Excel报表格式,有Open、Close等不同的字段。
图2-3 OHLC金融数据格式
图2-3中的每一列,都相当于BackTrader的一个Lines数据组。
为了提高运算效率,BackTrader底层数据采用了特殊的内部格式,这个特殊的数据格式就是Lines,用于存储和传递内部数据流。
Lines的概念非常抽象,如图2-4所示是Lines数据类型的内部属性分布。
在图2-4中,以下画线“_”开头的函数是类内部函数,可以无须考虑,其他主要函数如下。
● 常规操作函数:forward、backwards、rewind、extend、reset、home、advance、print、next。
● 数据处理函数:size、fullsize、get、buflen、len、getattr、setattr、abs、min、max。
● 其他类函数和属性:lines、zip、pow、eval、issubclass、isinstance、hasattr、iter。
图2-4 Lines数据类型的内部属性分布
如图2-5所示是BackTrader网站的关于Lines的文档截图。
图2-5 关于Lines的文档截图
网站文档称,在BackTrader软件中,几乎所有数据内部都采用Lines格式。从最终用户的角度来看,这意味着Lines可以容纳一个或多组Lines。一组Lines,类似于一维数据数组,将这些数据放在一起,在图中就可以形成一条线。
关于Lines(或Lineseries)的最好的例子,就是由股票收盘价形成的日线价格曲线,如图2-6所示。
图2-6 收盘价曲线
收盘价曲线图,实际上是收盘价格变化的图表展示形式,被称为Line on Close。
Lines具有一组数据,并且在执行过程中会动态增长,因此可以通过调用Python标准的Len函数或者Buflen函数,随时测量Lines数据长度。
● Len函数的返回值是:已经处理了多少数据。
● Buflen函数的返回值是:数据总数。
如果两个函数都返回相同的数值,则要么没有数据被预加载,要么已经完成对所有数据的处理。除非量化程序连接到实时数据源,否则意味着量化回测结束。