本文按“用户重写的回调 / 用户调用的方法 / 常用属性 / 返回值判读”四部分汇总全部接口,便于编写时快速对照。各接口的参数与示例见对应章节。
用户重写的回调
| 签名 |
说明 |
__init__(self, *args, **kwargs) |
创建策略对象时初始化。普通字段、subscribe_bars 写在这里,且在 super().__init__(...) 之后 |
on_start(self) |
策略实例启动后一次:订阅、设置历史深度、注册定时器 |
on_resume(self) |
热启动恢复时,早于 on_start;用于恢复连接、快照续跑 |
on_stop(self) |
策略停止时;用于汇总统计、资源释放,不应下单 |
on_bar(self, bar) |
每根 K 线闭合时;主交易逻辑 |
on_window_bar(self, bar) |
subscribe_bars 的高周期窗口闭合时;窗口不参与撮合,下单放在 on_bar |
on_tick(self, tick) |
每个 Tick 到达时 |
on_timer(self, payload) |
定时器到点时;按 payload 分支 |
on_order(self, order) |
订单状态变化时 |
on_trade(self, trade) |
收到成交回报时 |
on_reject(self, order) |
订单首次进入 Rejected;同一订单号只触发一次 |
on_error(self, error, source, payload=None) |
用户回调抛异常时;受 self.error_mode 控制 |
on_before_trading(self, trading_date, timestamp) |
交易日前边界;只能看到前一日信息 |
on_pre_open(self, event) |
盘前;仅回测,实盘不触发,实盘改用 schedule_daily 或 on_before_trading |
on_cross_section(self, trading_date, timestamp) |
当日首个跨标的完整切片后;横截面同周期调仓,每天最多一次 |
on_after_trading(self, trading_date, timestamp) |
交易日后边界;日终统计与清理 |
on_portfolio_update(self, snapshot) |
账户快照变化时;增量触发,可用 self.portfolio_update_eps 过滤 |
用户调用的方法
行情、历史与标的信息
| 方法 |
说明 |
subscribe_bars(freq, callback=None, symbols=None, *, session_windows=None) |
声明高周期窗口。只能在 __init__ 调用 |
current_window(symbol, freq) |
尚未闭合的当前窗口快照 |
set_history_depth(depth) |
设置历史 Bar 缓存长度 |
history(symbol, normalized_field, count, history_cutoff, freq) |
双流历史,freq 为 "bar" 或 "tick" |
get_history(count, symbol=None, field="close", freq=None) |
Bar 历史数组;freq 填已订阅的窗口周期 |
get_history_map(count, symbols, field="close") |
多标的历史,返回 dict[str, ndarray] |
get_history_df(count, symbol=None) |
K 线表格,返回 DataFrame |
get_instrument(symbol) |
单个标的静态信息,返回 InstrumentSnapshot |
get_instruments(symbols=None) |
批量查询,返回 dict[str, InstrumentSnapshot] |
get_instrument_field(symbol, field) |
取单个字段值 |
get_instrument_config(symbol, fields=None) |
取单值、字典或完整快照 |
交易与调仓
| 方法 |
说明 |
buy(...) |
买入,多头开仓 |
sell(...) |
卖出已有多头,多头平仓 |
short(...) |
卖出开空,需账户支持做空 |
cover(...) |
买入平空,空头平仓 |
close_position(symbol=None) |
清仓,返回 None |
order_target / order_target_value / order_target_percent |
单标的目标仓位 |
rebalance_weights / rebalance_positions / rebalance_to_topn |
多标的组合调仓 |
cancel_order / cancel_group / cancel_all_orders |
撤单 |
place_oco / place_bracket / place_trailing_stop / place_trailing_stop_limit |
OCO、括号单、跟踪止损 |
查询
| 方法 |
说明 |
get_position / get_available_position |
总持仓 / 可卖 |
get_holding_bars |
持有 Bar 数;实盘恒为 0 |
positions / position |
全部持仓字典 / 当前标的仓位对象(属性,无参数) |
get_account |
账户快照字典 |
get_open_orders / get_order |
活动订单 / 单笔订单 |
get_trades |
已闭合交易 |
get_last_target_positions_plan |
最近一次目标仓位调仓计划 |
get_execution_capabilities |
当前通道能力 |
日志、定时与仓位管理
| 方法 |
说明 |
log(msg, level=logging.INFO) |
日志,级别为 DEBUG / INFO / WARNING / ERROR / CRITICAL |
to_local_time(timestamp) |
UTC 纳秒时间戳转本地时间 |
format_time(timestamp, fmt="%Y-%m-%d %H:%M:%S") |
格式化本地时间 |
schedule(trigger_time, payload) |
指定时间点一次性触发 |
schedule_daily(time_str, payload) |
每个交易日指定时间触发,回测与实盘均可用 |
schedule_weekly / schedule_monthly |
每周 / 每月首个交易日触发 |
set_sizer(sizer) |
设置默认下单数量算法 |
FixedSize(size=100.0) / PercentSizer(percents=10.0) / AllInSizer() |
仓位管理器:固定数量 / 资金百分比 / 全仓 |
常用属性
| 属性 |
说明 |
self.cash / self.equity |
现金余额 / 账户总权益,只读 |
self.positions / self.position |
全部持仓字典 / 当前标的仓位对象 |
self.lot_size |
最小交易单位,可在 on_start 设置 |
self.warmup_period |
执行 on_bar 前需积累的 Bar 数 |
self.current_bar / self.symbol / self.close |
当前 K 线 / 当前标的 / 当前价 |
self.open / self.high / self.low / self.volume |
当前 Bar 的开高低与成交量;Tick 模式下除 close 外为 0.0 |
self.commission_rate / self.min_commission |
佣金率 / 单笔最低佣金,只读 |
self.stamp_tax_rate / self.transfer_fee_rate / self.commission_policy |
印花税率 / 过户费率 / 费用模式字典,只读 |
self.now / self.timezone |
当前策略本地时间 / 策略时区 |
self.ctx.session |
当前交易会话枚举 |
self.error_mode / self.is_restored |
出错处理模式 / 是否快照恢复,只读 |
self.portfolio_update_eps / self.enable_precise_day_boundary_hooks |
账户更新阈值 / 日界钩子精度开关 |
相关阅读
评论
登录后参与讨论,与站内账号体系共用。