跳转至

Engine API 签名

tradelearn.engine 是 Backtrader 风格高级入口。本文档的签名来自运行时代码,参数说明由生成器元数据补充。

本页偏查询:用于核对函数签名、参数名和返回值。第一次写策略请先看 Lite GuideEngine GuideStrategy Writing Guide

Generated from tradelearn.engine code signatures by scripts/generate_api_reference.py.

Cerebro.__init__

创建 Backtrader 风格的高级事件驱动回测运行器。

Cerebro.__init__(self, match_mode: 'str' = 'exact', callback_batch: 'int' = 1, trade_on_close: 'bool' = False, exactbars: 'bool' = False, stdstats: 'bool' = True, slippage: 'Any | None' = None, commission: 'Any | None' = None, mode: 'str' = 'backtest', stats_mode: 'str' = 'full', **kwargs: 'Any') -> 'None'
参数 类型 默认值 说明
match_mode str 'exact' exact 对齐 Backtrader bar 级撮合; smart 使用趋势路径推演和止损优先悲观撮合。
callback_batch int 1 保留参数。正式事件驱动路径仍逐 bar callback。
trade_on_close bool False 是否在当前 bar close 成交; 默认下一根 bar open 成交。
exactbars bool False Backtrader 兼容保留参数。
stdstats bool True 是否挂载默认 observer。
slippage Any \| None None slippage 配置对象。
commission Any \| None None commission 配置对象。
mode str 'backtest' backtest / paper / live; 当前主路径是 backtest。
stats_mode str 'full'
**kwargs Any required 保留给 Backtrader facade 的额外配置。

返回: Cerebro 实例。

import tradelearn.engine as bt

cerebro = bt.Cerebro(match_mode='exact')

Cerebro.adddata

添加一个 DataFrame 或 DataFeed 到运行器。

Cerebro.adddata(self, data: 'Any', name: 'Any | None' = None) -> 'Any'
参数 类型 默认值 说明
data Any required 包含 open/high/low/close/volume 的 DataFrame,或已经构造好的 DataFeed。
name Any \| None None 数据名称; 后续可通过 datasbynamegetdatabyname() 查询。

返回: 添加后的 data feed。

Cerebro.addstrategy

注册策略类及策略参数。

Cerebro.addstrategy(self, strategy: 'type[Strategy]', *args: 'Any', **kwargs: 'Any') -> 'None'
参数 类型 默认值 说明
strategy type[Strategy] required bt.Strategy 子类。
*args Any required 传给策略构造的 positional 参数。
**kwargs Any required 传给策略参数系统的 keyword 参数。

返回: None

Cerebro.run

执行回测并返回策略实例列表。

Cerebro.run(self, **kwargs: 'Any') -> 'list[Strategy]'
参数 类型 默认值 说明
**kwargs Any required

返回: list[Strategy]

results = cerebro.run()
strategy = results[0]

Strategy.buy

提交买入订单。

Strategy.buy(self, data: 'Any' = None, size: 'float | None' = None, price: 'float | None' = None, exectype: 'int | None' = None, **kwargs)
参数 类型 默认值 说明
data Any None 目标数据 feed; 默认主数据。
size float \| None None 订单数量; None 时使用 sizer。
price float \| None None Limit/Stop 价格。
exectype int \| None None Order.Market / Order.Limit / Order.Stop 等。
**kwargs Any required 订单元数据,如 parentocotransmitinfo

返回: Order

Strategy.sell

提交卖出订单。

Strategy.sell(self, data: 'Any' = None, size: 'float | None' = None, price: 'float | None' = None, exectype: 'int | None' = None, **kwargs)
参数 类型 默认值 说明
data Any None 目标数据 feed; 默认主数据。
size float \| None None 订单数量; None 时使用 sizer。
price float \| None None Limit/Stop 价格。
exectype int \| None None Order.Market / Order.Limit / Order.Stop 等。
**kwargs Any required 订单元数据,如 parentocotransmitinfo

返回: Order

Strategy.buy_bracket

提交买入 bracket 订单,生成 main / stop / limit 三联订单。

Strategy.buy_bracket(self, data=None, size=None, price=None, plimit=None, exectype=2, valid=None, trailamount=None, trailpercent=None, oargs=None, stopprice=None, stopexec=3, stopargs=None, limitprice=None, limitexec=2, limitargs=None, **kwargs)
参数 类型 默认值 说明
data Any None 目标数据 feed; 默认主数据。
size Any None 订单数量。
price Any None 主订单价格。
plimit Any None 主订单 limit price 别名。
exectype Any 2 主订单执行类型。
valid Any None 订单有效期,当前作为元数据保留。
trailamount Any None Trailing stop 金额参数。
trailpercent Any None Trailing stop 百分比参数。
oargs Any None 主订单额外参数。
stopprice Any None 止损订单触发价格。
stopexec Any 3 止损订单执行类型。
stopargs Any None 止损订单额外参数。
limitprice Any None 止盈订单价格。
limitexec Any 2 止盈订单执行类型。
limitargs Any None 止盈订单额外参数。
**kwargs Any required 透传给底层订单的额外参数。

返回: list[Order]: [main, stop, limit]

Strategy.order_target_percent

按账户权益比例调整目标持仓。

Strategy.order_target_percent(self, data: 'Any' = None, target: 'float' = 0.0, **kwargs)
参数 类型 默认值 说明
data Any None 目标数据 feed; 默认主数据。
target float 0.0 目标权益比例,如 0.5 表示 50%。
**kwargs Any required 透传给 buy / sell / close

返回: Order | None

Engine 完整接口

下表从运行时代码自动抽取,用于补足 Guide 未逐段展开的常用接口。

Cerebro

Member Kind Signature Summary
Cerebro.setcash method (self, cash: 'float') -> 'None'
Cerebro.getbroker method (self) -> 'Any'
Cerebro.setbroker method (self, broker: 'Any') -> 'None'
Cerebro.setcommission method (self, commission: 'float' = 0.0, margin: 'float' = 0.0, mult: 'float' = 1.0, comminfo: 'Any' = None, name: 'str | None' = None) -> 'None' Set commission parameters or a custom CommInfo object.
Cerebro.set_coc method (self, coc: 'bool' = True) -> 'None'
Cerebro.adddata method (self, data: 'Any', name: 'Any | None' = None) -> 'Any'
Cerebro.chaindata method (self, *args: 'Any', **kwargs: 'Any') -> 'Any'
Cerebro.rolloverdata method (self, *args: 'Any', **kwargs: 'Any') -> 'Any'
Cerebro.resampledata method (self, data: 'Any', timeframe: 'int', compression: 'int' = 1, name: 'str | None' = None, **kwargs: 'Any') -> 'DataFeed'
Cerebro.replaydata method (self, data: 'Any', *args: 'Any', **kwargs: 'Any') -> 'Any'
Cerebro.addstrategy method (self, strategy: 'type[Strategy]', *args: 'Any', **kwargs: 'Any') -> 'None'
Cerebro.optstrategy method (self, strategy: 'type[Strategy]', *args: 'Any', **kwargs: 'Any') -> 'None'
Cerebro.addanalyzer method (self, analyzer: 'type[Analyzer]', *args: 'Any', _name=None, **kwargs: 'Any') -> 'None'
Cerebro.addobserver method (self, observer: 'type[Any]', *args: 'Any', _name=None, **kwargs: 'Any') -> 'None'
Cerebro.addwriter method (self, writer: 'type[Any]', *args: 'Any', **kwargs: 'Any') -> 'None'
Cerebro.getwriterheaders method (self) -> 'list[Any]'
Cerebro.getwriterinfo method (self) -> 'list[Any]'
Cerebro.getwritervalues method (self) -> 'list[Any]'
Cerebro.addstore method (self, store: 'Any') -> 'None'
Cerebro.addtimer method (self, *args: 'Any', **kwargs: 'Any') -> 'None'
Cerebro.addcalendar method (self, calendar: 'Any') -> 'None'
Cerebro.addsizer method (self, sizer: 'type[Any]', **kwargs: 'Any') -> 'None'
Cerebro.setsizer method (self, sizer: 'type[Any]', **kwargs: 'Any') -> 'None'
Cerebro.add_signal method (self, sigtype: 'int', sigcls: 'type', *sigargs: 'Any', **sigkwargs: 'Any') -> 'None'
Cerebro.signal_strategy method (self, stratcls: 'type', *args: 'Any', **kwargs: 'Any') -> 'None'
Cerebro.signal_concurrent method (self, onoff: 'bool') -> 'None'
Cerebro.signal_accumulate method (self, onoff: 'bool') -> 'None'
Cerebro.runstop method (self) -> 'None'
Cerebro.plot method (self, *args: 'Any', **kwargs: 'Any') -> 'list[Any]' Return market replay charts for the most recent run.
Cerebro.run method (self, **kwargs: 'Any') -> 'list[Strategy]'

Strategy

Member Kind Signature Summary
Strategy.datetime property `` Shortcut for self.data.datetime to match backtrader behavior.
Strategy.position property ``
Strategy.start method (self)
Strategy.init method (self)
Strategy.prenext method (self)
Strategy.next method (self)
Strategy.stop method (self)
Strategy.notify_order method (self, order: 'Any')
Strategy.notify_trade method (self, trade: 'Any')
Strategy.notify_cashvalue method (self, cash: 'float', value: 'float')
Strategy.getposition method (self, data: 'Any' = None) -> 'Position'
Strategy.getdatabyname method (self, name: 'str') -> 'Any'
Strategy.getpositionbyname method (self, name: 'str') -> 'Position'
Strategy.setsizer method (self, sizer: 'Any', name: 'Any' = None) -> 'Any'
Strategy.getsizer method (self) -> 'Any'
Strategy.getsizing method (self, data: 'Any' = None, isbuy: 'bool' = True) -> 'float'
Strategy.submit_order method (self, side: 'int', data: 'Any' = None, size: 'float | None' = None, price: 'float | None' = None, exectype: 'int | None' = None, **kwargs) Submit a shared event-driven order through the bound broker.
Strategy.buy method (self, data: 'Any' = None, size: 'float | None' = None, price: 'float | None' = None, exectype: 'int | None' = None, **kwargs)
Strategy.sell method (self, data: 'Any' = None, size: 'float | None' = None, price: 'float | None' = None, exectype: 'int | None' = None, **kwargs)
Strategy.close method (self, data: 'Any' = None, size: 'float | None' = None, **kwargs)
Strategy.cancel method (self, order: 'Any')
Strategy.order_target_size method (self, data: 'Any' = None, target: 'float' = 0, **kwargs)
Strategy.order_target_value method (self, data: 'Any' = None, target: 'float' = 0.0, price: 'float | None' = None, **kwargs)
Strategy.order_target_percent method (self, data: 'Any' = None, target: 'float' = 0.0, **kwargs)
Strategy.buy_bracket method (self, data=None, size=None, price=None, plimit=None, exectype=2, valid=None, trailamount=None, trailpercent=None, oargs=None, stopprice=None, stopexec=3, stopargs=None, limitprice=None, limitexec=2, limitargs=None, **kwargs)
Strategy.sell_bracket method (self, data=None, size=None, price=None, plimit=None, exectype=2, valid=None, trailamount=None, trailpercent=None, oargs=None, stopprice=None, stopexec=3, stopargs=None, limitprice=None, limitexec=2, limitargs=None, **kwargs)
Strategy.addminperiod method (self, minperiod: 'int') -> 'None' Extend the strategy warmup period used before calling next.