backtrader策略逻辑可使用的信息不限于datafeed,而是任何信息。你还没意识到吧?

backtrader自带的所有案例和文档,以及网络上几乎所有文章,编写策略逻辑时,使用的信息都仅限于datafeed提供的数据。这很容易给初学者造成一个印象,即编制策略时,只能使用datafeed里的信息。

而有时,我们的策略需要一些不适合放到datafeed里的额外信息,能不能做到这点呢?完全可以,只要把这些外部信息放到普通pandas dataframe里,以参数形式传给策略(注意,不是传给datafeed),策略即可随意使用这些信息。

在这里插入图片描述
代码模板如下

...
# 创建策略类
class SmaCross(bt.Strategy):
    # 定义参数
    params = dict( period_fast=5,  # 移动平均期数
             dataframe=None, # 数据帧参数
)
    def __init__(self):
        # 移动平均线指标
        self.move_average = bt.ind.MovingAverageSimple(
            period=self.params.periodfast)

     def next(self):
         # 策略逻辑,这里可以访问self.p.dataframe的内容用于逻辑
         ...

...
###########
# 主程序开始
############
...
df = ... # 定义所需dataframe
cerebro.addstrategy(SmaCross, period_fast=3, dataframe=df)  # 将策略注入引擎,注意参数设置
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
backtrader是一个用于开发交易策略的Python框架,它提供了许多功能强大的工具和类来帮助交易者开发和测试交易策略。其中,backtraderdatafeed是用于提供数据的类,它可以从各种来源获取数据,并将其转换为backtrader所需的格式。 下面是backtraderdatafeed代码详解: ```python from datetime import datetime import backtrader as bt class MyDataFeed(bt.feeds.GenericCSVData): params = ( ('dtformat', '%Y-%m-%d'), # 数据的时间格式 ('datetime', 0), # 数据中时间所在的列数 ('open', 1), # 开盘价所在的列数 ('high', 2), # 最高价所在的列数 ('low', 3), # 最低价所在的列数 ('close', 4), # 收盘价所在的列数 ('volume', 5), # 成交量所在的列数 ('openinterest', -1), # 持仓量所在的列数,默认为-1,表示有持仓量数据 ) ``` 代码中定义了一个名为MyDataFeed的类,它继承自backtrader的GenericCSVData类,这个类是backtrader内置的用于读取CSV格式数据的类,如果我们需要读取其他格式的数据,可以继承GenericCSVData类并进行修改。 在params参数中,我们定义了许多数据的属性,包括时间格式、开盘价、最高价、最低价、收盘价、成交量和持仓量等。这些属性需要根据数据文件的格式进行设置,如果数据文件与上述定义的属性不同,则需要进行修改。 接下来,我们需要实例化这个类,并将数据文件的路径传递给它: ```python data = MyDataFeed(dataname='data.csv') ``` 这行代码中,我们创建了一个名为data的对象,并将数据文件的路径(data.csv)传递给它。这个对象现在可以被用于backtrader策略中,数据将会按照我们定义的格式进行读取和处理。 总之,backtraderdatafeed是一个非常强大的类,它可以从各种来源获取数据,并将其转换为backtrader所需的格式。我们只需要根据数据文件的格式进行一些简单的设置,就可以轻松地获取数据并进行回测分析。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地僧量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值