您的位置:  首页 » 量化交易与机器学习 » backtrader » 延伸的Datafeed- backtrader中文教程

扩展在GitHub的一个Datafeed

Issues实际上正在推动到整理文档的部分或帮助我了解,如果backtrader具有易用性和灵活性的我从第一时刻想到并沿way.

In这种情况下做出的决定是问题#9.

The问题似乎终于归结为:

  • 灿最终用户轻松地扩展现有的机制,以增加额外的在线条的形式被沿着其他现有的价格传递的信息信息点像open, high等等

据我了解问题的答案是:Yes

The海报似乎有这些要求(从问题#6):

  • 正被解析成CSV format
  • Using数据源GenericCSVData加载information

    This通用CSV支持是针对这一问题#6

  • An额外的字段,这显然包含了需要被P / E信息发达沿解析CSV Data

让我们建立的CSV数据馈送发展GenericCSVData示例posts.

Steps:

  • 假设P / E信息是在其中parsed
  • UseGenericCSVData为基数CSV数据被设置class
  • Extend的existng线(打开/高/低/关闭/ volumen / openinterest)与pe
  • 添加一个参数来让调用者确定在P / E的列位置information

The结果:

from backtrader.feeds import GenericCSVData

class GenericCSV_PE(GenericCSVData):

    # Add a "pe" line to the inherited ones from the base class
    lines = ("pe",)

    # openinterest in GenericCSVData has index 7 ... add 1
    # add the parameter to the parameters inherited from the base class
    params = (("pe", 8),)

而且任务完成…

后来并使用此数据文件时的策略里面:

import backtrader as bt

....

class MyStrategy(bt.Strategy):

    ...

    def next(self):

        if self.data.close > 2000 and self.data.pe < 12:
            # TORA TORA TORA --- Get off this market
            self.sell(stake=1000000, price=0.01, exectype=Order.Limit)
    ...

绘制额外的P /Ëline

There显然是在数据线外没有自动情节支持feed.

The最好的选择是做在该线路上SimpleMovingAverage和绘制它在一个单独的轴:

import backtrader as bt
import backtrader.indicators as btind

....

class MyStrategy(bt.Strategy):

    def __init__(self):

        # The indicator autoregisters and will plot even if no obvious
        # reference is kept to it in the class
        btind.SMA(self.data.pe, period=1, subplot=False)

    ...

    def next(self):

        if self.data.close > 2000 and self.data.pe < 12:
            # TORA TORA TORA --- Get off this market
            self.sell(stake=1000000, price=0.01, exectype=Order.Limit)
    ...

发表评论

电子邮件地址不会被公开。 必填项已用*标注