执行
执行子包包含了与平台执行栈相关的组件。
执行栈的分层架构在某种程度上反映了数据栈的结构,它包含一个中央引擎,下方是缓存层,再下方是数据库层,同时可以在顶层编写替代实现方案。
由于高性能特性,核心组件在回测和实盘实现中均可复用——有助于确保交易操作逻辑的一致性。
组件
类 ExecAlgorithm
基类: Actor
ExecAlgorithm(config: ExecAlgorithmConfig | None = None) 所有执行算法的基类。
该类允许交易者实现他们自定义的执行算法。
- 参数: config (ExecAlgorithmConfig , 可选) – 执行算法配置。
 - 抛出异常: TypeError - 如果config不是ExecAlgorithmConfig类型。
 
警告
这个类不应该直接使用,而是通过具体的子类来使用。
active_task_ids(self) → list
返回活动任务标识符。
- 返回类型: list[TaskId]
 
add_synthetic(self, SyntheticInstrument synthetic) → void
将创建的合成工具添加到缓存中。
- 参数: synthetic (SyntheticInstrument) – 要添加到缓存中的合成工具。
 - 抛出异常: KeyError – 如果合成数据已在缓存中。
 
缓存
该智能体的只读缓存。
- 返回值: CacheFacade
 
cancel_all_tasks(self) → void
取消所有排队中和活跃的任务。
cancel_order(self, Order order, ClientId client_id=None) → void
取消指定订单,可选择路由指令。
将创建一个CancelOrder命令,然后发送到任一OrderEmulator或ExecutionEngine(取决于订单是否为模拟订单)。
如果没有为订单分配VenueOrderId,则记录错误。
- Parameters:
 
cancel_task(self, task_id: TaskId) → void
取消具有给定task_id的任务(如果处于排队或活动状态)。
如果未找到任务,则会记录一条警告。
- 参数: task_id (TaskId) – 任务标识符。
 
时钟
智能体的时钟。
- 返回: Clock
 
配置
智能体配置。
- 返回: NautilusConfig
 
degrade(self) → void
降级该组件。
在执行on_degrade()时,任何异常都会被记录并重新抛出,然后该组件将保持在DEGRADING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
deregister_warning_event(self, type event) → void
从警告日志级别中注销给定的事件类型。
- 参数: event (type) – 要注销的事件类。
 
dispose(self) → void
释放组件。
在执行on_dispose()时,任何异常都会被记录并重新抛出,然后该组件将保持在DISPOSING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
execute(self, TradingCommand command) → void
通过执行算法处理给定的交易指令。
- 参数: command (SubmitOrder) – 要处理的命令。
 - 抛出异常: ValueError – 如果command.exec_algorithm_id不等于self.id。
 
fault(self) → void
故障组件。
多次调用此方法的效果与调用一次相同(具有幂等性)。 一旦调用,无法撤销,且不应在此实例上调用其他方法。
在执行on_fault()时,任何异常都会被记录并重新抛出,然后该组件将保持在FAULTING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
类方法 fully_qualified_name(cls) → str
返回组件类的完全限定名称。
- 返回类型: str
 
希腊字母
该智能体的只读希腊值计算器。
- 返回值: GreeksCalculator
 
处理行情数据(self, Bar bar) → void
处理给定的行情数据。
如果状态是RUNNING则传递给on_bar。
- 参数: bar (Bar) – 接收到的行情数据。
 
警告
系统方法(不供用户代码调用)。
handle_bars(self, list bars) → void
通过逐个处理每个条形数据来处理给定的历史条形数据。
- 参数: bars (列表 [Bar ]) – 需要处理的K线数据列表。
 
警告
系统方法(不供用户代码调用)。
- 抛出异常: RuntimeError – 当柱状数据的时间戳排序不正确时(非单调递增)。
 
处理数据(self, Data data) → void
处理给定的数据。
如果状态是 RUNNING 则传递给 on_data。
- 参数: data (Data) – 接收到的数据。
 
警告
系统方法(不供用户代码调用)。
handle_event(self, Event event) → void
处理给定的事件。
如果状态是RUNNING则传递给on_event。
- 参数: event (Event) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
handle_historical_data(self, data) → void
处理给定的历史数据。
- 参数: data (Data) – 接收到的历史数据。
 
警告
系统方法(不供用户代码调用)。
处理指数价格(self, IndexPriceUpdate index_price) → void
处理给定的指数价格更新。
如果状态是RUNNING则传递给on_index_price。
- 参数: index_price (IndexPriceUpdate) – 接收到的指数价格更新。
 
警告
系统方法(不供用户代码调用)。
handle_instrument(self, Instrument instrument) → void
处理给定的交易品种。
如果状态是RUNNING,则传递给on_instrument。
- 参数: instrument (Instrument) – 接收到的交易标的。
 
警告
系统方法(不供用户代码调用)。
handle_instrument_close(self, InstrumentClose update) → void
处理给定的合约收盘更新。
如果状态是RUNNING则传递给on_instrument_close。
- 参数: update (InstrumentClose) – 接收到的更新。
 
警告
系统方法(不供用户代码调用)。
handle_instrument_status(self, InstrumentStatus data) → void
处理给定的合约状态更新。
如果状态是 RUNNING 则传递给 on_instrument_status。
- 参数: data (InstrumentStatus) – 接收到的状态更新。
 
警告
系统方法(不供用户代码调用)。
handle_instruments(self, list instruments) → void
通过单独处理每个工具来处理给定的工具数据。
- 参数: instruments (list [Instrument ]) – 接收到的交易标的列表。
 
警告
系统方法(不供用户代码调用)。
handle_mark_price(self, MarkPriceUpdate mark_price) → void
处理给定的标记价格更新。
如果状态是RUNNING则传递给on_mark_price。
- 参数: mark_price (MarkPriceUpdate) – 接收到的标记价格更新。
 
警告
系统方法(不供用户代码调用)。
handle_order_book(self, OrderBook order_book) → void
处理给定的订单簿。
如果状态是RUNNING,则传递给on_order_book。
- 参数: order_book (OrderBook) – 接收到的订单簿。
 
警告
系统方法(不供用户代码调用)。
处理订单簿增量(self, deltas) → 无返回值
处理给定的订单簿增量。
如果状态是RUNNING,则传递给on_order_book_deltas。
如果订阅时设置了pyo3_conversion标志,deltas将是nautilus_pyo3.OrderBookDeltas。
- 参数: deltas (OrderBookDeltas 或 nautilus_pyo3.OrderBookDeltas) – 接收到的订单簿增量数据。
 
警告
系统方法(不供用户代码调用)。
handle_quote_tick(self, QuoteTick tick) → void
处理给定的报价行情。
如果状态是RUNNING则传递给on_quote_tick。
- 参数: tick (QuoteTick) – 接收到的行情数据。
 
警告
系统方法(不供用户代码调用)。
handle_quote_ticks(self, list ticks) → void
通过单独处理每个报价点来处理给定的历史报价点数据。
- 参数: ticks (list [QuoteTick ]) – 接收到的行情数据。
 
警告
系统方法(不供用户代码调用)。
handle_signal(self, Data signal) → void
处理给定的信号。
如果状态是 RUNNING 则传递给 on_signal。
- 参数: signal (Data) – 接收到的信号。
 
警告
系统方法(不供用户代码调用)。
handle_trade_tick(self, TradeTick tick) → void
处理给定的交易行情数据。
如果状态是RUNNING则传递给on_trade_tick。
- 参数: tick (TradeTick) – 接收到的行情数据。
 
警告
系统方法(不供用户代码调用)。
handle_trade_ticks(self, list ticks) → void
通过逐个处理每个tick来处理给定的历史交易tick数据。
- 参数: ticks (list [TradeTick ]) – 接收到的行情数据。
 
警告
系统方法(不供用户代码调用)。
has_active_tasks(self) → bool
返回一个值,指示是否存在任何活动任务。
- 返回类型: bool
 
has_any_tasks(self) → bool
返回一个值,指示是否存在任何排队或活动中的任务。
- 返回类型: bool
 
has_pending_requests(self) → bool
返回该智能体是否正在等待处理任何请求。
- 返回值: 如果有任何请求待处理则返回True,否则返回False。
 - 返回类型: bool
 
has_queued_tasks(self) → bool
返回一个值,指示是否有任何排队任务。
- 返回类型: bool
 
id
组件ID。
- 返回: ComponentId
 
indicators_initialized(self) → bool
返回一个值,指示所有指标是否已初始化。
- 返回值: 如果全部初始化完成则返回True,否则返回False
 - 返回类型: bool
 
是否降级
布尔值
返回当前组件状态是否为DEGRADED。
- 返回类型: bool
 - 类型: Component.is_degraded
 
is_disposed
bool
返回当前组件状态是否为DISPOSED。
- 返回类型: bool
 - 类型: Component.is_disposed
 
是否出现故障
布尔值
返回当前组件状态是否为FAULTED。
- 返回类型: bool
 - 类型: Component.is_faulted
 
is_initialized
bool
返回组件是否已初始化(component.state >= INITIALIZED)。
- 返回类型: bool
 - 类型: Component.is_initialized
 
is_pending_request(self, UUID4 request_id) → bool
返回给定标识符的请求是否处于待处理状态。
- 参数: request_id (UUID4) – 要检查的请求ID。
 - 返回值: 如果请求处于待处理状态则返回True,否则返回False。
 - 返回类型: bool
 
是否正在运行
bool
返回当前组件状态是否为RUNNING。
- 返回类型: bool
 - 类型: Component.is_running
 
是否已停止
bool
返回当前组件状态是否为STOPPED。
- 返回类型: bool
 - 类型: Component.is_stopped
 
load(self, dict state) → void
从给定的状态字典中加载智能体/策略状态。
调用on_load并传递状态。
- 参数: state (dict *[*str , bytes ]) – 要加载的策略状态。
 
警告
引发的异常将被捕获、记录并重新抛出。
日志
执行器日志记录器。
- 返回值: Logger
 
modify_order(self, Order order, Quantity quantity=None, Price price=None, Price trigger_price=None, ClientId client_id=None) → void
使用可选参数和路由指令修改指定订单。
将创建一个修改订单指令并发送至风险引擎。
至少需要修改一个与原订单不同的值,该命令才能生效。
对于FIX协议,将使用订单取消/替换请求(又称订单修改);如果API不支持订单更新,则会取消原订单并使用原始的ClientOrderId替换为新订单。
- Parameters:
 - Raises:
- ValueError – 如果价格不是
None且订单没有价格。 - ValueError - 如果触发器不是
None且订单没有设置触发价格。 
 - ValueError – 如果价格不是
 
警告
如果订单已关闭或处于PENDING_CANCEL状态 则不会生成命令,并记录警告。
modify_order_in_place(self, Order order, Quantity quantity=None, Price price=None, Price trigger_price=None) → void
就地修改给定的INITIALIZED订单(立即生效),可选参数。
至少需要有一个值与原始订单不同,该命令才能生效。
- Parameters:
 - Raises:
- ValueError – 如果订单状态不是
INITIALIZED或RELEASED。 - ValueError – 如果价格不是
None且订单没有价格。 - ValueError - 如果触发器不是
None且订单没有设置触发价格。 
 - ValueError – 如果订单状态不是
 
警告
如果订单已关闭或处于PENDING_CANCEL状态 则不会生成命令,并会记录警告。
消息总线
该智能体的消息总线(如果已注册)。
- 返回值:
MessageBus 或 
None 
on_bar(self, Bar bar) → void
在运行并接收到一个bar时要执行的操作。
- 参数: bar (Bar) – 接收到的行情数据。
 
警告
系统方法(不供用户代码调用)。
on_data(self, data) → void
在运行并接收数据时要执行的操作。
- 参数: data (Data) – 接收到的数据。
 
警告
系统方法(不供用户代码调用)。
on_degrade(self) → void
在降级时要执行的操作。
警告
系统方法(不供用户代码调用)。
应在智能体实现中被重写。
on_dispose(self) → void
在销毁时要执行的操作。
清理/释放此处使用的任何资源。
警告
系统方法(不供用户代码调用)。
on_event(self, Event event) → void
运行时要执行的操作并接收事件。
- 参数: event (Event) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_fault(self) → void
发生故障时要执行的操作。
在这里清理该智能体使用的所有资源。
警告
系统方法(不供用户代码调用)。
应在智能体实现中被重写。
on_historical_data(self, data) → void
在运行并接收历史数据时要执行的操作。
- 参数: data (Data) – 接收到的历史数据。
 
警告
系统方法(不供用户代码调用)。
on_index_price(self, IndexPriceUpdate index_price) → void
当运行并接收到指数价格更新时要执行的操作。
- 参数: index_price (IndexPriceUpdate) – 接收到的指数价格更新。
 
警告
系统方法(不供用户代码调用)。
on_instrument(self, Instrument instrument) → void
在运行并接收到一个交易品种时要执行的操作。
- 参数: instrument (Instrument) – 接收到的交易标的。
 
警告
系统方法(不供用户代码调用)。
on_instrument_close(self, InstrumentClose update) → void
在运行并接收到合约收盘更新时要执行的操作。
- 参数: update (InstrumentClose) – 接收到的instrument close。
 
警告
系统方法(不供用户代码调用)。
on_instrument_status(self, InstrumentStatus data) → void
当运行并接收到一个仪器状态更新时要执行的操作。
- 参数: data (InstrumentStatus) – 接收到的交易品种状态更新。
 
警告
系统方法(不供用户代码调用)。
on_load(self, dict state) → void
当智能体状态加载时要执行的操作。
保存的状态值将包含在给定的状态字典中。
- 参数: state (dict *[*str , bytes ]) – 要加载的策略状态。
 
警告
系统方法(不供用户代码调用)。
on_mark_price(self, MarkPriceUpdate mark_price) → void
在运行并接收到标记价格更新时要执行的操作。
- 参数: mark_price (MarkPriceUpdate) – 接收到的标记价格更新。
 
警告
系统方法(不供用户代码调用)。
on_order(self, Order order) → void
在运行并接收到订单时要执行的操作。
- 参数: order (Order) – 需要处理的订单。
 
警告
系统方法(不供用户代码调用)。
on_order_accepted(self, OrderAccepted event) → void
在运行并接收到订单接受事件时要执行的操作。
- 参数: event (OrderAccepted) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_book(self, OrderBook order_book) → void
在运行并接收到订单簿时要执行的操作。
- 参数: order_book (OrderBook) – 接收到的订单簿。
 
警告
系统方法(不供用户代码调用)。
on_order_book_deltas(self, deltas) → void
在运行并接收订单簿增量时要执行的操作。
- 参数: deltas (OrderBookDeltas 或 nautilus_pyo3.OrderBookDeltas) – 接收到的订单簿增量数据。
 
警告
系统方法(不供用户代码调用)。
on_order_cancel_rejected(self, OrderCancelRejected事件) → void
当运行并收到订单取消被拒绝事件时要执行的操作。
- 参数: event (OrderCancelRejected) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_canceled(self, OrderCanceled event) → void
在运行并接收到订单取消事件时要执行的操作。
- 参数: event (OrderCanceled) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_denied(self, OrderDenied事件) → void
在运行并接收到订单拒绝事件时要执行的操作。
- 参数: event (OrderDenied) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_emulated(self, OrderEmulated事件) → void
当运行并接收到订单初始化事件时要执行的操作。
- 参数: event (OrderEmulated) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_event(self, OrderEvent event) → void
在运行并接收到订单事件时要执行的操作。
- 参数: event (OrderEvent) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_expired(self, OrderExpired事件) → void
当运行并接收到订单过期事件时要执行的操作。
- 参数: event (OrderExpired) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_filled(self, OrderFilled事件) → void
在运行并接收到订单成交事件时要执行的操作。
- 参数: event (OrderFilled) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_initialized(self, OrderInitialized event) → void
当运行并接收到订单初始化事件时要执行的操作。
- 参数: event (OrderInitialized) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_list(self, OrderList order_list) → void
在运行并接收到订单列表时要执行的操作。
- 参数: order_list (OrderList) – 需要处理的订单列表。
 
警告
系统方法(不供用户代码调用)。
on_order_modify_rejected(self, 订单修改被拒事件) → void
当运行并收到订单修改拒绝事件时要执行的操作。
- 参数: event (OrderModifyRejected) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_pending_cancel(self, OrderPendingCancel事件) → void
当运行并收到订单待取消事件时要执行的操作。
- 参数: event (OrderPendingCancel) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_pending_update(self, OrderPendingUpdate事件) → void
当运行并收到订单待更新事件时要执行的操作。
- 参数: event (OrderPendingUpdate) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_rejected(self, OrderRejected事件) → void
当运行并接收到订单被拒绝事件时要执行的操作。
- 参数: event (OrderRejected) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_released(self, OrderReleased事件) → void
在运行并接收到订单释放事件时要执行的操作。
- 参数: event (OrderReleased) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_submitted(self, OrderSubmitted事件) → void
当运行并接收到订单提交事件时要执行的操作。
- 参数: event (OrderSubmitted) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_triggered(self, OrderTriggered事件) → void
当运行并接收到订单触发事件时要执行的操作。
- 参数: event (OrderTriggered) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_order_updated(self, OrderUpdated事件) → void
当运行并接收到订单更新事件时要执行的操作。
- 参数: event (OrderUpdated) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_position_changed(自身, PositionChanged 事件) → 无返回值
当运行并接收到仓位变更事件时要执行的操作。
- 参数: event (PositionChanged) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_position_closed(self, PositionClosed事件) → void
在运行并接收到仓位关闭事件时要执行的操作。
- 参数: event (PositionClosed) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_position_event(self, PositionEvent事件) → void
在运行并接收到仓位事件时要执行的操作。
- 参数: event (PositionEvent) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_position_opened(self, PositionOpened事件) → void
在运行并接收到持仓开启事件时要执行的操作。
- 参数: event (PositionOpened) – 接收到的事件。
 
警告
系统方法(不供用户代码调用)。
on_quote_tick(self, QuoteTick tick) → void
在运行并接收到报价行情时要执行的操作。
- 参数: tick (QuoteTick) – 接收到的行情数据。
 
警告
系统方法(不供用户代码调用)。
on_reset(self) → void
重置时要执行的操作。
警告
系统方法(不供用户代码调用)。
应在用户实现中被覆盖。
on_resume(self) → void
恢复后要执行的操作。
警告
系统方法(不供用户代码调用)。
on_save(self) → dict
当智能体状态保存时要执行的操作。
创建并返回要保存的值状态字典。
- 返回值: 需要保存的策略状态。
 - 返回类型: dict[str, bytes]
 
警告
系统方法(不供用户代码调用)。
on_signal(self, signal) → void
在运行并接收到信号数据时要执行的操作。
- 参数: signal (Data) – 接收到的信号。
 
警告
系统方法(不供用户代码调用)。
on_start(self) → void
启动时要执行的操作。
该方法的意图是在最初启动时,每个交易"运行"只调用一次。
建议在此处订阅/请求数据。
警告
系统方法(不供用户代码调用)。
应在用户实现中被覆盖。
on_stop(self) → void
在停止时要执行的操作。
该方法的意图是在暂停时调用,或者在当日结束时调用。
警告
系统方法(不供用户代码调用)。
应在用户实现中被覆盖。
on_trade_tick(self, TradeTick tick) → void
当运行并接收到交易行情时执行的操作。
- 参数: tick (TradeTick) – 接收到的行情数据。
 
警告
系统方法(不供用户代码调用)。
pending_requests(self) → set
返回当前待处理的请求ID。
- 返回类型: set[UUID4]
 
投资组合
该智能体的只读投资组合。
- 返回值: PortfolioFacade
 
publish_data(self, DataType data_type, Data data) → void
将给定数据发布到消息总线。
publish_signal(self, str name, value, uint64_t ts_event=0) → void
将给定值作为信号发布到消息总线。
- Parameters:
- name (str) – 要发布的信号名称。 信号名称将被转换为标题格式,每个单词首字母大写 (例如:'example'会变成'SignalExample')。
 - value (object) – 要发布的信号数据。
 - ts_event (uint64_t , optional) – 信号事件发生时的UNIX时间戳(纳秒)。
如果为
None则使用当前时间戳。 
 
queue_for_executor(self, func: Callable[..., Any], tuple args=None, dict kwargs=None)
将可调用函数func按顺序排队执行为fn(*args, **kwargs)。
- Parameters:
- func (Callable) – 要执行的函数。
 - args (位置参数) – 调用函数时使用的位置参数。
 - kwargs (任意关键字参数) – 调用函数时使用的关键字参数。
 
 - 抛出异常: TypeError – 如果func不是Callable类型。
 
queued_task_ids(self) → list
返回队列中的任务标识符。
- 返回类型: list[TaskId]
 
register(self, TraderId trader_id, PortfolioFacade portfolio, MessageBus msgbus, CacheFacade cache, Clock clock) → void
向交易者注册执行算法。
- Parameters:
- trader_id (TraderId) – 执行算法的交易员ID。
 - portfolio (PortfolioFacade) – 执行算法的只读投资组合。
 - msgbus (MessageBus) – 执行算法的消息总线。
 - cache (CacheFacade) – 执行算法的只读缓存。
 - clock (Clock) – 执行算法的时钟。
 
 
警告
系统方法(不供用户代码调用)。
register_base(self, PortfolioFacade portfolio, MessageBus msgbus, CacheFacade cache, Clock clock) → void
向交易员注册。
- Parameters:
- portfolio (PortfolioFacade) – 该智能体的只读投资组合。
 - msgbus (MessageBus) – 该智能体的消息总线。
 - cache (CacheFacade) – 该智能体的只读缓存。
 - clock (Clock) – 智能体的时钟。
 
 
警告
系统方法(不供用户代码调用)。
register_executor(self, loop: asyncio.AbstractEventLoop, executor: Executor) → void
为智能体注册给定的执行器。
- Parameters:
- loop (asyncio.AbstractEventLoop) – 应用程序的事件循环。
 - executor (concurrent.futures.Executor) – 要注册的执行器。
 
 - 抛出异常: TypeError - 如果executor不是concurrent.futures.Executor类型
 
register_indicator_for_bars(self, BarType bar_type, Indicator indicator) → void
将给定的指标注册到智能体/策略中,以接收指定柱线类型的数据。
register_indicator_for_quote_ticks(self, InstrumentId instrument_id, Indicator indicator) → void
将给定的指标注册到智能体/策略中,以接收指定交易品种的报价tick数据。
- Parameters:
- instrument_id (InstrumentId) – 用于tick更新的交易品种ID。
 - 指标 (Indicator) – 要注册的指标。
 
 
register_indicator_for_trade_ticks(self, InstrumentId instrument_id, Indicator indicator) → void
将给定的指标注册到智能体/策略中,以接收指定交易标的的交易tick数据。
- Parameters:
- instrument_id (InstrumentId) – 用于tick更新的交易品种ID。
 - indicator (indicator) – 要注册的指标。
 
 
register_warning_event(self, type event) → void
为警告日志级别注册给定的事件类型。
- 参数: event (type) – 要注册的事件类。
 
已注册指标
返回该策略已注册的指标。
- 返回类型: list[Indicator]
 
request_aggregated_bars(self, list bar_types, datetime start=None, datetime end=None, int limit=0, ClientId client_id=None, callback: Callable[[UUID4], None] | None = None, bool include_external_data=False, bool update_subscriptions=False, update_catalog_mode: UpdateCatalogMode | None = None, dict params=None) → UUID4
请求获取多种条形图类型的历史聚合数据。 第一条数据用于确定将查询哪种市场数据类型。 这可以是报价、交易或条形图。如果查询的是条形图, 第一条数据类型需要具有外部复合条形图(即非内部/聚合)。 将查询此外部条形图类型。
如果 end 是 None,那么将请求获取直到最新的数据。
一旦收到响应,柱状数据将从消息总线转发到on_historical_data处理程序。任何用于聚合的tick数据也会被转发到on_historical_data处理程序。
如果请求失败,则会记录错误。
- Parameters:
- bar_types (list [BarType ]) – 请求的柱状图类型列表。复合柱状图也可以使用,但需要在其依赖的BarType之后出现在列表中。
 - start (datetime , optional) – 请求时间范围的起始时间(UTC)。 包含性取决于各个数据客户端的实现。
 - end (datetime , optional) – 请求时间范围的结束时间(UTC)。 包含性取决于各个数据客户端的实现。
 - limit (int , optional) – 接收数据量的限制(报价tick、交易tick或K线)。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - callback (Callable [ [UUID4 ] , None ] , optional) – 注册的回调函数,当响应完成处理时将以请求ID作为参数调用该函数。
 - include_external_data (bool , default False) – 如果为True,响应中将包含查询的外部数据。
 - update_subscriptions (bool , 默认 False) – 如果为True,将使用查询的外部数据更新任何现有或未来订阅的聚合器。
 - update_catalog_mode (UpdateCatalogMode , optional) – If not None, then updates the catalog with new data received from a client.
Recommended catalog write modes are:
- UpdateCatalogMode.MODIFY (通过将新数据与现有唯一的parquet文件连接,追加或前置新数据到目录中)。
 - UpdateCatalogMode.NEWFILE(通过创建新的parquet文件将新数据追加到目录中)。 假设目录中某个工具ID的数据在时间上是连续的。 在追加新数据并同时使用非空的start和end参数时,请注意不要造成数据"空洞"。
 
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 - 返回: 请求的request_id。
 - 返回类型: UUID4
 - Raises:
- ValueError - 如果start不为None且大于当前时间戳(now)。
 - ValueError - 如果end不为None且大于当前时间戳(now)。
 - ValueError - 如果start和end都不为None且start大于等于end时抛出。
 - ValueError - 如果bar_types为空。
 - TypeError – 如果回调函数不是None且不是Callable类型。
 - TypeError – 如果bar_types为空或包含非BarType类型的元素。
 
 
request_bars(self, BarType bar_type, datetime start=None, datetime end=None, int limit=0, ClientId client_id=None, callback: Callable[[UUID4], None] | None = None, update_catalog_mode: UpdateCatalogMode | None = None, dict params=None) → UUID4
请求历史Bar数据。
如果 end 是 None,那么将请求获取直到最新的数据。
一旦收到响应,柱状数据将从消息总线转发到 on_historical_data 处理程序。
如果请求失败,则会记录错误。
- Parameters:
- bar_type (BarType) - 请求对应的K线类型。
 - start (datetime , optional) – 请求时间范围的起始时间(UTC)。 包含性取决于各个数据客户端的实现。
 - end (datetime , optional) – 请求时间范围的结束时间(UTC)。 包含性取决于各个数据客户端的实现。
 - limit (int , optional) – 接收K线数量的限制。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - callback (Callable [ [UUID4 ] , None ] , optional) – 注册的回调函数,当响应完成处理时将以请求ID作为参数调用该函数。
 - update_catalog_mode (UpdateCatalogMode , optional) – If not None, then updates the catalog with new data received from a client.
Recommended catalog write modes are:
- UpdateCatalogMode.MODIFY (通过将新数据与现有唯一的parquet文件连接,追加或前置新数据到目录中)。
 - UpdateCatalogMode.NEWFILE(通过创建新的parquet文件将新数据追加到目录中)。 假设目录中某个工具ID的数据在时间上是连续的。 在追加新数据并同时使用非空的start和end参数时,请注意不要造成数据"空洞"。
 
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 - 返回: 请求的request_id。
 - 返回类型: UUID4
 - Raises:
- ValueError - 如果start不为None且大于当前时间戳(now)。
 - ValueError - 如果end不为None且大于当前时间戳(now)。
 - ValueError - 如果start和end都不为None且start大于等于end时抛出。
 - TypeError – 如果回调函数不是None且不是Callable类型。
 
 
request_data(self, DataType data_type, ClientId client_id, datetime start=None, datetime end=None, int limit=0, callback: Callable[[UUID4], None] | None = None, update_catalog_mode: UpdateCatalogMode | None = None, dict params=None) → UUID4
从指定的数据客户端请求给定数据类型的自定义数据。
一旦收到响应,数据将从消息总线转发到on_historical_data处理程序。
如果请求失败,则会记录错误。
- Parameters:
- data_type (DataType) – 请求的数据类型。
 - client_id (ClientId) – 数据客户端ID。
 - start (datetime , optional) – 请求时间范围的起始时间(UTC)。 包含性取决于各个数据客户端的实现。
 - end (datetime , optional) – 请求时间范围的结束时间(UTC)。 包含性取决于各个数据客户端的实现。
 - limit (int , optional) – 接收数据点数量的限制。
 - callback (Callable [ [UUID4 ] , None ] , optional) – 注册的回调函数,当响应完成处理时将以请求ID作为参数调用该函数。
 - update_catalog_mode (UpdateCatalogMode , optional) – If not None, then updates the catalog with new data received from a client.
Recommended catalog write modes are:
- UpdateCatalogMode.MODIFY (通过将新数据与现有唯一的parquet文件连接,追加或前置新数据到目录中)。
 - UpdateCatalogMode.NEWFILE(通过创建新的parquet文件将新数据追加到目录中)。 假设目录中某个工具ID的数据在时间上是连续的。 在追加新数据并同时使用非空的start和end参数时,请注意不要造成数据"空洞"。
 
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 - 返回: 请求的request_id。
 - 返回类型: UUID4
 - 抛出异常: TypeError – 如果回调函数不是None且不是Callable类型。
 
request_instrument(self, InstrumentId instrument_id, datetime start=None, datetime end=None, ClientId client_id=None, callback: Callable[[UUID4], None] | None = None, update_catalog_mode: UpdateCatalogMode | None = None, dict params=None) → UUID4
请求给定乐器ID的Instrument数据。
如果 end 是 None,那么将请求获取直到最新的数据。
一旦收到响应,工具数据将从消息总线转发到on_instrument处理程序。
如果请求失败,则会记录错误。
- Parameters:
- instrument_id (InstrumentId) – 请求的标的物ID。
 - start (datetime , optional) – 请求时间范围的起始时间(UTC)。 包含性取决于各个数据客户端的实现。
 - end (datetime , optional) – 请求时间范围的结束时间(UTC)。 包含性取决于各个数据客户端的实现。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - callback (Callable [ [UUID4 ] , None ] , optional) – 注册的回调函数,当响应完成处理时将以请求ID作为参数调用该函数。
 - update_catalog_mode (UpdateCatalogMode , optional) – If not None, then updates the catalog with new data received from a client.
Recommended catalog write modes are:
- UpdateCatalogMode.MODIFY (通过将新数据与现有唯一的parquet文件连接,追加或前置新数据到目录中)。
 - UpdateCatalogMode.NEWFILE (通过创建新的parquet文件将新数据追加到目录中)。
 
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 - 返回: 请求的request_id。
 - 返回类型: UUID4
 - Raises:
- ValueError - 如果start不为None且大于当前时间戳(now)。
 - ValueError - 如果end不为None且大于当前时间戳(now)。
 - ValueError - 如果start和end都不为None且start大于等于end时抛出。
 - TypeError – 如果回调函数不是None且不是Callable类型。
 
 
request_instruments(self, Venue venue, datetime start=None, datetime end=None, ClientId client_id=None, callback: Callable[[UUID4], None] | None = None, update_catalog_mode: UpdateCatalogMode | None = None, dict params=None) → UUID4
请求给定交易场所的所有Instrument数据。
如果 end 是 None,那么将请求获取直到最新的数据。
一旦收到响应,工具数据将从消息总线转发到on_instrument处理程序。
如果请求失败,则会记录错误。
- Parameters:
- venue (Venue) – 请求的交易场所。
 - start (datetime , optional) – 请求时间范围的起始时间(UTC)。 包含性取决于各个数据客户端的实现。
 - end (datetime , optional) – 请求时间范围的结束时间(UTC)。 包含性取决于各个数据客户端的实现。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - callback (Callable [ [UUID4 ] , None ] , optional) – 注册的回调函数,当响应完成处理时将以请求ID作为参数调用该函数。
 - update_catalog_mode (UpdateCatalogMode , optional) – If not None, then updates the catalog with new data received from a client.
Recommended catalog write modes are:
- UpdateCatalogMode.MODIFY (通过将新数据与现有唯一的parquet文件连接,追加或前置新数据到目录中)。
 - UpdateCatalogMode.NEWFILE (通过创建新的parquet文件将新数据追加到目录中)。
 
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 - 返回: 请求的request_id。
 - 返回类型: UUID4
 - Raises:
- ValueError - 如果start不为None且大于当前时间戳(now)。
 - ValueError - 如果end不为None且大于当前时间戳(now)。
 - ValueError - 如果start和end都不为None且start大于等于end时抛出。
 - TypeError – 如果回调函数不是None且不是Callable类型。
 
 
request_order_book_snapshot(self, InstrumentId instrument_id, int limit=0, ClientId client_id=None, callback: Callable[[UUID4], None] | None = None, dict params=None) → UUID4
请求订单簿快照。
一旦收到响应,订单簿数据将从消息总线转发到on_historical_data处理程序。
如果请求失败,则会记录错误。
- Parameters:
- instrument_id (InstrumentId) – 订单簿快照请求的标的物ID。
 - limit (int , optional) – 订单簿快照深度的限制。
 - client_id (ClientId , optional) – 该命令对应的特定客户端ID。 如果为None,则会根据工具ID中的交易场所自动推断。
 - callback (Callable [ [UUID4 ] , None ] , optional) – 注册的回调函数,当响应完成处理时将以请求ID作为参数调用该函数。
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 - 返回: 请求的request_id。
 - 返回类型: UUID4
 - Raises:
- ValueError – 如果instrument_id为None。
 - TypeError – 如果回调函数不是None且不是Callable类型。
 
 
请求报价数据(self, InstrumentId instrument_id, datetime start=None, datetime end=None, int limit=0, ClientId client_id=None, callback: Callable[[UUID4], None] | None = None, update_catalog_mode: UpdateCatalogMode | None = None, dict params=None) → UUID4
请求历史报价数据。
如果 end 是 None,那么将请求获取直到最新的数据。
一旦收到响应,报价tick数据将从消息总线转发到on_historical_data处理程序。
如果请求失败,则会记录错误。
- Parameters:
- instrument_id (InstrumentId) – 请求的行情标的ID。
 - start (datetime , optional) – 请求时间范围的起始时间(UTC)。 包含性取决于各个数据客户端的实现。
 - end (datetime , optional) – 请求时间范围的结束时间(UTC)。 包含性取决于各个数据客户端的实现。
 - limit (int , optional) – 接收报价tick数量的限制。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - callback (Callable [ [UUID4 ] , None ] , optional) – 注册的回调函数,当响应完成处理时将以请求ID作为参数调用该函数。
 - update_catalog_mode (UpdateCatalogMode , optional) – If not None, then updates the catalog with new data received from a client.
Recommended catalog write modes are:
- UpdateCatalogMode.MODIFY (通过将新数据与现有唯一的parquet文件连接,追加或前置新数据到目录中)。
 - UpdateCatalogMode.NEWFILE(通过创建新的parquet文件将新数据追加到目录中)。 假设目录中某个instrument_id的数据在时间上是连续的。 请注意在追加新数据并同时使用非空的start和end参数时,不要造成数据"空洞"。
 
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 - 返回: 请求的request_id。
 - 返回类型: UUID4
 - Raises:
- ValueError - 如果start不为None且大于当前时间戳(now)。
 - ValueError - 如果end不为None且大于当前时间戳(now)。
 - ValueError - 如果start和end都不为None且start大于等于end时抛出。
 - TypeError – 如果回调函数不是None且不是Callable类型。
 
 
request_trade_ticks(self, InstrumentId instrument_id, datetime start=None, datetime end=None, int limit=0, ClientId client_id=None, callback: Callable[[UUID4], None] | None = None, update_catalog_mode: UpdateCatalogMode | None = None, dict params=None) → UUID4
请求历史交易Tick数据。
如果 end 是 None,那么将请求获取直到最新的数据。
一旦收到响应,交易行情数据将从消息总线转发到 on_historical_data 处理程序。
如果请求失败,则会记录错误。
- Parameters:
- instrument_id (InstrumentId) – 请求的行情标的ID。
 - start (datetime , optional) – 请求时间范围的起始时间(UTC)。 包含性取决于各个数据客户端的实现。
 - end (datetime , optional) – 请求时间范围的结束时间(UTC)。 包含性取决于各个数据客户端的实现。
 - limit (int , optional) – 接收交易tick数量的限制。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - callback (Callable [ [UUID4 ] , None ] , optional) – 注册的回调函数,当响应完成处理时将以请求ID作为参数调用该函数。
 - update_catalog_mode (UpdateCatalogMode , optional) – If not None, then updates the catalog with new data received from a client.
Recommended catalog write modes are:
- UpdateCatalogMode.MODIFY (通过将新数据与现有唯一的parquet文件连接,追加或前置新数据到目录中)。
 - UpdateCatalogMode.NEWFILE(通过创建新的parquet文件将新数据追加到目录中)。 假设目录中某个工具ID的数据在时间上是连续的。 在追加新数据并同时使用非空的start和end参数时,请注意不要造成数据"空洞"。
 
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 - 返回: 请求的request_id。
 - 返回类型: UUID4
 - Raises:
- ValueError - 如果start不为None且大于当前时间戳(now)。
 - ValueError - 如果end不为None且大于当前时间戳(now)。
 - ValueError - 如果start和end都不为None且start大于等于end时抛出。
 - TypeError – 如果回调函数不是None且不是Callable类型。
 
 
reset(self) → void
重置该组件。
所有有状态的字段都将重置为其初始值。
在执行on_reset()时,任何异常都将被记录并重新抛出,然后该组件将保持RESETTING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
resume(self) → void
恢复组件。
在执行on_resume()时,任何异常都会被记录并重新抛出,然后该组件将保持在RESUMING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
run_in_executor(self, func: Callable[..., Any], tuple args=None, dict kwargs=None)
安排可调用函数func以fn(*args, **kwargs)的形式执行。
- Parameters:
- func (Callable) – 要执行的函数。
 - args (位置参数) – 调用函数时使用的位置参数。
 - kwargs (任意关键字参数) – 调用函数时使用的关键字参数。
 
 - 返回: 执行任务的唯一标识符。 这也对应于任何未来对象的内存地址。
 - 返回类型: TaskId
 - 抛出异常: TypeError – 如果func不是Callable类型。
 
保存(self) → 字典
返回待保存的智能体/策略状态字典。
调用on_save。
- 返回值: 需要保存的策略状态。
 - 返回类型: dict[str, bytes]
 
警告
引发的异常将被捕获、记录并重新抛出。
shutdown_system(self, str reason=None) → void
通过生成并发布ShutdownSystem命令来启动系统范围的关机。
该命令由系统的NautilusKernel处理,根据执行上下文和当前活动事件循环的情况,将同步调用stop或异步调用stop_async。
- 参数: reason (str , 可选) – 发出关机命令的原因。
 
spawn_limit(self, Order primary, Quantity quantity, Price price, TimeInForce time_in_force=TimeInForce.GTC, datetime expire_time=None, bool post_only=False, bool reduce_only=False, Quantity display_qty=None, TriggerType emulation_trigger=TriggerType.NO_TRIGGER, list tags=None, bool reduce_primary=True) → LimitOrder
从给定的主订单生成一个新的LIMIT限价订单。
- Parameters:
- primary (Order) – 生成此订单的原始订单。
 - quantity (Quantity) – 生成订单的数量(>0)。必须小于primary.quantity。
 - price (Price) – 生成订单的价格。
 - time_in_force (TimeInForce {
GTC,IOC,FOK,GTD,DAY,AT_THE_OPEN,AT_THE_CLOSE}, 默认GTC) – 生成订单的有效时间。 - expire_time (datetime , optional) – 生成的订单过期时间(针对
GTD订单)。 - post_only (bool , default False) – 如果生成的订单仅提供流动性(做市)。
 - reduce_only (bool , 默认 False) – 如果生成的订单携带'仅减仓'执行指令。
 - display_qty (数量 , 可选) – 在公开订单簿上显示的生成订单数量(冰山订单)。
 - emulation_trigger (TriggerType, default 
NO_TRIGGER) – The type of market price trigger to use for local order emulation.NO_TRIGGER(默认): 禁用本地模拟; 订单直接发送至交易所。DEFAULT(等同于BID_ASK): 通过基于买卖报价触发订单来启用本地订单模拟。 还提供其他触发类型。更多详情请参阅文档中的"模拟订单"部分。
 - tags (list *[*str ] , optional) – 订单的自定义用户标签。
 - reduce_primary (bool , 默认 True) – 是否应该根据给定数量减少主订单数量。
 
 - 返回类型: LimitOrder
 - Raises:
- ValueError - 如果primary.exec_algorithm_id不等于self.id。
 - ValueError - 如果数量不是正数(> 0)。
 - ValueError – 如果time_in_force是
GTD且expire_time <= UNIX纪元时间。 - ValueError - 如果display_qty为负数(< 0)或大于quantity。
 
 
spawn_market(self, Order primary, Quantity quantity, TimeInForce time_in_force=TimeInForce.GTC, bool reduce_only=False, list tags=None, bool reduce_primary=True) → MarketOrder
从给定的主订单生成一个新的MARKET订单。
- Parameters:
- primary (Order) – 生成此订单的原始订单。
 - quantity (Quantity) – 生成订单的数量(大于0)。
 - time_in_force (TimeInForce {
GTC,IOC,FOK,DAY,AT_THE_OPEN,AT_THE_CLOSE}, 默认GTC) – 生成订单的有效时间。通常不适用于市价单。 - reduce_only (bool , default False) – 如果生成的订单带有"仅减仓"执行指令。
 - tags (list *[*str ] , optional) – 订单的自定义用户标签。
 - reduce_primary (bool , default True) – 是否应该将主订单数量按给定数量减少。
 
 - 返回类型: MarketOrder
 - Raises:
- ValueError - 如果primary.exec_algorithm_id不等于self.id。
 - ValueError - 如果数量不是正数(> 0)。
 - ValueError - 如果time_in_force是
GTD。 
 
生成市价转限价单(self, 订单 primary, 数量 quantity, 有效时间 time_in_force=TimeInForce.GTC, 过期时间 datetime expire_time=None, 仅减仓 bool reduce_only=False, 显示数量 Quantity display_qty=None, 模拟触发类型 TriggerType emulation_trigger=TriggerType.NO_TRIGGER, 标签列表 list tags=None, 是否减少主订单 bool reduce_primary=True) → MarketToLimitOrder
从给定的主订单生成一个新的MARKET_TO_LIMIT订单。
- Parameters:
- primary (Order) – 生成此订单的原始订单。
 - quantity (Quantity) – 生成订单的数量(>0)。必须小于primary.quantity。
 - time_in_force (TimeInForce {
GTC,IOC,FOK,GTD,DAY,AT_THE_OPEN,AT_THE_CLOSE}, 默认GTC) – 生成订单的有效时间。 - expire_time (datetime , optional) – 生成的订单过期时间(针对
GTD订单)。 - reduce_only (bool , 默认 False) – 如果生成的订单携带'仅减仓'执行指令。
 - display_qty (Quantity , optional) – 在公开订单簿上显示的挂单数量(冰山订单)。
 - emulation_trigger (TriggerType, default 
NO_TRIGGER) – The type of market price trigger to use for local order emulation.NO_TRIGGER(默认): 禁用本地模拟; 订单直接发送至交易所。DEFAULT(等同于BID_ASK): 通过基于买卖报价触发订单来启用本地订单模拟。 还提供其他触发类型。更多详情请参阅文档中的"模拟订单"部分。
 - tags (list *[*str ] , optional) – 订单的自定义用户标签。
 - reduce_primary (bool , 默认 True) – 是否应该根据给定数量减少主订单数量。
 
 - 返回类型: MarketToLimitOrder
 - Raises:
- ValueError - 如果primary.exec_algorithm_id不等于self.id。
 - ValueError - 如果数量不是正数(> 0)。
 - ValueError – 如果time_in_force是
GTD且expire_time <= UNIX纪元时间。 - ValueError - 如果display_qty为负数(< 0)或大于quantity。
 
 
start(self) → void
启动组件。
在执行on_start()时,任何异常都会被记录并重新抛出,然后该组件将保持在STARTING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
状态
ComponentState 返回组件当前状态。
- 返回类型: ComponentState
 - 类型: Component.state
 
stop(self) → void
停止该组件。
在执行on_stop()时,任何异常都会被记录并重新抛出,然后组件将保持在STOPPING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
submit_order(self, Order order) → void
提交给定的订单(可能是主订单或派生的订单)。
将创建一个SubmitOrder命令并发送给RiskEngine。
如果客户端订单ID重复,则该订单将被拒绝。
- Parameters:
- order (Order) – 要提交的订单。
 - parent_order_id (ClientOrderId , optional) – 父级客户端订单标识符。如果提供,则该订单将被视为父订单的子订单。
 
 - Raises:
- ValueError – 如果订单状态不是
INITIALIZED或RELEASED。 - ValueError – 如果order.emulation_trigger不是
NO_TRIGGER。 
 - ValueError – 如果订单状态不是
 
警告
如果传入了position_id但该仓位尚不存在,那么订单开立的任何仓位都将被分配这个仓位ID。这可能不是您想要的结果。
模拟订单无法从执行算法发送(有意限制复杂性)。
subscribe_bars(self, BarType bar_type, ClientId client_id=None, bool await_partial=False, dict params=None) → void
订阅给定柱类型的流式柱数据。
订阅后,消息总线上发布的任何匹配的柱状数据都会被转发到on_bar处理程序。
- Parameters:
 
subscribe_data(self, DataType data_type, ClientId client_id=None, dict params=None) → void
订阅指定数据类型的数据。
订阅后,任何在消息总线上发布的匹配数据都会被转发到on_data处理程序。
- Parameters:
 
subscribe_index_prices(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
订阅指定工具ID的指数价格更新流数据。
订阅后,消息总线上发布的任何匹配的指数价格更新都会被转发到 on_index_price 处理程序。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的交易品种。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
subscribe_instrument(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
订阅更新给定仪器ID的仪器数据。
一旦订阅,消息总线上发布的任何匹配的仪器数据都会被转发到on_instrument处理程序。
- Parameters:
- instrument_id (InstrumentId) – 订阅的标的物ID。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
subscribe_instrument_close(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
订阅给定交易标的ID的收盘价更新。
订阅后,任何在消息总线上发布的匹配工具收盘数据都会被转发到on_instrument_close处理程序。
- Parameters:
- instrument_id (InstrumentId) – 要订阅状态更新的交易标的。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
subscribe_instrument_status(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
订阅给定交易标的ID的状态更新。
订阅后,任何在消息总线上发布的匹配交易品种状态数据都会被转发到on_instrument_status处理程序。
- Parameters:
- instrument_id (InstrumentId) – 要订阅状态更新的交易标的。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
subscribe_instruments(self, Venue venue, ClientId client_id=None, dict params=None) → void
订阅更新指定交易场所的Instrument数据。
订阅后,任何发布在消息总线上的匹配交易品种数据都会被转发到on_instrument处理器。
- Parameters:
 
subscribe_mark_prices(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
订阅指定工具ID的流式MarkPriceUpdate数据。
一旦订阅,消息总线上发布的任何匹配标记价格更新都会被转发到on_mark_price处理程序。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的交易品种。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
subscribe_order_book_at_interval(self, InstrumentId instrument_id, BookType book_type=BookType.L2_MBP, int depth=0, int interval_ms=1000, ClientId client_id=None, bool managed=True, dict params=None) → void
为给定的instrument ID按指定间隔订阅订单簿数据。
订阅后,消息总线上发布的任何匹配订单簿更新都会被转发到on_order_book处理程序。
DataEngine 对于每个交易品种只会维护一个订单簿。 因此,数据流的层级、深度和参数将按照最后一次订阅请求进行设置(这将影响所有订阅者)。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的订单簿工具ID。
 - book_type (BookType {
L1_MBP,L2_MBP,L3_MBO}) – 订单簿类型。 - depth (int , optional) – 订单簿的最大深度。深度为0表示最大深度。
 - interval_ms (int , default 1000) – 订单簿快照间隔时间(毫秒)。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - managed (bool , 默认 True) – 是否由数据引擎基于订阅的feed来管理订单簿。
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 - Raises:
- ValueError - 如果深度值为负数(小于0)。
 - ValueError – 如果interval_ms不是正数(> 0)。
 
 
警告
如果需要小于100毫秒的间隔,请考虑订阅订单簿增量数据。
subscribe_order_book_deltas(self, InstrumentId instrument_id, BookType book_type=BookType.L2_MBP, int depth=0, ClientId client_id=None, bool managed=True, bool pyo3_conversion=False, dict params=None) → void
订阅订单簿数据流,首先获取指定工具ID的快照,随后接收增量更新。
订阅后,任何在消息总线上发布的匹配订单簿数据都会被转发到on_order_book_deltas处理器。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的订单簿工具ID。
 - book_type (BookType {
L1_MBP,L2_MBP,L3_MBO}) – 订单簿类型。 - depth (int , optional) – 订单簿的最大深度。深度为0表示最大深度。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - managed (bool , 默认 True) – 是否由数据引擎基于订阅的feed来管理订单簿。
 - pyo3_conversion (bool , default False) – 如果接收到的delta数据在被传递给on_order_book_deltas处理程序之前,应该被转换为nautilus_pyo3.OrderBookDeltas。
 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
subscribe_quote_ticks(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
订阅给定工具ID的流式报价数据。
订阅后,任何在消息总线上发布的匹配报价tick数据都会被转发到on_quote_tick处理程序。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的行情工具。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
subscribe_signal(self, str name='') → void
通过名称订阅特定信号,如果未提供名称则订阅所有信号。
一旦订阅,消息总线上发布的任何匹配信号数据都会被转发到on_signal处理程序。
- 参数: name (str , optional) – 要订阅的信号名称。如果未提供或传入空字符串,订阅将包含所有信号。 信号名称不区分大小写,并将被转换为大写形式 (例如:'example'会变成'SignalExample*')。
 
subscribe_trade_ticks(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
订阅指定交易品种ID的实时TradeTick数据流。
订阅后,消息总线上发布的任何匹配的交易tick数据都会被转发到on_trade_tick处理程序。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的行情工具。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
to_importable_config(self) → ImportableExecAlgorithmConfig
返回该执行算法的可导入配置。
交易者ID
与该组件关联的交易者ID。
- 返回: TraderId
 
类型
组件类型。
- 返回值: 类型
 
unsubscribe_bars(self, BarType bar_type, ClientId client_id=None, dict params=None) → void
取消订阅指定柱状类型的流式数据。
- Parameters:
 
unsubscribe_data(self, DataType data_type, ClientId client_id=None, dict params=None) → void
取消订阅指定数据类型的数据。
- Parameters:
 
unsubscribe_index_prices(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
取消订阅指定合约ID的指数价格更新数据流。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的交易品种。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
unsubscribe_instrument(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
取消订阅给定工具ID的更新仪器数据。
- Parameters:
- instrument_id (InstrumentId) – 要取消订阅的合约标的。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
unsubscribe_instrument_status(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
取消订阅指定交易场所的状态更新。
- Parameters:
- instrument_id (InstrumentId) – 要取消订阅状态更新的交易品种。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从交易场所推断。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
unsubscribe_instruments(self, Venue venue, ClientId client_id=None, dict params=None) → void
取消订阅指定交易场所的更新工具数据。
- Parameters:
 
unsubscribe_mark_prices(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
取消订阅指定合约ID的MarkPriceUpdate流数据。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的交易品种。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
unsubscribe_order_book_at_interval(self, InstrumentId instrument_id, int interval_ms=1000, ClientId client_id=None, dict params=None) → void
取消订阅指定交易品种ID在特定间隔的订单簿数据。
时间间隔必须与之前订阅的时间间隔相匹配。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的订单簿交易品种。
 - interval_ms (int , default 1000) – 订单簿快照间隔时间(毫秒)。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
unsubscribe_order_book_deltas(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
取消订阅指定交易品种ID的订单簿增量数据流。
- Parameters:
- instrument_id (InstrumentId) – 要订阅的订单簿交易品种。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
unsubscribe_quote_ticks(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
取消订阅指定交易品种ID的实时报价数据流。
- Parameters:
- instrument_id (InstrumentId) – 要取消订阅的行情标的。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
unsubscribe_trade_ticks(self, InstrumentId instrument_id, ClientId client_id=None, dict params=None) → void
取消订阅指定合约ID的实时交易报价数据流。
- Parameters:
- instrument_id (InstrumentId) – 要取消订阅的行情工具ID。
 - client_id (ClientId , optional) – 命令对应的特定客户端ID。
如果为
None,则会从工具ID中的交易场所推断得出。 - params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。
 
 
update_synthetic(self, SyntheticInstrument synthetic) → void
更新缓存中的合成工具。
- 参数: synthetic (SyntheticInstrument) – 要在缓存中更新的合成工具。
 - 抛出异常: KeyError – 如果合成数据尚未存在于缓存中。
 
class ExecutionClient
基类:Component
ExecutionClient(ClientId client_id, Venue venue: Venue | None, OmsType oms_type, AccountType account_type, Currency base_currency: Currency | None, MessageBus msgbus, Cache cache, Clock clock, config: NautilusConfig | None = None) 所有执行客户端的基类。
- Parameters:
- client_id (ClientId) – 客户端ID。
 - venue (Venue 或 
None) – 客户端交易场所。如果是多交易场所模式,则可以为None。 - oms_type (OmsType) – 交易场所的订单管理系统类型。
 - account_type (AccountType) – 客户账户类型。
 - base_currency (Currency 或 
None) – 账户基础货币。对于多货币账户使用None。 - msgbus (MessageBus) – 客户端的消息总线。
 - cache (Cache) – 客户端的缓存。
 - clock (Clock) – 客户端的时钟。
 - config (NautilusConfig , optional) – 实例的配置。
 
 - Raises:
- ValueError - 如果client_id不等于account_id.get_issuer()。
 - ValueError – 如果oms_type为
UNSPECIFIED(必须指定)。 
 
警告
这个类不应该直接使用,而是通过具体的子类来使用。
账户ID
客户账户ID。
- 返回:
AccountId 或 
None 
账户类型
客户账户类型。
- 返回: AccountType
 
基础货币
客户账户的基础货币(多币种账户则为None)。
- 返回值:
货币或
None 
batch_cancel_orders(self, BatchCancelOrders command) → void
批量取消给定指令中包含的标的ID对应的订单。
- 参数: command (BatchCancelOrders) – 要执行的命令。
 
cancel_all_orders(self, CancelAllOrders 命令) → void
取消给定命令中包含的标的ID的所有订单。
- 参数: command (CancelAllOrders) – 要执行的命令。
 
cancel_order(self, CancelOrder 命令) → 无返回值
取消包含给定命令中客户端订单ID的订单。
- 参数: command (CancelOrder) – 要执行的命令。
 
degrade(self) → void
降级该组件。
在执行on_degrade()时,任何异常都会被记录并重新抛出,然后该组件将保持在DEGRADING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
dispose(self) → void
释放组件。
在执行on_dispose()时,任何异常都会被记录并重新抛出,然后该组件将保持在DISPOSING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
fault(self) → void
故障组件。
多次调用此方法的效果与调用一次相同(具有幂等性)。 一旦调用,无法撤销,且不应在此实例上调用其他方法。
在执行on_fault()时,任何异常都会被记录并重新抛出,然后该组件将保持在FAULTING状态。
警告
请勿覆盖。
如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。
类方法 fully_qualified_name(cls) → str
返回组件类的完全限定名称。
- 返回类型: str
 
generate_account_state(self, list balances, list margins, bool reported, uint64_t ts_event, dict info=None) → void
生成一个AccountState事件并在消息总线上发布。
- Parameters:
- balances (list [AccountBalance ]) – 账户余额。
 - margins (list [MarginBalance ]) – 保证金余额列表。
 - reported (bool) – 如果余额是直接从交易所报告的。
 - ts_event (uint64_t) – 账户状态事件发生时的UNIX时间戳(纳秒)。
 - info (dict *[*str , object ]) – 特定实现相关的额外账户信息。
 
 
generate_order_accepted(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id, uint64_t ts_event) → void
生成一个OrderAccepted事件并将其发送到ExecutionEngine。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - venue_order_id (VenueOrderId) – 交易所订单ID(由交易所分配)。
 - ts_event (uint64_t) – 订单接受事件发生时的UNIX时间戳(纳秒)。
 
 
generate_order_cancel_rejected(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id, str reason, uint64_t ts_event) → void
生成一个OrderCancelRejected事件并将其发送到ExecutionEngine。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - venue_order_id (VenueOrderId) – 交易所订单ID(由交易所分配)。
 - reason (str) – 订单取消被拒绝的原因。
 - ts_event (uint64_t) – 订单取消被拒事件发生时的UNIX时间戳(纳秒)。
 
 
generate_order_canceled(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id, uint64_t ts_event) → void
生成一个OrderCanceled事件并将其发送到ExecutionEngine。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - venue_order_id (VenueOrderId) – 交易所订单ID(由交易所分配)。
 - ts_event (uint64_t) – 订单取消事件发生时的UNIX时间戳(纳秒)。
 
 
generate_order_expired(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id, uint64_t ts_event) → void
生成一个订单过期事件并将其发送到执行引擎。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - venue_order_id (VenueOrderId) – 交易所订单ID(由交易所分配)。
 - ts_event (uint64_t) – 订单过期事件发生时的UNIX时间戳(纳秒)。
 
 
generate_order_filled(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id, PositionId venue_position_id: PositionId | None, TradeId trade_id, OrderSide order_side, OrderType order_type, Quantity last_qty, Price last_px, Currency quote_currency, Money commission, LiquiditySide liquidity_side, uint64_t ts_event, dict info=None) → void
生成一个OrderFilled事件并将其发送到ExecutionEngine。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - venue_order_id (VenueOrderId) – 交易所订单ID(由交易所分配)。
 - trade_id (TradeId) – 交易ID。
 - venue_position_id (PositionId 或 
None) – 与订单关联的交易场所仓位ID。如果交易场所已分配仓位ID/票据,请在此处传入该ID,否则传入None,执行引擎OMS将处理仓位ID解析。 - order_side (OrderSide {
BUY,SELL}) – 执行订单的方向。 - order_type (OrderType) – 执行订单类型。
 - last_qty (Quantity) – 该执行的成交数量。
 - last_px (Price) – 该成交的执行价格(非平均价格)。
 - quote_currency (Currency) – 价格的货币单位。
 - commission (Money) – 成交佣金。
 - liquidity_side (LiquiditySide {
NO_LIQUIDITY_SIDE,MAKER,TAKER}) – 执行流动性方向。 - ts_event (uint64_t) – 订单成交事件发生时的UNIX时间戳(纳秒)。
 - info (dict *[*str , object ] , optional) – 额外的成交信息。
 
 
generate_order_modify_rejected(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id, str reason, uint64_t ts_event) → void
生成一个OrderModifyRejected事件并将其发送到ExecutionEngine。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - venue_order_id (VenueOrderId) – 交易所订单ID(由交易所分配)。
 - reason (str) – 订单更新被拒绝的原因。
 - ts_event (uint64_t) – 订单更新被拒事件发生时的UNIX时间戳(纳秒)。
 
 
generate_order_rejected(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, str reason, uint64_t ts_event) → void
生成一个OrderRejected事件并将其发送到ExecutionEngine。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - reason (datetime) – 订单被拒绝的原因。
 - ts_event (uint64_t) – 订单被拒绝事件发生时的UNIX时间戳(纳秒)。
 
 
generate_order_submitted(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, uint64_t ts_event) → void
生成一个OrderSubmitted事件并将其发送到ExecutionEngine。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - ts_event (uint64_t) – 订单提交事件发生时的UNIX时间戳(纳秒)。
 
 
generate_order_triggered(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id, uint64_t ts_event) → void
生成一个OrderTriggered事件并将其发送到ExecutionEngine。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - venue_order_id (VenueOrderId) – 交易所订单ID(由交易所分配)。
 - ts_event (uint64_t) – 订单触发事件发生时的UNIX时间戳(纳秒)。
 
 
generate_order_updated(self, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id, Quantity quantity, Price price, Price trigger_price, uint64_t ts_event, bool venue_order_id_modified=False) → void
生成一个OrderUpdated事件并将其发送到ExecutionEngine。
- Parameters:
- strategy_id (StrategyId) – 与该事件关联的策略ID。
 - instrument_id (InstrumentId) – 该金融工具的ID。
 - client_order_id (ClientOrderId) – 客户端订单ID。
 - venue_order_id (VenueOrderId) – 交易所订单ID(由交易所分配)。
 - quantity (Quantity) – 订单当前数量。
 - price (Price) – 订单当前价格。
 - trigger_price (Price 或 
None) – 订单当前的触发价格。 - ts_event (uint64_t) – 订单更新事件发生时的UNIX时间戳(纳秒)。
 - venue_order_id_modified (bool) – 如果此事件的ID被修改。
 
 
get_account(self) → 账户
返回客户端的账户(如果已注册)。
- 返回类型:
Account 或 
None 
id
组件ID。
- 返回: ComponentId
 
是否已连接
如果客户端已连接。
- 返回值: bool