首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >策略购买并持有月度Backtrader

策略购买并持有月度Backtrader
EN

Stack Overflow用户
提问于 2020-04-02 14:48:29
回答 1查看 450关注 0票数 0

当我使用下面的策略运行我的backtrader代码时,它不起作用。有人会知道为什么吗?甚至没有调用notify_timer函数!谢谢!

代码语言:javascript
复制
import math  
import backtrader as bt

class BuyEveryMonth(bt.Strategy):
    params = (('monthly_amount', 100),)

    def start(self):
        self.add_timer(bt.timer.SESSION_END, monthdays=[3], monthcarry = True,) 

    def notify_timer(self, timer, when, *args, **kwargs):
        # Add the influx of monthly cash to the broker
        self.broker.add_cash(self.params.monthly_amount)

        # buy available cash
        self.size = math.floor(self.broker.getcash() / self.data.close)
        print("{}: Buy {} shares at {}".format(self.datetime.date(ago=0), self.size, self.data.close[0]))
        print(self.size)
        self.buy(size=self.size)
EN

回答 1

Stack Overflow用户

发布于 2020-07-16 02:46:11

我不知道起点是从哪里来的。你的策略在我的机器上运行得很好,尽管它并没有真正做任何事情...我刚刚做了两个调整:

  1. init()
  2. removing替换init(arg1,arg2,argn,)

中的尾随逗号

提供:

代码语言:javascript
复制
def __init__(self):
  self.add_timer(bt.timer.SESSION_END, monthdays=[3], monthcarry=True)
  
def notify_timer(self, timer, when, *args, **kwargs):
  # Add the influx of monthly cash to the broker
  self.broker.add_cash(self.params.monthly_amount)

  # buy available cash
  self.size = math.floor(self.broker.getcash() / self.data.close)
  print("{}: Buy {} shares at {}".format(self.datetime.date(ago=0), self.size, self.data.close[0]))
  print(self.size)
  self.buy(size=self.size)

然后再调用它,如下所示:

代码语言:javascript
复制
...
# Create a cerebro entity
cerebro = bt.Cerebro()

# Add a strategy
cerebro.addstrategy(BuyEveryMonth)
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60985700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档