有很多人建立了自己本地的行情数据库,希望能够从本地数据库将数据发到backtrader,供策略使用。一个通用的方法是将数据库的行情数据读到pandas dataframe里,然后将这个数据帧的数据传给backtrader的pandas feed数据对象,这样策略就能够使用了。
但是有些同学不想通过pandas dataframe中转,而是想直接从数据库将数据喂给backtrader的数据馈送对象,这就需要针对数据库开发专门的data feed类了。
上一篇我们介绍了如何开发针对MySQL数据库的data feed,本篇介绍针对sqlite数据库的data feed开发。
以下就是backtrader社区提供的一个从sqlite数据库读取数据的feed类SQLiteData,大家可以试一试。
import datetime as dt
from backtrader import TimeFrame
from backtrader.feed import DataBase
from backtrader import date2num
class SQLiteData(DataBase):
'''
Fetches data from SQLite, and wraps it into a Feed consumable by cerebro
takes url connection string in form of :
sqlite://{database}
this implementation assumes a single table (historical_data) with all prices,
conforming to a schema similar to the following: