首页 > 分享 > backtrader指南

backtrader指南

最新推荐文章于 2024-09-09 17:28:46 发布

lipo8081 于 2021-05-29 17:46:57 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

Backtrader是一个用于量化交易的平台,支持数据回测和策略制定。它提供了Data Feeds,Cerebro等核心概念,允许用户处理不同时间框架的数据,进行数据重播和过滤。用户可以自定义策略类,利用Cerebro执行回测,同时支持数据优化和内存管理,以适应各种回测需求。

摘要由CSDN通过智能技术生成

目录 Backtrader 基础概念 Data Feeds Shortcurs for Data Feeds Omitting the Data Feeds Line Lines declaration Accessing `lines` in Data Feed Lines len Inheritance of Lines and Params Indexing: 0 and -1 Slicing Getting Slice Lines:DELAYED indexing Lines Coupling Operators, using natural constructs 操作平台 Up and Running Data Feeds A Strategy(derived) class A Cerebro Cerebro Cerebro Cerebro 收集输入数据 执行回测 返回结果 绘图 回测逻辑 Cerebro - Memory Savings Saving Memory Optimization improvements Data Feed Management 运行测试 Exception 异常基类 访问异常 已知的异常 Writer 将writer添加到系统中 DataFeed Data Feed Data Feed Common paramters CSV Data Feed Common parameters GenericCSVData Extending a Datafeed Data - Multiple Timeframes Data Resampling Data Replay - 数据重播 Data Filter

Backtrader

用于量化交易的机器人,可以对于数据进行有效回测和指定策略等。

基础概念

Data Feeds

平台工作的基础将通过策略完成。这些将通过数据馈送,数据馈送以数组的形式自动提供给策略的成员变量,并提供数组位置的快捷方式。

class MyStrategy(bt.Strategy): params = dict(period=20) def __init__(self): sma = btind.SimpleMovingAverage(self.datas[0], period=self.params.period) ... cerebro = bt.Cerebro() ... data = btfeeds.MyFeed(...) cerebro.adddata(data) ... cerebro.addstrategy(MyStrategy, period=30) ...

12345678910111213141516171819

Tip:

*args和**kwargs该策略的__init__方法可以接收使用 self.datas为一个数组/列表/可迭代对象,需要至少有一项数据 Shortcurs for Data Feeds self.data表示self.datas[0] self.dataX表示self.datas[X]

class MyStrategy(bt.Strategy): params = dict(period=20) def __init__(self): sma = btind.SimpleMovingAverage(self.data, period=self.params.period) 12345 Omitting the Data Feeds

class MyStrategy(bt.Strategy): params = dict(period=20) def __init__(self): sma = btind.SimpleMovingAverage(period=self.params.period) 12345 Line

大部分对象都包含一个Line对象,用户角度上来看

它可以容纳一个或多个线,是一系列的线,是一组值的数组,放置在图表中表现为一条线

比较经典的线是由股票收盘价形成的线,称为收盘时线

class MyStrategy(bt.Strategy): params = dict(period=20) def __init__(self): self.movav = btind.SimpleMovingAverage(self.data, period=self.params.period) def next(self): if self.movav.lines.sma[0] < self.data.lines.close[0]: print('平均线高于收盘价格') 123456789

常见的缩写形式

xxxx.lines -> xxx.l xxx.lines.name -> xxx.line_name self.data_name -> self.data.lines.name self.data1_name -> self.data1.lines.name Lines declaration

定义对象中的线对象,可以采用line的类参数。

class SimpleMovingAverage(Indicator): lines = ('sma', ) 12

访问:

self.lines[0] -> self.lines.sma self.line -> self.lines[0] self.lineX -> self.lines[X] self.line_X -> self.lines[X] self.dataY -> self.data.lines[Y] self.dataX_Y -> self.data[X].lines[Y] Accessing lines in Data Feed

通过省略形式访问lines数据

data = btfeeds.BacktraderCSVData(dataname="mydata.csv") ... class MyStrategy(bt.Strategy): ... def next(self): if self.data.close[0] > 30.0: ... 123456789 Lines len

线对象

相关知识

幼鸟指南
入境指南
热带鱼饲养指南热带鱼饲养指南热带鱼饲养指南热带鱼饲养指南:带盖鱼缸的养护秘籍
投稿指南
指南猫旅行
养鼠指南
新版新生儿复苏指南
狗狗饲养指南
出游指南,宠物出游指南。
宠物鼠购买指南

网址: backtrader指南 https://m.mcbbbk.com/newsview674406.html

所属分类:萌宠日常
上一篇: ​宠物类型指南金毛寻回猎犬——“
下一篇: 探索小仓鼠的可爱世界:宠物、习性