首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >买入/卖出地块标记位置错误

买入/卖出地块标记位置错误
EN

Stack Overflow用户
提问于 2021-09-20 03:36:13
回答 1查看 38关注 0票数 0

我的代码附在下面,带有示例输出。我正在尝试绘制我的策略的交易,但它们在输出中显示得很奇怪。买入/卖出的标记有时不在曲线上,只是漂浮在空间中。这让我认为我的数据有错误。你知道为什么会这样吗?

代码语言:javascript
复制
import backtrader as bt
import backtrader.analyzers as btanalyzers
import matplotlib
from datetime import datetime
 
class MaCrossStrategy(bt.Strategy):
 
    params = (
        ('fast_length', 5),
        ('slow_length', 25)
    )
     
    def __init__(self):
        self.crossovers = []
         
        for d in self.datas: 
            ma_fast = bt.ind.SMA(d, period = self.params.fast_length)
            ma_slow = bt.ind.SMA(d, period = self.params.slow_length)
 
            self.crossovers.append(bt.ind.CrossOver(ma_fast, ma_slow))
 
    def next(self):
        for i, d in enumerate(self.datas):
            if not self.getposition(d).size:
                if self.crossovers[i] > 0: 
                    self.buy(data = d)
            elif self.crossovers[i] < 0: 
                self.close(data = d)
 
cerebro = bt.Cerebro()
 
stocks = ['SPY', 'QQQ', 'VOO']
for s in stocks: 
    data = bt.feeds.YahooFinanceData(dataname = s, fromdate = datetime(2010, 1, 1), todate = datetime(2020, 1, 1))
    cerebro.adddata(data, name = s)
 
 
cerebro.addstrategy(MaCrossStrategy)
 
cerebro.broker.setcash(1000000.0)
 
cerebro.addsizer(bt.sizers.PercentSizer, percents = 10)
 
cerebro.addanalyzer(btanalyzers.SharpeRatio, _name = "sharpe")
cerebro.addanalyzer(btanalyzers.Returns,     _name = "returns")
cerebro.addanalyzer(btanalyzers.Transactions, _name = "trans")
 
back = cerebro.run()
 
cerebro.broker.getvalue()
back[0].analyzers.returns.get_analysis()['rnorm100']
back[0].analyzers.sharpe.get_analysis()
back[0].analyzers.trans.get_analysis()

cerebro.plot(style='candlestick')
EN

回答 1

Stack Overflow用户

发布于 2021-09-20 22:59:21

我已经确定了错误在数据中,或者backtraders Yahoo.py在进行在线拉取时如何处理它。手动下载数据并使用YahooFinanceCSVData()打开数据时,不会出现错误。在线数据收集版本YahooFinanceData()已经存在一个已知问题,这可能与此相关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69248834

复制
相关文章

相似问题

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