python模块backtrade使用问题

上网、浏览、聊天、下载等
回复
jinjiachen
帖子: 2148
注册时间: 2012-12-16 15:43
系统: debian

python模块backtrade使用问题

#1

帖子 jinjiachen » 2021-05-30 22:17

在学习回测,用到backtrade模块,有个非常奇怪的问题,如下:
1. 在交互的python中,可以导入backtrader模块,并调用backtrader.Cerebro(),见附件截图
2.运行相关程序文件却没有Cerebro这个属性,代码如下

代码: 全选

#!/usr/bin/python3
#coding=utf8

import backtrader as bt

if __name__ == '__main__':
    cerebro = bt.Cerebro()
    cerebro.broker.setcash(100000.0)
    print('Starting Porfolio Value:%.2f' %cerebro.broker.getvalue())
    cerebro.run()
    print('Final Portfolio Value:%.2f' %cerebro.broker.getvalue())
我怀疑是不是和backtrader同时支持python2,3两个版本有关,因为我发现我用pip3安装的模块,python2也可以导入,但是系统同时依赖两个版本的python,不可能删除其中一个版本,不过这也只是我的猜测,大家有遇到过吗,另外我的系统是:Ubuntu 18.04.5 LTS

补上问题2运行程序文件的结果
附件
2021-05-30-221859_599x98_scrot.png
2021-05-30-220954_669x127_scrot.png
头像
astolia
论坛版主
帖子: 6570
注册时间: 2008-09-18 13:11

Re: python模块backtrade使用问题

#2

帖子 astolia » 2021-05-31 11:39

在虚拟机上测试,刚安装的18.04.5系统上并没有遇到这个问题。
你执行也是用的python3,也牵扯不到python2。
在cerebro = bt.Cerebro()这句前面加上个print(dir(bt)),看看backtrader模块变啥样了
jinjiachen
帖子: 2148
注册时间: 2012-12-16 15:43
系统: debian

Re: python模块backtrade使用问题

#3

帖子 jinjiachen » 2021-05-31 20:48

astolia 写了: 2021-05-31 11:39 在虚拟机上测试,刚安装的18.04.5系统上并没有遇到这个问题。
你执行也是用的python3,也牵扯不到python2。
在cerebro = bt.Cerebro()这句前面加上个print(dir(bt)),看看backtrader模块变啥样了
执行后输出如下:

代码: 全选

python3 back.py 
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'bt']
Traceback (most recent call last):
  File "back.py", line 8, in <module>
    cerebro = bt.Cerebro()
AttributeError: module 'backtrader' has no attribute 'Cerebro'
但是我在交互环境中运行输出如下:

代码: 全选

dir(bt)
['AbstractDataBase', 'All', 'Analyzer', 'And', 'Any', 'AutoDictList', 'AutoInfoClass', 'AutoOrderedDict', 'BackBroker', 'BacktraderError', 'BrokerBase', 'BuyOrder', 'CSVDataBase', 'CSVFeedBase', 'Cerebro', 'Cmp', 'CmpEx', 'CommInfoBase', 'CommissionInfo', 'DTFaker', 'DataAccessor', 'DataBase', 'DataClone', 'DataSeries', 'DivByZero', 'DivZeroByZero', 'DotDict', 'FeedBase', 'Filter', 'If', 'Indicator', 'IndicatorBase', 'ItemCollection', 'LineActions', 'LineAlias', 'LineBuffer', 'LineCoupler', 'LineDelay', 'LineIterator', 'LineMultiple', 'LineNum', 'LineOwnOperation', 'LinePlotterIndicator', 'LineRoot', 'LineSeries', 'LineSeriesMaker', 'LineSeriesStub', 'LineSingle', 'Lines', 'LinesCoupler', 'LinesOperation', 'Lines_LineSeries', 'Lines_LineSeries_LineSeriesStub', 'List', 'Logic', 'MAXINT', 'Max', 'MetaAbstractDataBase', 'MetaAnalyzer', 'MetaBroker', 'MetaCSVDataBase', 'MetaIndicator', 'MetaLineActions', 'MetaLineIterator', 'MetaLineSeries', 'MetaObserver', 'MetaParams', 'MetaSigStrategy', 'MetaStrategy', 'MetaTimeFrameAnalyzerBase', 'Min', 'MtLinePlotterIndicator', 'MultiCoupler', 'MultiLogic', 'MultiLogicReduce', 'NAN', 'OHLC', 'OHLCDateTime', 'Observer', 'ObserverBase', 'OptReturn', 'Or', 'Order', 'OrderBase', 'OrderData', 'OrderExecutionBit', 'OrderedDict', 'PandasMarketCalendar', 'Position', 'PseudoArray', 'Reduce', 'Replayer', 'ReplayerDaily', 'ReplayerMinutes', 'ReplayerMonthly', 'ReplayerSeconds', 'ReplayerTicks', 'ReplayerWeekly', 'Resampler', 'ResamplerDaily', 'ResamplerMinutes', 'ResamplerMonthly', 'ResamplerSeconds', 'ResamplerTicks', 'ResamplerWeekly', 'ResamplerYearly', 'SESSION_END', 'SESSION_START', 'SESSION_TIME', 'SIGNAL_LONG', 'SIGNAL_LONGEXIT', 'SIGNAL_LONGEXIT_ANY', 'SIGNAL_LONGEXIT_INV', 'SIGNAL_LONGSHORT', 'SIGNAL_LONG_ANY', 'SIGNAL_LONG_INV', 'SIGNAL_NONE', 'SIGNAL_SHORT', 'SIGNAL_SHORTEXIT', 'SIGNAL_SHORTEXIT_ANY', 'SIGNAL_SHORTEXIT_INV', 'SIGNAL_SHORT_ANY', 'SIGNAL_SHORT_INV', 'SellOrder', 'Signal', 'SignalStrategy', 'SignalTypes', 'SimpleFilterWrapper', 'SingleCoupler', 'Sizer', 'SizerBase', 'SizerFix', 'StopBuyOrder', 'StopLimitBuyOrder', 'StopLimitSellOrder', 'StopSellOrder', 'Store', 'Strategy', 'StrategyBase', 'StrategySkipError', 'Sum', 'TimeFrame', 'TimeFrameAnalyzerBase', 'Timer', 'Trade', 'TradeHistory', 'TradingCalendar', 'TradingCalendarBase', 'WriterBase', 'WriterFile', 'WriterStringIO', '__btversion__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', 'absolute_import', 'analyzer', 'analyzers', 'array', 'backtrader', 'broker', 'brokers', 'bt', 'calendar', 'cerebro', 'cmp', 'collections', 'comminfo', 'commissions', 'comms', 'copy', 'dataseries', 'date', 'date2num', 'datetime', 'division', 'errors', 'feed', 'feeds', 'filler', 'fillers', 'filter', 'filters', 'findowner', 'flt', 'functions', 'functools', 'ind', 'indicator', 'indicators', 'inspect', 'integer_types', 'io', 'islice', 'iteritems', 'itertools', 'itervalues', 'keys', 'linebuffer', 'lineiterator', 'lineroot', 'lineseries', 'map', 'math', 'mathsupport', 'metabase', 'multiprocessing', 'num2date', 'num2time', 'obs', 'observer', 'observers', 'operator', 'order', 'os', 'position', 'pp', 'print_function', 'range', 'resamplerfilter', 'signal', 'signals', 'sizer', 'sizers', 'store', 'stores', 'strategies', 'strategy', 'strats', 'string_types', 'studies', 'sys', 'talib', 'time2num', 'timedelta', 'timer', 'trade', 'tradingcal', 'tzparse', 'unicode_literals', 'utils', 'version', 'with_metaclass', 'writer', 'zip']
不知道为啥会有不同,是环境变量的原因?
jinjiachen
帖子: 2148
注册时间: 2012-12-16 15:43
系统: debian

Re: python模块backtrade使用问题

#4

帖子 jinjiachen » 2021-05-31 21:03

找到问题所在,项目文件夹下面有同名文件导致的,把相应文件删除,清除缓存文件后可以运行了,感谢
回复