backtrader package¶
Backtrader - Python Trading Framework.
A feature-rich Python framework for backtesting and trading with support for multiple data feeds, brokers, and analysis tools.
This module serves as the main entry point for the backtrader package, exposing all public APIs through a unified namespace.
示例
Basic usage:
import backtrader as bt
cerebro = bt.Cerebro()
data = bt.feeds.GenericCSVData(dataname='data.csv')
cerebro.adddata(data)
cerebro.addstrategy(MyStrategy)
results = cerebro.run()
cerebro.plot()
- Core Components:
Cerebro: Main engine that orchestrates backtesting
Strategy: Base class for trading strategies
Indicator: Base class for technical indicators
Analyzer: Base class for performance analyzers
Broker: Simulated broker for order execution
Feed: Data feed classes for market data input
- Subpackages:
analyzers: Performance analysis tools (Sharpe, Drawdown, etc.)
brokers: Broker implementations (IB, OANDA, etc.)
feeds: Data feed implementations (CSV, Pandas, Yahoo, etc.)
indicators: Technical indicators (SMA, RSI, MACD, etc.)
observers: Chart observers for visualization
sizers: Position sizing algorithms
stores: Data store implementations
filters: Data filtering utilities
参见
Documentation: https://www.backtrader.com/docu/
Subpackages¶
- backtrader.analyzers package
- Submodules
- backtrader.analyzers.annualreturn module
- backtrader.analyzers.calmar module
- backtrader.analyzers.drawdown module
- backtrader.analyzers.leverage module
- backtrader.analyzers.logreturnsrolling module
- backtrader.analyzers.periodstats module
- backtrader.analyzers.positions module
- backtrader.analyzers.pyfolio module
- backtrader.analyzers.returns module
- backtrader.analyzers.sharpe module
- backtrader.analyzers.sharpe_ratio_stats module
- backtrader.analyzers.sqn module
- backtrader.analyzers.timereturn module
- backtrader.analyzers.total_value module
- backtrader.analyzers.tradeanalyzer module
- backtrader.analyzers.transactions module
- backtrader.analyzers.vwr module
- Submodules
- backtrader.bokeh package
SchemeBlacklyTradimoBokehTabregister_tab()get_registered_tabs()get_datanames()get_strategy_label()sanitize_source_name()- Subpackages
- Submodules
- backtrader.brokers package
- backtrader.btrun package
- backtrader.commissions package
- backtrader.feeds package
- Submodules
- backtrader.feeds.blaze module
- backtrader.feeds.btcsv module
- backtrader.feeds.ccxtfeed module
- backtrader.feeds.chainer module
- backtrader.feeds.cryptofeed module
- backtrader.feeds.csvgeneric module
- backtrader.feeds.ctpdata module
- backtrader.feeds.ibdata module
- backtrader.feeds.influxfeed module
- backtrader.feeds.mt4csv module
- backtrader.feeds.oanda module
- backtrader.feeds.pandafeed module
- backtrader.feeds.quandl module
- backtrader.feeds.rollover module
- backtrader.feeds.sierrachart module
- backtrader.feeds.vcdata module
- backtrader.feeds.vchart module
- backtrader.feeds.vchartcsv module
- backtrader.feeds.vchartfile module
- backtrader.feeds.yahoo module
- Submodules
- backtrader.filters package
- backtrader.indicators package
- Subpackages
- Submodules
- backtrader.indicators.accdecoscillator module
- backtrader.indicators.aroon module
- backtrader.indicators.atr module
- backtrader.indicators.awesomeoscillator module
- backtrader.indicators.basicops module
- backtrader.indicators.bollinger module
- backtrader.indicators.cci module
- backtrader.indicators.crossover module
- backtrader.indicators.dema module
- backtrader.indicators.deviation module
- backtrader.indicators.directionalmove module
- backtrader.indicators.dma module
- backtrader.indicators.dpo module
- backtrader.indicators.dv2 module
- backtrader.indicators.ema module
- backtrader.indicators.envelope module
PlotLineAttrEnvelopeMixInEnvelopeAdaptiveMovingAverageEnvelopeDicksonMovingAverageEnvelopeDoubleExponentialMovingAverageEnvelopeExponentialMovingAverageEnvelopeHullMovingAverageEnvelopeMovingAverageSimpleEnvelopeSmoothedMovingAverageEnvelopeTripleExponentialMovingAverageEnvelopeWeightedMovingAverageEnvelopeZeroLagExponentialMovingAverageEnvelopeZeroLagIndicatorEnvelopenewcls
- backtrader.indicators.hadelta module
- backtrader.indicators.heikinashi module
- backtrader.indicators.hma module
- backtrader.indicators.hurst module
- backtrader.indicators.ichimoku module
- backtrader.indicators.kama module
- backtrader.indicators.kst module
- backtrader.indicators.lrsi module
- backtrader.indicators.mabase module
- backtrader.indicators.macd module
- backtrader.indicators.momentum module
- backtrader.indicators.myind module
- backtrader.indicators.ols module
- backtrader.indicators.oscillator module
OscillatorMixInOscillatorAdaptiveMovingAverageOscillatorDicksonMovingAverageOscillatorDoubleExponentialMovingAverageOscillatorExponentialMovingAverageOscillatorHullMovingAverageOscillatorMovingAverageSimpleOscillatorSmoothedMovingAverageOscillatorTripleExponentialMovingAverageOscillatorWeightedMovingAverageOscillatorZeroLagExponentialMovingAverageOscillatorZeroLagIndicatorOscillatornewcls
- backtrader.indicators.percentchange module
- backtrader.indicators.percentrank module
- backtrader.indicators.pivotpoint module
- backtrader.indicators.prettygoodoscillator module
- backtrader.indicators.priceoscillator module
- backtrader.indicators.psar module
- backtrader.indicators.rmi module
- backtrader.indicators.rsi module
- backtrader.indicators.sma module
- backtrader.indicators.smma module
- backtrader.indicators.stochastic module
- backtrader.indicators.trix module
- backtrader.indicators.tsi module
- backtrader.indicators.ultimateoscillator module
- backtrader.indicators.vortex module
- backtrader.indicators.williams module
- backtrader.indicators.wma module
- backtrader.indicators.zlema module
- backtrader.indicators.zlind module
- backtrader.mixins package
- backtrader.observers package
- backtrader.plot package
- backtrader.reports package
PerformanceCalculatorPerformanceCalculator.strategyPerformanceCalculator.__init__()PerformanceCalculator.get_all_metrics()PerformanceCalculator.get_pnl_metrics()PerformanceCalculator.get_risk_metrics()PerformanceCalculator.get_trade_metrics()PerformanceCalculator.get_kpi_metrics()PerformanceCalculator.get_equity_curve()PerformanceCalculator.get_buynhold_curve()PerformanceCalculator.sqn_to_rating()PerformanceCalculator.get_strategy_info()PerformanceCalculator.get_data_info()
ReportChartReportGenerator- Submodules
- backtrader.signals package
- backtrader.sizers package
- backtrader.stores package
- backtrader.tests package
- backtrader.utils package
OrderedDictAutoDictAutoDictListAutoOrderedDictDotDictLocalizer()date2num()num2date()num2dt()num2time()time2num()tzparse()- Submodules
Submodules¶
- backtrader.analyzer module
AnalyzerAnalyzer.csvAnalyzer.__init__()Analyzer.__len__()Analyzer.notify_cashvalue()Analyzer.notify_fund()Analyzer.notify_order()Analyzer.notify_trade()Analyzer.next()Analyzer.prenext()Analyzer.nextstart()Analyzer.start()Analyzer.stop()Analyzer.create_analysis()Analyzer.get_analysis()Analyzer.print()Analyzer.pprint()
TimeFrameAnalyzerBase
- backtrader.broker module
BrokerAliasMixinBrokerBaseBrokerBase.commissionBrokerBase.comminfoBrokerBase.commissionBrokerBase.__init__()BrokerBase.init()BrokerBase.start()BrokerBase.stop()BrokerBase.add_order_history()BrokerBase.set_fund_history()BrokerBase.getcommissioninfo()BrokerBase.setcommission()BrokerBase.addcommissioninfo()BrokerBase.getcash()BrokerBase.getvalue()BrokerBase.get_fundshares()BrokerBase.fundsharesBrokerBase.get_fundvalue()BrokerBase.fundvalueBrokerBase.set_fundmode()BrokerBase.get_fundmode()BrokerBase.fundmodeBrokerBase.getposition()BrokerBase.submit()BrokerBase.cancel()BrokerBase.buy()BrokerBase.sell()BrokerBase.next()
- backtrader.cerebro module
OptReturnCerebroCerebro.preloadCerebro.runonceCerebro.maxcpusCerebro.stdstatsCerebro.oldbuysellCerebro.oldtradesCerebro.lookaheadCerebro.exactbarsCerebro.optdatasCerebro.optreturnCerebro.objcacheCerebro.liveCerebro.writerCerebro.tradehistoryCerebro.oldsyncCerebro.tzCerebro.cheat_on_openCerebro.broker_cooCerebro.quicknotifyCerebro.__init__()Cerebro.iterize()Cerebro.set_fund_history()Cerebro.add_order_history()Cerebro.notify_timer()Cerebro.add_timer()Cerebro.addtz()Cerebro.addcalendar()Cerebro.add_signal()Cerebro.signal_strategy()Cerebro.signal_concurrent()Cerebro.signal_accumulate()Cerebro.addstore()Cerebro.addwriter()Cerebro.addsizer()Cerebro.addsizer_byidx()Cerebro.addindicator()Cerebro.addanalyzer()Cerebro.addobserver()Cerebro.addobservermulti()Cerebro.addstorecb()Cerebro.notify_store()Cerebro.adddatacb()Cerebro.notify_data()Cerebro.adddata()Cerebro.chaindata()Cerebro.rolloverdata()Cerebro.replaydata()Cerebro.resampledata()Cerebro.optcallback()Cerebro.optstrategy()Cerebro.addstrategy()Cerebro.setbroker()Cerebro.getbroker()Cerebro.brokerCerebro.plot()Cerebro.__call__()Cerebro.__getstate__()Cerebro.runstop()Cerebro.run()Cerebro.runstrategies()Cerebro.stop_writers()Cerebro.add_report_analyzers()Cerebro.generate_report()
- backtrader.comminfo module
CommInfoBaseCommInfoBase.COMM_PERCCommInfoBase.COMM_FIXEDCommInfoBase.commissionCommInfoBase.multCommInfoBase.marginCommInfoBase.commtypeCommInfoBase.stocklikeCommInfoBase.percabsCommInfoBase.interestCommInfoBase.interest_longCommInfoBase.leverageCommInfoBase.automarginCommInfoBase.__init__()CommInfoBase.get_margin()CommInfoBase.get_leverage()CommInfoBase.getsize()CommInfoBase.getoperationcost()CommInfoBase.getvaluesize()CommInfoBase.getvalue()CommInfoBase.getcommission()CommInfoBase.confirmexec()CommInfoBase.profitandloss()CommInfoBase.cashadjust()CommInfoBase.get_credit_interest()
CommissionInfoComminfoDCComminfoFuturesPercentComminfoFuturesFixedComminfoFundingRate
- backtrader.dataseries module
TimeFrameDataSeriesDataSeries._nameDataSeries._compressionDataSeries._timeframeDataSeries.plotinfoDataSeries.nameDataSeries.CloseDataSeries.LowDataSeries.HighDataSeries.OpenDataSeries.VolumeDataSeries.OpenInterestDataSeries.DateTimeDataSeries.LineOrderDataSeries.getwriterheaders()DataSeries.getwritervalues()DataSeries.getwriterinfo()DataSeries.get_name()DataSeries.frompackagesDataSeries.packages
OHLCOHLCDateTimeSimpleFilterWrapper
- backtrader.errors module
- backtrader.feed module
AbstractDataBaseAbstractDataBase.CONNECTEDAbstractDataBase.DISCONNECTEDAbstractDataBase.CONNBROKENAbstractDataBase.DELAYEDAbstractDataBase.LIVEAbstractDataBase.NOTSUBSCRIBEDAbstractDataBase.NOTSUPPORTED_TFAbstractDataBase.UNKNOWNAbstractDataBase.__init__()AbstractDataBase.resamplingAbstractDataBase.replayingAbstractDataBase.date2num()AbstractDataBase.num2date()AbstractDataBase.haslivedata()AbstractDataBase.do_qcheck()AbstractDataBase.islive()AbstractDataBase.put_notification()AbstractDataBase.get_notifications()AbstractDataBase.getfeed()AbstractDataBase.qbuffer()AbstractDataBase.start()AbstractDataBase.stop()AbstractDataBase.clone()AbstractDataBase.copyas()AbstractDataBase.setenvironment()AbstractDataBase.getenvironment()AbstractDataBase.addfilter_simple()AbstractDataBase.addfilter()AbstractDataBase.compensate()AbstractDataBase.advance_peek()AbstractDataBase.advance()AbstractDataBase.next()AbstractDataBase.preload()AbstractDataBase.load()AbstractDataBase.resample()AbstractDataBase.replay()AbstractDataBase.frompackagesAbstractDataBase.packages
DataBaseFeedBaseCSVDataBaseCSVFeedBaseDataClone
- backtrader.fillers module
- backtrader.flt module
- backtrader.functions module
- backtrader.indicator module
IndicatorRegistryIndicatorIndicator._ltypeIndicator.csvIndicator.aliasedIndicator.csvIndicator.__getitem__()Indicator.aliasedIndicator.__init_subclass__()Indicator.cleancache()Indicator.usecache()Indicator.advance()Indicator.preonce_via_prenext()Indicator.oncestart_via_nextstart()Indicator.once_via_next()Indicator.frompackagesIndicator.packages
LinePlotterIndicatorBaseLinePlotterIndicator
- backtrader.linebuffer module
LineBufferLineBuffer.UnBoundedLineBuffer.QBufferLineBuffer.__init__()LineBuffer.get_idx()LineBuffer.set_idx()LineBuffer.idxLineBuffer.reset()LineBuffer.qbuffer()LineBuffer.getindicators()LineBuffer.minbuffer()LineBuffer.__len__()LineBuffer.buflen()LineBuffer.__getitem__()LineBuffer.get()LineBuffer.getzeroval()LineBuffer.getzero()LineBuffer.__setitem__()LineBuffer.set()LineBuffer.home()LineBuffer.forward()LineBuffer.backwards()LineBuffer.safe_backwards()LineBuffer.rewind()LineBuffer.advance()LineBuffer.extend()LineBuffer.addbinding()LineBuffer.plot()LineBuffer.plotrange()LineBuffer.oncebinding()LineBuffer.bind2lines()LineBuffer.bind2line()LineBuffer.__call__()LineBuffer.datetime()LineBuffer.date()LineBuffer.time()LineBuffer.dt()LineBuffer.tm_raw()LineBuffer.tm()LineBuffer.tm_lt()LineBuffer.tm_le()LineBuffer.tm_eq()LineBuffer.tm_gt()LineBuffer.tm_ge()LineBuffer.tm2dtime()LineBuffer.tm2datetime()
LineActionsCacheLineActionsMixinPseudoArrayLineActionsLineDelay()LineNum()LinesOperationLineOwnOperation
- backtrader.lineiterator module
LineIteratorMixinLineIteratorLineIterator._nextforceLineIterator._mindatasLineIterator._ltypeLineIterator.plotinfoLineIterator.plotlinesLineIterator.PlotInfoObjLineIterator.plotinfoLineIterator.PlotLinesObjLineIterator.plotlinesLineIterator.IndTypeLineIterator.StratTypeLineIterator.ObsTypeLineIterator.__new__()LineIterator.__init__()LineIterator.stop()LineIterator.getindicators()LineIterator.getobservers()LineIterator.addindicator()LineIterator.bindlines()LineIterator.bind2lines()LineIterator.bind2line()LineIterator.preonce()LineIterator.oncestart()LineIterator.once()LineIterator.prenext()LineIterator.nextstart()LineIterator.qbuffer()LineIterator.__len__()LineIterator.advance()LineIterator.size()LineIterator.frompackagesLineIterator.packages
DataAccessorDataAccessor.PriceCloseDataAccessor.PriceLowDataAccessor.PriceHighDataAccessor.PriceOpenDataAccessor.PriceVolumeDataAccessor.PriceOpenInteresDataAccessor.PriceDateTimeDataAccessor.PriceCloseDataAccessor.PriceLowDataAccessor.PriceHighDataAccessor.PriceOpenDataAccessor.PriceVolumeDataAccessor.PriceOpenInteresDataAccessor.PriceDateTimeDataAccessor.frompackagesDataAccessor.packages
IndicatorBaseObserverBaseStrategyBaseSingleCouplerMultiCouplerLinesCoupler()LineCoupler()
- backtrader.lineroot module
LineRootMixinLineRootLineRoot.IndTypeLineRoot.StratTypeLineRoot.ObsTypeLineRoot.qbuffer()LineRoot.minbuffer()LineRoot.setminperiod()LineRoot.updateminperiod()LineRoot.addminperiod()LineRoot.incminperiod()LineRoot.prenext()LineRoot.nextstart()LineRoot.next()LineRoot.preonce()LineRoot.oncestart()LineRoot.once()LineRoot.size()
LineMultipleLineSingle
- backtrader.lineseries module
MinimalDataMinimalOwnerMinimalClockLineAliasLinesManagerLinesLines.getlinealiases()Lines.itersize()Lines.__init__()Lines.__iter__()Lines.__len__()Lines.size()Lines.fullsize()Lines.extrasize()Lines.get()Lines.forward()Lines.backwards()Lines.rewind()Lines.extend()Lines.reset()Lines.home()Lines.advance()Lines.buflen()Lines.__getattr__()Lines.__setattr__()
LineSeriesMixinLineSeriesLineSeries.linesLineSeries.plotinfoLineSeries.__new__()LineSeries.PlotInfoObjLineSeries.plotinfoLineSeries.PlotLinesObjLineSeries.plotlinesLineSeries.csvLineSeries.arrayLineSeries.lineLineSeries.lLineSeries.__getattr__()LineSeries.__setattr__()LineSeries.__len__()LineSeries.__getitem__()LineSeries.__init__()LineSeries.plotlabel()LineSeries.__call__()LineSeries.forward()LineSeries.backwards()LineSeries.rewind()LineSeries.extend()LineSeries.reset()LineSeries.home()LineSeries.advance()LineSeries.size()LineSeries.chkminLineSeries.frompackagesLineSeries.packages
LineSeriesStubLineSeriesStub.extralinesLineSeriesStub.__init__()LineSeriesStub.forward()LineSeriesStub.backwards()LineSeriesStub.rewind()LineSeriesStub.extend()LineSeriesStub.reset()LineSeriesStub.home()LineSeriesStub.advance()LineSeriesStub.qbuffer()LineSeriesStub.minbuffer()LineSeriesStub.frompackagesLineSeriesStub.packages
LineSeriesMaker()
- backtrader.mathsupport module
- backtrader.metabase module
- backtrader.observer module
- backtrader.order module
OrderExecutionBitOrderDataOrderParamsOrderBaseOrderBase.refOrderBase.brokerOrderBase.pOrderBase.DAYOrderBase.T_CloseOrderBase.T_DayOrderBase.T_DateOrderBase.T_NoneOrderBase.V_NoneOrderBase.MarketOrderBase.CloseOrderBase.LimitOrderBase.StopOrderBase.StopLimitOrderBase.StopTrailOrderBase.StopTrailLimitOrderBase.HistoricalOrderBase.ExecTypesOrderBase.OrdTypesOrderBase.BuyOrderBase.SellOrderBase.CreatedOrderBase.SubmittedOrderBase.AcceptedOrderBase.PartialOrderBase.CompletedOrderBase.CanceledOrderBase.ExpiredOrderBase.MarginOrderBase.RejectedOrderBase.CancelledOrderBase.StatusOrderBase.refbasisOrderBase.__init__()OrderBase.plimitOrderBase.clone()OrderBase.getstatusname()OrderBase.getordername()OrderBase.ExecType()OrderBase.ordtypename()OrderBase.active()OrderBase.activate()OrderBase.alive()OrderBase.addcomminfo()OrderBase.addinfo()OrderBase.isbuy()OrderBase.issell()OrderBase.setposition()OrderBase.submit()OrderBase.accept()OrderBase.brokerstatus()OrderBase.reject()OrderBase.cancel()OrderBase.margin()OrderBase.completed()OrderBase.partial()OrderBase.execute()OrderBase.expire()OrderBase.trailadjust()
OrderBuyOrderStopBuyOrderStopLimitBuyOrderSellOrderStopSellOrderStopLimitSellOrder
- backtrader.parameters module
ParameterDescriptorParameterManagerParameterManager.__init__()ParameterManager.get()ParameterManager.set()ParameterManager.reset()ParameterManager.update()ParameterManager.to_dict()ParameterManager.keys()ParameterManager.items()ParameterManager.values()ParameterManager.copy()ParameterManager.inherit_from()ParameterManager.get_inheritance_info()ParameterManager.lock_parameter()ParameterManager.unlock_parameter()ParameterManager.is_locked()ParameterManager.get_locked_parameters()ParameterManager.create_group()ParameterManager.get_group()ParameterManager.get_parameter_group()ParameterManager.set_group()ParameterManager.get_group_values()ParameterManager.set_lazy_default()ParameterManager.clear_lazy_default()ParameterManager.add_change_callback()ParameterManager.remove_change_callback()ParameterManager.get_change_history()ParameterManager.clear_history()ParameterManager.add_dependency()ParameterManager.remove_dependency()ParameterManager.get_dependencies()ParameterManager.get_dependents()ParameterManager.begin_transaction()ParameterManager.commit_transaction()ParameterManager.rollback_transaction()ParameterManager.is_in_transaction()
ParameterAccessorParameterizedBaseParameterizedBase.__init_subclass__()ParameterizedBase.__init__()ParameterizedBase.get_param()ParameterizedBase.set_param()ParameterizedBase.get_param_info()ParameterizedBase.validate_params()ParameterizedBase.reset_param()ParameterizedBase.reset_all_params()ParameterizedBase.get_modified_params()ParameterizedBase.copy_params_from()ParameterizedBase.__repr__()
Int()Float()FloatParam()BoolParam()StringParam()String()Bool()OneOf()create_param_descriptor()derive_params()ParamsBridgeParameterValidationErrorParameterAccessErrorvalidate_parameter_compatibility()
- backtrader.position module
- backtrader.resamplerfilter module
- backtrader.signal module
- backtrader.sizer module
- backtrader.store module
- backtrader.strategy module
StrategyStrategy.envStrategy.cerebroStrategy.brokerStrategy.datasStrategy.dataStrategy.positionStrategy.statsStrategy.analyzersStrategy.__new__()Strategy.__init__()Strategy.csvStrategy.log()Strategy.qbuffer()Strategy.prenext_open()Strategy.nextstart_open()Strategy.next_open()Strategy.start()Strategy.getwriterheaders()Strategy.getwritervalues()Strategy.getwriterinfo()Strategy.stop()Strategy.set_tradehistory()Strategy.clear()Strategy.add_timer()Strategy.notify_timer()Strategy.notify_cashvalue()Strategy.notify_fund()Strategy.notify_order()Strategy.notify_trade()Strategy.notify_store()Strategy.notify_data()Strategy.getdatanames()Strategy.getdatabyname()Strategy.cancel()Strategy.buy()Strategy.sell()Strategy.close()Strategy.buy_bracket()Strategy.sell_bracket()Strategy.order_target_size()Strategy.order_target_value()Strategy.order_target_percent()Strategy.getposition()Strategy.positionStrategy.getpositionbyname()Strategy.positionbynameStrategy.getpositions()Strategy.positionsStrategy.getpositionsbyname()Strategy.positionsbynameStrategy.setsizer()Strategy.getsizer()Strategy.sizerStrategy.getsizing()Strategy.frompackagesStrategy.packages
SignalStrategyBtApiStrategy
- backtrader.talib module
- backtrader.test_helpers module
- backtrader.timer module
- backtrader.trade module
- backtrader.tradingcal module
TradingCalendarBaseTradingCalendarBase._nextday()TradingCalendarBase.schedule()TradingCalendarBase.nextday()TradingCalendarBase.last_weekday()TradingCalendarBase.last_monthday()TradingCalendarBase.schedule()TradingCalendarBase.nextday()TradingCalendarBase.nextday_week()TradingCalendarBase.last_weekday()TradingCalendarBase.last_monthday()TradingCalendarBase.last_yearday()
TradingCalendarPandasMarketCalendar
- backtrader.version module
- backtrader.writer module