前言
想开始量化学习不知道如何入手?市面上的学习资料太多不知道该怎么看?
博主将从零基础讲解回测框架,一步步完成量化数据源的搭建,让你10天内成为量化高手
博主同时将视频课程内容在B站更新,可以关注“量化NPC”获取最新的视频课程
本篇文章可配合观看效果更佳:
backtrader量化回测保姆级教学【1.初识backtrader】–附免费tick级别行情源
backtrader量化回测保姆级教学【2.backtrader框架介绍】–附免费tick级别行情源
所使用的csv文件,在文章结尾附录部分。
backtrader框架
主要分为6块,Backtrader当中最核心的是中间这个cerebro就是大脑,然后把策略strategies和数据datafeeds放到cerebro大脑当中,他就会按照我们的策略去回测,回测之后就可以对我们的结果进行分析,可以交给分析器analyzer。如果希望对结果做一些本地化做一个保存的话,就可以用writer,那么整个策略执行过程当中肯定有一些东西它并不包含于结果,比如说我们策略的净值,是整个区间都应该被监控下来的,像这种指标的话,我们会有observer这样的一个观测者来进行一个监控。
四步回测
第一步:创建大脑
cerebro = bt.Cerebro()
第二步:添加数据集
cerebro.adddata(data, name="daily_kline")
需要注意的是backtrader默认的,datafeed一共必须参数有9个包含
必填参数 | 描述 |
---|---|
datetime | 时间 |
fromdate | 回测起始时间 |
todate | 回测结束时间 |
open | 开盘价 |
high | 最高价 |
low | 收盘价 |
close | 收盘价 |
volume | 成交量 |
openinterest | 未结利息,如果是股票交易,这里可以为-1. |
添加数据源可以使用两种方法
- 是传入已有的数据集,比如xxx.csv文件,本文使用的csv文件已经上传,点击此处下载
df = pd.read_csv("daily-kline.csv")
df["time"] = pd.to_datetime(df["time"])
data = bt.feeds.PandasData(
dataname=df,
fromdate=datetime(2021, 5, 10),
todate=datetime(2022, 5, 10),
datetime='time',
open='open',
high='high',
low='low',
close='close',
volume='volume',
openinterest=-1
)
- 使用接口返回的数据,比如INSIGHT提供的数据接口
这里可以注意到有部分的参数没有写进去,比如open,close之类,是因为INSIGHT的返回值中已经包含对应字段,且已经为dataframe格式,所以可以无需申明。
如果对INSIGHT感兴趣的用户可以访问:INSIGHT数字文档
如果想看各类数据源对比的可以看:量化免费行情源最强对比分析
df = get_kline(htsc_code=["601688.SH"], time=[datetime(2021, 5, 10), datetime(2022, 5, 10)],
frequency="daily", fq="none")
#这里可以将INSIGHT接口的数据保存为csv
#csv = df.to_csv("daily-kline.csv")
data = bt.feeds.PandasData(
dataname=df,
fromdate=datetime(2021, 5, 10),
todate=datetime(2022, 5, 10),
datetime='time',
openinterest=-1
)
当然因为要调用INSIGHT行情源需要引入对应的包以及登录操作
from com.insight import common
from com.insight.query import