量化交易学习(十九)backtrader平台运行概念2数据源

今天这篇是backtrader文档的学习笔记。主要介绍了数据源的概念。

官方文档链接:https://www.backtrader.com/docu/operating/#up-and-running

运行

backtrader在运行时至少涉及3个线(Lines)对象:

一个数据源(Data feed)对象

一个策略(Strategy)对象(实际上是 Strategy 的派生类)

一个 Cerebro 对象(在西班牙语中是大脑的意思)

数据源(Data Feeds)对象

数据源对象在回测的过程中提供数据。

backtrader提供以下几种数据源:

  • CSV格式读取器

  • 雅虎在线数据获取器

  • Pandas DataFrame 和 blaze 对象中读取数据

  • 支持 Interacive Brokers、Visual Chart 和 Oanda 提供的实时数据

backtrader不对数据源的内容(例如时间范围和压缩)做出任何假设。可以对数据源进行一些高级操作,例如数据源重采样(例如将 5 分钟频率的数据源转换为日频数据源)

下面是一个使用雅虎财经数据源的示例:

1
2
3
4
5
6
7
8
9
10
import backtrader as bt
import backtrader.feeds as btfeeds

...

datapath = 'path/to/your/yahoo/data.csv'

data = btfeeds.YahooFinanceCSVData(
dataname=datapath,
reversed=True)

可选的参数 reversed 用于反转日期,因为直接从雅虎下载的数据是从最新日期开始的,而不是从最早的日期开始。

如果你的数据的时间跨度很大,可以通过下面的方式限制实际加载的数据范围:

1
2
3
4
5
data = btfeeds.YahooFinanceCSVData(
dataname=datapath,
reversed=True
fromdate=datetime.datetime(2014, 1, 1),
todate=datetime.datetime(2014, 12, 31))

如果 fromdatetodate在数据源中存在,则它们会被包含在加载的数据中。

另外还可以添加timeframecompressionname属性:

1
2
3
4
5
6
7
8
9
data = btfeeds.YahooFinanceCSVData(
dataname=datapath,
reversed=True
fromdate=datetime.datetime(2014, 1, 1),
todate=datetime.datetime(2014, 12, 31)
timeframe=bt.TimeFrame.Days,
compression=1,
name='Yahoo'
)

在画图时,这几个属性值会被用上。


这一篇就到这里啦。欢迎大家点赞、转发、私信。还没有关注我的朋友可以关注 江达小记

江达小记