跳转到主要内容
Version: latest

执行

执行子包包含了与平台执行栈相关的组件。

执行栈的分层架构在某种程度上反映了数据栈的结构,它包含一个中央引擎,下方是缓存层,再下方是数据库层,同时可以在顶层编写替代实现方案。

由于高性能特性,核心组件在回测和实盘实现中均可复用——有助于确保交易操作逻辑的一致性。

组件

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:
    • order (Order) – 要取消的订单。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从工具ID中的交易场所推断得出。

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。

警告

系统方法(不供用户代码调用)。

handle_instrument_status(self, InstrumentStatus data) → void

处理给定的合约状态更新。

如果状态是 RUNNING 则传递给 on_instrument_status。

警告

系统方法(不供用户代码调用)。

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:
    • order (Order) – 要更新的订单。
    • quantity (Quantity , optional) – 给定订单的更新数量。
    • price (Price , optional) – 给定订单的更新价格(如适用)。
    • trigger_price (Price , optional) – 给定订单的更新触发价格(如适用)。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从工具ID中的交易场所推断得出。
  • Raises:
    • ValueError – 如果价格不是None且订单没有价格。
    • ValueError - 如果触发器不是None且订单没有设置触发价格。

警告

如果订单已关闭或处于PENDING_CANCEL状态 则不会生成命令,并记录警告。

modify_order_in_place(self, Order order, Quantity quantity=None, Price price=None, Price trigger_price=None) → void

就地修改给定的INITIALIZED订单(立即生效),可选参数。

至少需要有一个值与原始订单不同,该命令才能生效。

  • Parameters:
    • order (Order) – 要更新的订单。
    • quantity (Quantity , optional) – 指定订单更新后的数量。
    • price (Price , 可选) – 给定订单的更新价格(如适用)。
    • trigger_price (Price , optional) – 给定订单的更新触发价格(如适用)。
  • Raises:
    • ValueError – 如果订单状态不是INITIALIZEDRELEASED
    • ValueError – 如果价格不是None且订单没有价格。
    • ValueError - 如果触发器不是None且订单没有设置触发价格。

警告

如果订单已关闭或处于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

在运行并接收到合约收盘更新时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_instrument_status(self, InstrumentStatus data) → void

当运行并接收到一个仪器状态更新时要执行的操作。

警告

系统方法(不供用户代码调用)。

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

在运行并接收到订单接受事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

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

当运行并收到订单取消被拒绝事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_canceled(self, OrderCanceled event) → void

在运行并接收到订单取消事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_denied(self, OrderDenied事件) → void

在运行并接收到订单拒绝事件时要执行的操作。

  • 参数: event (OrderDenied) – 接收到的事件。

警告

系统方法(不供用户代码调用)。

on_order_emulated(self, OrderEmulated事件) → void

当运行并接收到订单初始化事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_event(self, OrderEvent event) → void

在运行并接收到订单事件时要执行的操作。

  • 参数: event (OrderEvent) – 接收到的事件。

警告

系统方法(不供用户代码调用)。

on_order_expired(self, OrderExpired事件) → void

当运行并接收到订单过期事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_filled(self, OrderFilled事件) → void

在运行并接收到订单成交事件时要执行的操作。

  • 参数: event (OrderFilled) – 接收到的事件。

警告

系统方法(不供用户代码调用)。

on_order_initialized(self, OrderInitialized event) → void

当运行并接收到订单初始化事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_list(self, OrderList order_list) → void

在运行并接收到订单列表时要执行的操作。

  • 参数: order_list (OrderList) – 需要处理的订单列表。

警告

系统方法(不供用户代码调用)。

on_order_modify_rejected(self, 订单修改被拒事件) → void

当运行并收到订单修改拒绝事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_pending_cancel(self, OrderPendingCancel事件) → void

当运行并收到订单待取消事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_pending_update(self, OrderPendingUpdate事件) → void

当运行并收到订单待更新事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_rejected(self, OrderRejected事件) → void

当运行并接收到订单被拒绝事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_released(self, OrderReleased事件) → void

在运行并接收到订单释放事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_submitted(self, OrderSubmitted事件) → void

当运行并接收到订单提交事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_triggered(self, OrderTriggered事件) → void

当运行并接收到订单触发事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_order_updated(self, OrderUpdated事件) → void

当运行并接收到订单更新事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_position_changed(自身, PositionChanged 事件) → 无返回值

当运行并接收到仓位变更事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_position_closed(self, PositionClosed事件) → void

在运行并接收到仓位关闭事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_position_event(self, PositionEvent事件) → void

在运行并接收到仓位事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_position_opened(self, PositionOpened事件) → void

在运行并接收到持仓开启事件时要执行的操作。

警告

系统方法(不供用户代码调用)。

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

将给定数据发布到消息总线。

  • Parameters:
    • data_type (DataType) – 正在发布的数据类型。
    • data (Data) – 要发布的数据。

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

将给定的指标注册到智能体/策略中,以接收指定柱线类型的数据。

  • Parameters:
    • bar_type (BarType) – 用于bar更新的bar类型。
    • 指标 (Indicator) – 要注册的指标。

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) – 要注册的事件类。

已注册指标

返回该策略已注册的指标。

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 – 如果订单状态不是INITIALIZEDRELEASED
    • ValueError – 如果order.emulation_trigger不是NO_TRIGGER

警告

如果传入了position_id但该仓位尚不存在,那么订单开立的任何仓位都将被分配这个仓位ID。这可能不是您想要的结果。

模拟订单无法从执行算法发送(有意限制复杂性)。

subscribe_bars(self, BarType bar_type, ClientId client_id=None, bool await_partial=False, dict params=None) → void

订阅给定柱类型的流式柱数据。

订阅后,消息总线上发布的任何匹配的柱状数据都会被转发到on_bar处理程序。

  • Parameters:
    • bar_type (BarType) – 要订阅的K线类型。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从工具ID中的交易场所推断得出。
    • await_partial (bool , default False) – 是否让柱状图聚合器在开始主动聚合新柱状图之前,等待历史部分柱状图的到达。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

subscribe_data(self, DataType data_type, ClientId client_id=None, dict params=None) → void

订阅指定数据类型的数据。

订阅后,任何在消息总线上发布的匹配数据都会被转发到on_data处理程序。

  • Parameters:
    • data_type (DataType) – 要订阅的数据类型。
    • client_id (ClientId , optional) – 数据客户端ID。如果提供,则会向对应的数据客户端发送订阅命令。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

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:
    • venue (Venue) – 订阅的交易场所。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从交易场所推断。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

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:
    • bar_type (BarType) – 要取消订阅的K线类型。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从工具ID中的交易场所推断得出。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

unsubscribe_data(self, DataType data_type, ClientId client_id=None, dict params=None) → void

取消订阅指定数据类型的数据。

  • Parameters:
    • data_type (DataType) – 要取消订阅的数据类型。
    • client_id (ClientId , optional) – 数据客户端ID。如果提供该参数,则会向数据客户端发送取消订阅命令。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

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:
    • venue (Venue) – 订阅的交易场所。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从交易场所推断。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

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对应的订单。

cancel_all_orders(self, CancelAllOrders 命令) → void

取消给定命令中包含的标的ID的所有订单。

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

is_degraded

布尔值 返回当前组件状态是否为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

是否正在运行

bool 返回当前组件状态是否为RUNNING

  • 返回类型: bool
  • 类型: Component.is_running

是否已停止

bool 返回当前组件状态是否为STOPPED

  • 返回类型: bool
  • 类型: Component.is_stopped

modify_order(self, ModifyOrder command) → void

使用命令中包含的参数修改订单。

  • 参数: command (ModifyOrder) – 要执行的命令。

订单管理系统类型

交易场所订单管理系统类型。

  • 返回: OmsType

query_order(self, QueryOrder命令) → void

为查询的订单启动对账流程,这将生成一份订单状态报告。

  • 参数: command (QueryOrder) – 要执行的命令。

reset(self) → void

重置该组件。

所有有状态的字段都将重置为其初始值。

在执行on_reset()时,任何异常都将被记录并重新抛出,然后该组件将保持RESETTING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

resume(self) → void

恢复组件。

在执行on_resume()时,任何异常都会被记录并重新抛出,然后该组件将保持在RESUMING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

shutdown_system(self, str reason=None) → void

通过生成并发布ShutdownSystem命令来启动系统范围的关机。

该命令由系统的NautilusKernel处理,根据执行上下文和当前活动事件循环的情况,将同步调用stop或异步调用stop_async。

  • 参数: reason (str , 可选) – 发出关机命令的原因。

start(self) → void

启动组件。

在执行on_start()时,任何异常都会被记录并重新抛出,然后该组件将保持在STARTING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

状态

ComponentState 返回组件当前状态。

  • 返回类型: ComponentState
  • 类型: Component.state

stop(self) → void

停止该组件。

在执行on_stop()时,任何异常都会被记录并重新抛出,然后组件将保持在STOPPING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

submit_order(self, SubmitOrder command) → void

提交给定命令中包含的订单以供执行。

  • 参数: command (SubmitOrder) – 要执行的命令。

submit_order_list(self, SubmitOrderList command) → void

提交给定命令中包含的订单列表以供执行。

交易者ID

与该组件关联的交易者ID。

  • 返回: TraderId

类型

组件类型。

  • 返回值: 类型

交易场所

客户端场所ID(如果不是路由客户端)。

  • 返回: 交易场所或None

class OrderEmulator

基类: Actor

OrderEmulator(PortfolioFacade portfolio, MessageBus msgbus, Cache cache, Clock clock, config: OrderEmulatorConfig | None = None) 为指定的触发类型提供订单模拟功能。

  • Parameters:
    • portfolio (PortfolioFacade) – 订单模拟器的只读投资组合。
    • msgbus (MessageBus) – 订单模拟器的消息总线。
    • cache (Cache) – 订单模拟器的缓存。
    • clock (Clock) – 订单模拟器的时钟。
    • config (OrderEmulatorConfig , optional) – 订单模拟器的配置。

active_task_ids(self) → list

返回活动任务标识符。

  • 返回类型: list[TaskId]

add_synthetic(self, SyntheticInstrument synthetic) → void

将创建的合成工具添加到缓存中。

  • 参数: synthetic (SyntheticInstrument) – 要添加到缓存中的合成工具。
  • 抛出异常: KeyError – 如果合成数据已在缓存中。

缓存

该智能体的只读缓存。

  • 返回值: CacheFacade

cancel_all_tasks(self) → void

取消所有排队中和活跃的任务。

cancel_task(self, task_id: TaskId) → void

取消具有给定task_id的任务(如果处于排队或活动状态)。

如果未找到任务,则会记录一条警告。

  • 参数: task_id (TaskId) – 任务标识符。

时钟

智能体的时钟。

  • 返回: Clock

命令计数

模拟器接收到的命令总数。

  • 返回值: int

配置

智能体配置。

  • 返回: NautilusConfig

create_matching_core(self, InstrumentId instrument_id, Price price_increment) → MatchingCore

为指定交易品种创建内部撮合引擎。

  • Parameters:
    • instrument_id (InstrumentId) – 用于匹配核心的仪器ID。
    • price_increment (Price) – 匹配核心的最小价格增量(跳动点)。
  • 返回类型: MatchingCore
  • 抛出异常: KeyError - 如果给定instrument_id已存在匹配的核心。

调试

如果调试模式处于活动状态(将提供额外的调试日志记录)。

  • 返回值: bool

degrade(self) → void

降级该组件。

在执行on_degrade()时,任何异常都会被记录并重新抛出,然后该组件将保持在DEGRADING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

deregister_warning_event(self, type event) → void

从警告日志级别中注销给定的事件类型。

  • 参数: event (type) – 要注销的事件类。

dispose(self) → void

释放组件。

在执行on_dispose()时,任何异常都会被记录并重新抛出,然后该组件将保持在DISPOSING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

事件计数

模拟器接收的事件总数。

  • 返回值: int

execute(self, TradingCommand command) → void

执行给定的命令。

fault(self) → void

故障组件。

多次调用此方法的效果与调用一次相同(具有幂等性)。 一旦调用,无法撤销,且不应在此实例上调用其他方法。

在执行on_fault()时,任何异常都会被记录并重新抛出,然后该组件将保持在FAULTING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

类方法 fully_qualified_name(cls) → str

返回组件类的完全限定名称。

  • 返回类型: str

get_matching_core(self, InstrumentId instrument_id) → MatchingCore | None

返回与给定工具ID匹配的模拟器核心。

  • 返回类型: MatchingCore 或 None

get_submit_order_commands(self) → dict[ClientOrderId, SubmitOrder]

返回模拟器缓存的提交订单命令。

希腊字母

该智能体的只读希腊值计算器。

  • 返回值: 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。

警告

系统方法(不供用户代码调用)。

handle_instrument_status(self, InstrumentStatus data) → void

处理给定的合约状态更新。

如果状态是 RUNNING 则传递给 on_instrument_status。

警告

系统方法(不供用户代码调用)。

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

消息总线

该智能体的消息总线(如果已注册)。

  • 返回值: 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

在运行并接收到合约收盘更新时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_instrument_status(self, InstrumentStatus data) → void

当运行并接收到一个仪器状态更新时要执行的操作。

警告

系统方法(不供用户代码调用)。

on_load(self, dict state) → void

当智能体状态加载时要执行的操作。

保存的状态值将包含在给定的状态字典中。

  • 参数: state (dict *[*str , bytes ]) – 要加载的策略状态。

警告

系统方法(不供用户代码调用)。

on_mark_price(self, MarkPriceUpdate mark_price) → void

在运行并接收到标记价格更新时要执行的操作。

  • 参数: mark_price (MarkPriceUpdate) – 接收到的标记价格更新。

警告

系统方法(不供用户代码调用)。

on_order_book(self, OrderBook order_book) → void

在运行并接收到订单簿时要执行的操作。

  • 参数: order_book (OrderBook) – 接收到的订单簿。

警告

系统方法(不供用户代码调用)。

on_order_book_deltas(self, deltas) → void

on_quote_tick(self, QuoteTick tick) → void

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

pending_requests(self) → set

返回当前待处理的请求ID。

  • 返回类型: set[UUID4]

投资组合

该智能体的只读投资组合。

  • 返回值: PortfolioFacade

publish_data(self, DataType data_type, Data data) → void

将给定数据发布到消息总线。

  • Parameters:
    • data_type (DataType) – 正在发布的数据类型。
    • data (Data) – 要发布的数据。

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_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

将给定的指标注册到智能体/策略中,以接收指定柱线类型的数据。

  • Parameters:
    • bar_type (BarType) – 用于bar更新的bar类型。
    • 指标 (Indicator) – 要注册的指标。

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) – 要注册的事件类。

已注册指标

返回该策略已注册的指标。

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 , 可选) – 发出关机命令的原因。

start(self) → void

启动组件。

在执行on_start()时,任何异常都会被记录并重新抛出,然后该组件将保持在STARTING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

状态

ComponentState 返回组件当前状态。

  • 返回类型: ComponentState
  • 类型: Component.state

stop(self) → void

停止该组件。

在执行on_stop()时,任何异常都会被记录并重新抛出,然后组件将保持在STOPPING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

subscribe_bars(self, BarType bar_type, ClientId client_id=None, bool await_partial=False, dict params=None) → void

订阅给定柱类型的流式柱数据。

订阅后,消息总线上发布的任何匹配的柱状数据都会被转发到on_bar处理程序。

  • Parameters:
    • bar_type (BarType) – 要订阅的K线类型。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从工具ID中的交易场所推断得出。
    • await_partial (bool , default False) – 是否让柱状图聚合器在开始主动聚合新柱状图之前,等待历史部分柱状图的到达。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

subscribe_data(self, DataType data_type, ClientId client_id=None, dict params=None) → void

订阅指定数据类型的数据。

订阅后,任何在消息总线上发布的匹配数据都会被转发到on_data处理程序。

  • Parameters:
    • data_type (DataType) – 要订阅的数据类型。
    • client_id (ClientId , optional) – 数据客户端ID。如果提供,则会向对应的数据客户端发送订阅命令。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

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:
    • venue (Venue) – 订阅的交易场所。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从交易场所推断。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

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) – 可能被特定客户端使用的额外参数。

订阅行情

list[InstrumentId] 返回模拟器订阅的行情数据源。

  • 返回类型: list[InstrumentId]
  • 类型: OrderEmulator.subscribed_quotes

订阅交易

list[InstrumentId] 返回模拟器订阅的交易数据流。

  • 返回类型: list[InstrumentId]
  • 类型: OrderEmulator.subscribed_trades

to_importable_config(self) → ImportableActorConfig

返回该智能体的可导入配置。

交易者ID

与该组件关联的交易者ID。

  • 返回: TraderId

类型

组件类型。

  • 返回值: 类型

unsubscribe_bars(self, BarType bar_type, ClientId client_id=None, dict params=None) → void

取消订阅指定柱状类型的流式数据。

  • Parameters:
    • bar_type (BarType) – 要取消订阅的K线类型。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从工具ID中的交易场所推断得出。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

unsubscribe_data(self, DataType data_type, ClientId client_id=None, dict params=None) → void

取消订阅指定数据类型的数据。

  • Parameters:
    • data_type (DataType) – 要取消订阅的数据类型。
    • client_id (ClientId , optional) – 数据客户端ID。如果提供该参数,则会向数据客户端发送取消订阅命令。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

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:
    • venue (Venue) – 订阅的交易场所。
    • client_id (ClientId , optional) – 命令对应的特定客户端ID。 如果为None,则会从交易场所推断。
    • params (dict *[*str , Any ] , optional) – 可能被特定客户端使用的额外参数。

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 – 如果合成数据尚未存在于缓存中。

ExecutionEngine是整个执行栈的核心组件。

执行引擎的主要职责是协调ExecutionClient实例与平台其他部分之间的交互。这包括通过其注册的执行客户端向交易场所端点发送命令,以及从中接收事件。

该引擎采用简单的扇入扇出消息模式来执行TradingCommand消息,并处理AccountState或OrderEvent类型的消息。

可以在通用引擎之上编写替代实现 - 只需要重写execute和process方法即可。

class ExecutionEngine

基类:Component

ExecutionEngine(MessageBus msgbus, Cache cache, Clock clock, config: ExecEngineConfig | None = None) -> None 提供一个高性能的执行引擎,用于管理多个 ExecutionClient实例,以及异步接收和分发 交易指令和事件。

  • Parameters:
    • 消息总线 (MessageBus) – 引擎的消息总线。
    • cache (Cache) – 引擎的缓存。
    • clock (Clock) – 引擎的时钟。
    • config (ExecEngineConfig , optional) – 实例的配置参数。
  • 抛出异常: TypeError – 如果config不是ExecEngineConfig类型。

check_connected(self) → bool

检查所有引擎客户端是否已连接。

  • 返回值: 如果所有客户端都连接成功则返回True,否则返回False。
  • 返回类型: bool

check_disconnected(self) → bool

检查所有引擎客户端是否已断开连接。

  • 返回值: 如果所有客户端都已断开连接则返回True,否则返回False。
  • 返回类型: bool

check_integrity(self) → bool

检查缓存和客户端中数据的完整性。

  • 返回值: 如果检查通过返回True,否则返回False。
  • 返回类型: bool

check_residuals(self) → bool

检查是否有任何残留的开放状态,如果发现则记录警告。

'开放状态'指的是未平仓订单和持仓头寸。

  • 返回值: 如果存在残差则返回True,否则返回False。
  • 返回类型: bool

命令计数

引擎接收到的命令总数。

  • 返回值: int

connect(self) → None

通过调用所有已注册客户端的connect方法来连接引擎。

调试

如果调试模式处于激活状态(将提供额外的调试日志记录)。

  • 返回值: bool

默认客户端

ClientId | None 返回引擎注册的默认执行客户端。

  • 返回类型: ClientId 或 None
  • 类型: ExecutionEngine.default_client

degrade(self) → void

降级该组件。

在执行on_degrade()时,任何异常都会被记录并重新抛出,然后该组件将保持在DEGRADING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

deregister_client(self, ExecutionClient client) → void

从执行引擎中注销给定的执行客户端。

  • 参数: client (ExecutionClient) – 要注销的执行客户端。
  • 抛出异常: ValueError – 如果客户端未在执行引擎中注册。

disconnect(self) → None

通过在所有已注册客户端上调用disconnect来断开引擎连接。

dispose(self) → void

释放组件。

在执行on_dispose()时,任何异常都会被记录并重新抛出,然后该组件将保持在DISPOSING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

事件计数

引擎接收的事件总数。

  • 返回值: int

execute(self, TradingCommand command) → void

执行给定的命令。

fault(self) → void

故障组件。

多次调用此方法的效果与调用一次相同(具有幂等性)。 一旦调用,无法撤销,且不应在此实例上调用其他方法。

在执行on_fault()时,任何异常都会被记录并重新抛出,然后该组件将保持在FAULTING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

flush_db(self) → void

清空执行数据库,这将永久删除所有持久化数据。

警告

永久性数据丢失。

类方法 fully_qualified_name(cls) → str

返回组件类的完全限定名称。

  • 返回类型: str

get_clients_for_orders(self, list orders) → set

获取给定订单的所有执行客户端。

  • 参数: order (列表 [Order ]) – 执行客户端的订单列表。
  • 返回类型: list[ExecutionClient]

get_external_order_claim(self, InstrumentId instrument_id) → StrategyId

获取给定工具ID的任何外部订单声明。

  • 参数: instrument_id (InstrumentId) – 索赔的标的物ID。
  • 返回类型: StrategyId 或 None

get_external_order_claims_instruments(self) → set

获取所有外部订单申报的标的ID。

id

组件ID。

  • 返回: ComponentId

是否降级

布尔值 返回当前组件状态是否为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

是否正在运行

bool 返回当前组件状态是否为RUNNING

  • 返回类型: bool
  • 类型: Component.is_running

是否已停止

bool 返回当前组件状态是否为STOPPED

  • 返回类型: bool
  • 类型: Component.is_stopped

load_cache(self) → void

从执行数据库加载缓存。

管理自有订单簿

如果执行引擎需要基于命令和事件维护自己的订单簿。

  • 返回值: bool

position_id_count(self, StrategyId strategy_id) → int

给定策略ID的持仓ID数量。

  • 参数: strategy_id (StrategyId) – 用于统计持仓量的策略ID。
  • 返回类型: int

process(self, OrderEvent event) → void

处理给定的订单事件。

  • 参数: event (OrderEvent) – 要处理的订单事件。

reconcile_mass_status(self, report: ExecutionMassStatus) → None

核对给定的执行批量状态报告。

reconcile_report(self, report: ExecutionReport) → bool

检查给定的执行报告。

  • 参数: report (ExecutionReport) – 要检查的执行报告。
  • 返回值: 如果对账成功返回True,否则返回False。
  • 返回类型: bool

异步 协调状态(self, double timeout_secs: float = 10.0) → bool

将内部执行状态与所有执行客户端(外部状态)进行对账。

  • 参数: timeout_secs (double , 默认 10.0) – 对账完成超时时间(秒)。
  • 返回值: 如果在超时时间内状态达成一致则返回True,否则返回False。
  • 返回类型: bool
  • 抛出异常: ValueError - 如果timeout_secs不是正数(>0)。

对账

bool 返回是否在启动时运行对账流程。

  • 返回类型: bool
  • 类型: ExecutionEngine.reconciliation

register_client(self, ExecutionClient client) → void

将给定的执行客户端注册到执行引擎中。

如果 client.venue 是 None 且之前没有注册过默认路由客户端,那么将被注册为默认路由客户端。

  • 参数: client (ExecutionClient) – 要注册的执行客户端。
  • 抛出异常: ValueError - 如果客户端已在执行引擎中注册。

register_default_client(self, ExecutionClient client) → void

将给定的客户端注册为默认路由客户端(当找不到特定场所路由时)。

任何现有的默认路由客户端将被覆盖。

register_external_order_claims(self, Strategy strategy) → void

注册给定策略的外部订单声明工具ID(如果有的话)

  • 参数: strategy (Strategy) – 用于注册的策略。
  • 抛出异常: InvalidConfiguration – 如果已有策略注册为某交易品种ID的外部订单处理者。

register_oms_type(self, Strategy strategy) → void

注册给定交易策略的OMS(订单管理系统)类型。

  • 参数: strategy (Strategy) – 用于注册的策略。

register_venue_routing(self, ExecutionClient client, Venue venue) → void

将给定客户端注册到指定交易场所以路由订单。

路由映射中给定交易场所的任何现有客户端将被覆盖。

  • Parameters:
    • venue (Venue) – 订单路由的目标交易场所。
    • client (ExecutionClient) – 用于交易场所路由的客户端。

已注册客户端

list[ClientId] 返回引擎中注册的执行客户端。

  • 返回类型: list[ClientId]
  • 类型: ExecutionEngine.registered_clients

报告计数

'int' 引擎接收到的报告总数。

  • 返回值: int
  • 类型: report_count

reset(self) → void

重置该组件。

所有有状态的字段都将重置为其初始值。

在执行on_reset()时,任何异常都将被记录并重新抛出,然后该组件将保持RESETTING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

resume(self) → void

恢复组件。

在执行on_resume()时,任何异常都会被记录并重新抛出,然后该组件将保持在RESUMING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

set_manage_own_order_books(self, bool value) → void

使用给定值设置manage_own_order_books参数。

  • 参数: value (bool) – 要设置的值。

shutdown_system(self, str reason=None) → void

通过生成并发布ShutdownSystem命令来启动系统范围的关机。

该命令由系统的NautilusKernel处理,根据执行上下文和当前活动事件循环的情况,将同步调用stop或异步调用stop_async。

  • 参数: reason (str , 可选) – 发出关机命令的原因。

订单快照

如果订单状态快照需要持久化保存。

  • 返回值: bool

持仓快照

是否应持久化持仓状态快照。

  • 返回值: bool

持仓快照间隔秒数

额外持仓状态快照的持久化间隔时间(秒)。

  • 返回值: double

持仓快照定时器名称

start(self) → void

启动组件。

在执行on_start()时,任何异常都会被记录并重新抛出,然后该组件将保持在STARTING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

状态

ComponentState 返回组件当前状态。

  • 返回类型: ComponentState
  • 类型: Component.state

stop(self) → void

停止该组件。

在执行on_stop()时,任何异常都会被记录并重新抛出,然后组件将保持在STOPPING状态。

警告

请勿覆盖。

如果组件当前状态不满足执行此方法的有效条件,则组件状态将保持不变,并记录错误日志。

stop_clients(self) → void

停止已注册的客户端。

交易者ID

与该组件关联的交易者ID。

  • 返回: TraderId

类型

组件类型。

  • 返回值: 类型

OrderManager

基类: object

OrderManager(Clock clock, MessageBus msgbus, Cache cache, str component_name, bool active_local, submit_order_handler: Callable[[SubmitOrder], None] = None, cancel_order_handler: Callable[[Order], None] = None, modify_order_handler: Callable[[Order, Quantity], None] = None, bool debug=False, bool log_events=True, bool log_commands=True) 提供一个通用的订单执行管理器。

  • Parameters:
    • clock (Clock) – 订单管理器的时钟。
    • msgbus (MessageBus) – 订单管理器使用的消息总线。
    • cache (Cache) – 订单管理器的缓存。
    • component_name (str) – 订单管理器的组件名称。
    • active_local (str) – 如果管理器用于处理本地活动订单。
    • submit_order_handler (Callable [ [SubmitOrder ] , None ] , optional) – 提交订单时调用的处理程序。
    • cancel_order_handler (Callable [ [Order ] , None ] , optional) – 取消订单时要调用的处理程序。
    • modify_order_handler (Callable [ [Order , Quantity ] , None ] , optional) – 修改订单时调用的处理程序(仅限于修改数量)。
    • debug (bool , 默认 False) – 是否启用调试模式(将提供额外的调试日志记录)。
  • Raises:
    • TypeError – 如果submit_order_handler不是None且不是Callable类型。
    • TypeError – 如果 cancel_order_handler 不是 None 且不是可调用类型。
    • TypeError – 如果modify_order_handler不是None且不是Callable类型。

active_local

缓存提交订单命令(self, SubmitOrder command) → void

将给定的提交订单命令缓存到管理器。

  • 参数: command (SubmitOrder) – 要缓存的提交订单命令。

cancel_order(self, Order order) → void

通过管理器取消给定的订单。

  • 参数: order (Order) – 要取消的订单。

create_new_submit_order(self, Order order, PositionId position_id=None, ClientId client_id=None) → void

为指定订单创建新的提交订单命令。

  • Parameters:
    • order (Order) – 该命令对应的订单。
    • position_id (PositionId , optional) – 该命令对应的仓位ID。
    • client_id (ClientId , optional) – 该命令的客户端ID。

调试

get_submit_order_commands(self) → dict

返回缓存的经理提交订单命令。

处理应急情况(self, Order order) → void

处理应急更新(self, Order order) → void

handle_event(self, Event event) → void

处理给定的事件。

如果没有为给定事件实现处理程序,那么这将只是一个无操作。

  • 参数: event (Event) – 要处理的事件

handle_order_canceled(self, OrderCanceled canceled) → void

处理订单过期(self, OrderExpired expired) → void

handle_order_filled(self, OrderFilled filled) → void

handle_order_rejected(self, OrderRejected rejected) → void

处理订单更新(self, OrderUpdated updated) → void

handle_position_event(self, PositionEvent事件) → void

记录命令

记录事件

modify_order_quantity(self, Order order, Quantity new_quantity) → void

使用管理器修改给定的订单。

  • 参数: order (Order) – 要修改的订单。

pop_submit_order_command(self, ClientOrderId client_order_id) → SubmitOrder

从管理器的缓存中弹出指定client_order_id的提交订单命令(如果找到)。

  • 参数: client_order_id (ClientOrderId) – 要弹出的命令对应的客户端订单ID。
  • 返回类型: SubmitOrder 或 None

reset(self) → void

重置管理器,清除所有状态值。

send_algo_command(self, TradingCommand command, ExecAlgorithmId exec_algorithm_id) → void

send_emulator_command(self, TradingCommand command) → void

send_exec_command(self, TradingCommand command) → void

send_exec_event(self, OrderEvent event) → void

send_risk_command(self, TradingCommand command) → void

send_risk_event(self, OrderEvent event) → void

should_manage_order(self, Order order) → bool

检查给定的订单是否应该被管理。

  • 参数: order (Order) – 要检查的订单。
  • 返回值: 如果订单需要被管理则返回True,否则返回False。
  • 返回类型: bool

class MatchingCore

基类: object

MatchingCore(InstrumentId instrument_id, Price price_increment, trigger_stop_order: Callable, fill_market_order: Callable, fill_limit_order: Callable) 提供一个通用的订单撮合核心。

  • Parameters:
    • instrument_id (InstrumentId) – 用于匹配核心的仪器ID。
    • price_increment (Price) – 匹配核心的最小价格增量(跳动点)。
    • trigger_stop_order (Callable [ [Order ] , None ]) – 当止损订单被触发时的回调函数。
    • fill_market_order (Callable [ [Order ] , None ]) – 当市价订单成交时的回调函数。
    • fill_limit_order (Callable [ [Order ] , None ]) – 当限价订单成交时调用的函数。

add_order(self, Order order) → void

询问

价格 | 无 返回匹配核心的当前卖出价。

  • 返回类型: Price 或 None
  • 类型: MatchingCore.ask

ask_raw

买入价

价格 | 无 返回匹配核心的当前买价。

  • 返回类型: Price 或 None
  • 类型: MatchingCore.bid

买价原始数据

delete_order(self, Order order) → void

get_order(self, ClientOrderId client_order_id) → Order

get_orders(self) → 列表

get_orders_ask(self) → list

get_orders_bid(self) → list

instrument_id

InstrumentId 返回匹配核心的合约ID。

  • 返回类型: InstrumentId
  • 类型: MatchingCore.instrument_id

is_ask_initialized

是否已初始化买单

是否最后初始化

is_limit_matched(self, OrderSide side, Price price) → bool

is_stop_triggered(self, OrderSide side, Price trigger_price) → bool

is_touch_triggered(self, OrderSide side, Price trigger_price) → bool

iterate(self, uint64_t timestamp_ns) → void

最后

价格 | 无 返回匹配核心的当前最新价格。

  • 返回类型: Price 或 None
  • 类型: MatchingCore.last

last_raw

match_limit_if_touched_order(self, Order order, bool initial) → void

match_limit_order(self, Order order) → void

match_market_if_touched_order(self, Order order) → void

match_order(self, Order order, bool initial=False) → void

匹配给定的订单。

  • Parameters:
    • order (Order) – 要匹配的订单。
    • initial (bool , default False) – 如果这是一个初始匹配。
  • 抛出异常: TypeError – 如果订单的order_type对核心来说是无效类型(例如MARKET)。

match_stop_limit_order(self, Order order, bool initial) → void

match_stop_market_order(self, Order order) → void

order_exists(self, ClientOrderId client_order_id) → bool

价格增量

价格 返回匹配核心中工具的最小价格增量(最小变动价位)。

  • 返回类型: Price
  • 类型: MatchingCore.price_increment

价格精度

int 返回匹配核心的标的物价格精度。

  • 返回类型: int
  • 类型: MatchingCore.price_precision

reset(self) → void

消息

class BatchCancelOrders

基类: TradingCommand

BatchCancelOrders(TraderId trader_id, StrategyId strategy_id, InstrumentId instrument_id, list cancels, UUID4 command_id, uint64_t ts_init, ClientId client_id=None, dict params: dict | None = None) -> None 表示一个批量取消指定交易品种在交易所中正在执行订单的命令。

  • Parameters:
    • trader_id (TraderId) – 该命令对应的交易员ID。
    • strategy_id (StrategyId) – 该命令对应的策略ID。
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • cancels (list [CancelOrder ]) – 取消订单命令的内部列表。
    • command_id (UUID4) – 命令ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • client_id (ClientId , optional) – 该命令的执行客户端ID。
    • params (dict *[*str , object ] , optional) – 该命令的额外参数。
  • Raises:
    • ValueError - 如果取消列表为空时抛出。
    • ValueError - 如果cancels中包含非CancelOrder类型的对象。

取消

客户端ID

该命令的执行客户端ID。

  • 返回: ClientId 或 None

静态 from_dict(dict 值) → BatchCancelOrders

根据给定的字典值返回批量撤单命令。

  • 参数: values (dict *[*str , object ]) – 初始化使用的值。
  • 返回类型: BatchCancelOrders

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

策略ID

与命令关联的策略ID。

  • 返回值: StrategyId

静态 to_dict(BatchCancelOrders obj)

返回该对象的字典表示形式。

  • 返回类型: dict[str, object]

交易者ID

与命令关联的交易者ID。

  • 返回: TraderId

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class CancelAllOrders

基类: TradingCommand

CancelAllOrders(TraderId trader_id, StrategyId strategy_id, InstrumentId instrument_id, OrderSide order_side, UUID4 command_id, uint64_t ts_init, ClientId client_id=None, dict params: dict | None = None) -> None 表示取消某交易品种所有订单的命令。

  • Parameters:
    • trader_id (TraderId) – 该命令对应的交易员ID。
    • strategy_id (StrategyId) – 该命令对应的策略ID。
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • order_side (OrderSide) – 该指令的订单方向。
    • command_id (UUID4) – 命令ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • client_id (ClientId , optional) – 该命令的执行客户端ID。
    • params (dict *[*str , object ] , optional) – 该命令的附加参数。

客户端ID

该命令的执行客户端ID。

  • 返回值: ClientId 或 None

static from_dict(dict values) → CancelAllOrders

根据给定的字典值返回一个取消订单命令。

  • 参数: values (dict *[*str , object ]) – 初始化使用的值。
  • 返回类型: CancelAllOrders

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

订单方向

该指令的订单方向。

  • 返回值: OrderSide

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

策略ID

与命令关联的策略ID。

  • 返回值: StrategyId

静态 to_dict(CancelAllOrders obj)

返回该对象的字典表示形式。

  • 返回类型: dict[str, object]

交易者ID

与命令关联的交易者ID。

  • 返回: TraderId

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class CancelOrder

基类: TradingCommand

CancelOrder(TraderId trader_id, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id: VenueOrderId | None, UUID4 command_id, uint64_t ts_init, ClientId client_id=None, dict params: dict | None = None) -> None 表示取消订单的命令。

  • Parameters:
    • trader_id (TraderId) – 该命令对应的交易员ID。
    • strategy_id (StrategyId) – 该命令对应的策略ID。
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • client_order_id (ClientOrderId) – 要取消的客户端订单ID。
    • venue_order_id (VenueOrderId 或 None) – 要取消的交易所订单ID(由交易所分配)。
    • command_id (UUID4) – 命令ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • client_id (ClientId , optional) – 该命令的执行客户端ID。
    • params (dict *[*str , object ] , optional) - 命令的附加参数。

客户端ID

该命令的执行客户端ID。

  • 返回: ClientId 或 None

客户端订单ID

与命令关联的客户端订单ID。

  • 返回: ClientOrderId

静态 from_dict(dict values) → CancelOrder

根据给定的字典值返回一个取消订单命令。

  • 参数: values (dict *[*str , object ]) – 初始化使用的值。
  • 返回类型: CancelOrder

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

策略ID

与命令关联的策略ID。

  • 返回值: StrategyId

静态 to_dict(CancelOrder obj)

返回该对象的字典表示形式。

  • 返回类型: dict[str, object]

交易者ID

与命令关联的交易者ID。

  • 返回: TraderId

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

交易所订单ID

与命令关联的交易场所订单ID。

  • 返回: VenueOrderId 或 None

class ExecutionReportCommand

基类:Command

ExecutionReportCommand(InstrumentId instrument_id: InstrumentId | None, datetime start: datetime | None, datetime end: datetime | None, UUID4 command_id, uint64_t ts_init, dict params: dict | None = None) -> None 所有执行报告命令的基类。

  • Parameters:
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • start (datetime , optional) – 请求时间范围的起始时间(UTC,包含该时间点)。
    • end (datetime , optional) – 请求时间范围的结束时间(UTC)。 包含性取决于各个数据客户端的实现。
    • command_id (UUID4) – 命令的ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • params (dict *[*str , object ] , optional) – 该命令的附加参数。

警告

这个类不应该直接使用,而是通过具体的子类来使用。

结束

请求时间范围的结束时间(UTC)。

:返回 datetime 或 None

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

开始

请求时间范围的起始日期时间(UTC)(包含在内)。

:返回 datetime 或 None

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class GenerateFillReports

基类: ExecutionReportCommand

GenerateFillReports(InstrumentId instrument_id: InstrumentId | None, VenueOrderId venue_order_id: VenueOrderId | None, datetime start: datetime | None, datetime end: datetime | None, UUID4 command_id, uint64_t ts_init, dict params: dict | None = None) -> None 生成成交报告的命令。

  • Parameters:
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • venue_order_id (VenueOrderId 或 None) – 要查询的交易场所订单ID(由交易场所分配)。
    • start (datetime) – 请求时间范围的起始时间(UTC,包含该时间点)。
    • end (datetime) – 请求时间范围的结束时间(UTC)。 具体是否包含该时间点取决于各数据客户端的实现。
    • command_id (UUID4) – 命令的ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • params (dict *[*str , object ] , optional) – 该命令的附加参数。

结束

请求时间范围的结束时间(UTC)。

:返回 datetime 或 None

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

开始

请求时间范围的起始日期时间(UTC,包含该时间点)。

:返回 datetime 或 None

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

交易所订单ID

与命令关联的交易场所订单ID。

  • 返回: VenueOrderId 或 None

class GenerateOrderStatusReport

基类: ExecutionReportCommand

GenerateOrderStatusReport(InstrumentId instrument_id: InstrumentId | None, ClientOrderId client_order_id: ClientOrderId | None, VenueOrderId venue_order_id: VenueOrderId | None, UUID4 command_id, uint64_t ts_init, dict params: dict | None = None) -> None 生成订单状态报告的命令。

  • Parameters:
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • client_order_id (ClientOrderId) – 需要更新的客户端订单ID。
    • venue_order_id (VenueOrderId 或 None) – 要查询的交易所订单ID(由交易所分配)。
    • command_id (UUID4) – 命令的ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • params (dict *[*str , object ] , optional) – 该命令的附加参数。

客户端订单ID

与命令关联的客户端订单ID。

  • 返回: ClientOrderId

结束

请求时间范围的结束时间(UTC)。

:返回 datetime 或 None

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

开始

请求时间范围的起始日期时间(UTC)(包含在内)。

:返回 datetime 或 None

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

交易所订单ID

与命令关联的交易场所订单ID。

  • 返回: VenueOrderId 或 None

class 生成订单状态报告

基类: ExecutionReportCommand

GenerateOrderStatusReports(InstrumentId instrument_id: InstrumentId | None, datetime start: datetime | None, datetime end: datetime | None, bool open_only, UUID4 command_id, uint64_t ts_init, dict params: dict | None = None, LogLevel log_receipt_level=LogLevel.INFO) -> None 生成订单状态报告的命令。

  • Parameters:
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • start (datetime) – 请求时间范围的起始UTC时间(包含)。
    • end (datetime) – 请求时间范围的结束时间(UTC)。 包含性取决于各个数据客户端的实现。
    • open_only (bool) – 如果为True,则只请求未成交的订单。
    • command_id (UUID4) – 命令的ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • params (dict *[*str , object ] , optional) - 命令的附加参数。
    • log_receipt_level (LogLevel , 默认值 'INFO') – 用于记录接收报告的日志级别。必须是 LogLevel.DEBUG 或 LogLevel.INFO。

结束

请求时间范围的结束时间(UTC)。

:返回 datetime 或 None

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

日志接收级别

记录接收报告的日志级别。

  • 返回: LogLevel

仅限开仓

如果请求仅针对未平仓订单。

  • 返回值: bool

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

开始

请求时间范围的起始日期时间(UTC,包含该时间点)。

:返回 datetime 或 None

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class 生成持仓状态报告

基类: ExecutionReportCommand

GeneratePositionStatusReports(InstrumentId instrument_id: InstrumentId | None, datetime start: datetime | None, datetime end: datetime | None, UUID4 command_id, uint64_t ts_init, dict params: dict | None = None) -> None 生成持仓状态报告的命令。

  • Parameters:
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • start (datetime) – 请求时间范围的起始时间(UTC,包含该时间点)。
    • end (datetime) – 请求时间范围的结束时间(UTC)。 具体是否包含该时间点取决于各数据客户端的实现。
    • command_id (UUID4) – 命令的ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • params (dict *[*str , object ] , optional) - 命令的附加参数。

结束

请求时间范围的结束时间(UTC)。

:返回 datetime 或 None

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

开始

请求时间范围的起始日期时间(UTC,包含该时间点)。

:返回 datetime 或 None

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

ModifyOrder

基类: TradingCommand

ModifyOrder(TraderId trader_id, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id: VenueOrderId | None, Quantity quantity: Quantity | None, Price price: Price | None, Price trigger_price: Price | None, UUID4 command_id, uint64_t ts_init, ClientId client_id=None, dict params: dict | None = None) -> None 表示修改现有订单属性的命令。

  • Parameters:
    • trader_id (TraderId) – 该命令对应的交易员ID。
    • strategy_id (StrategyId) – 该命令对应的策略ID。
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • client_order_id (ClientOrderId) – 需要更新的客户端订单ID。
    • venue_order_id (VenueOrderId or None) – 要更新的交易所订单ID(由交易所分配)。
    • quantity (Quantity 或 None) – 订单更新的数量。
    • price (Price 或 None) – 订单更新的价格。
    • trigger_price (Price 或 None) – 订单更新的触发价格。
    • command_id (UUID4) – 命令ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • client_id (ClientId , optional) – 该命令的执行客户端ID。
    • params (dict *[*str , object ] , optional) - 命令的附加参数。

客户端ID

该命令的执行客户端ID。

  • 返回值: ClientId 或 None

客户端订单ID

与命令关联的客户端订单ID。

  • 返回: ClientOrderId

静态 from_dict(dict 值) → ModifyOrder

根据给定的字典值返回修改订单命令。

  • 参数: values (dict *[*str , object ]) – 初始化使用的值。
  • 返回类型: ModifyOrder

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

价格

该指令的更新价格。

  • 返回: 价格或None

数量

命令更新后的数量。

  • 返回值: 数量或None

策略ID

与命令关联的策略ID。

  • 返回值: StrategyId

静态 to_dict(ModifyOrder obj)

返回该对象的字典表示形式。

  • 返回类型: dict[str, object]

交易者ID

与命令关联的交易者ID。

  • 返回: TraderId

触发价格

该指令更新后的触发价格。

  • 返回: 价格或 None

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

交易所订单ID

与命令关联的交易场所订单ID。

  • 返回: VenueOrderId 或 None

class QueryOrder

基类: TradingCommand

QueryOrder(TraderId trader_id, StrategyId strategy_id, InstrumentId instrument_id, ClientOrderId client_order_id, VenueOrderId venue_order_id: VenueOrderId | None, UUID4 command_id, uint64_t ts_init, ClientId client_id=None, dict params: dict | None = None) -> None 表示查询订单的命令。

  • Parameters:
    • trader_id (TraderId) – 该命令对应的交易员ID。
    • strategy_id (StrategyId) – 该命令对应的策略ID。
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • client_order_id (ClientOrderId) – 要查询订单的客户端订单ID。
    • venue_order_id (VenueOrderId 或 None) – 要查询的交易所订单ID(由交易所分配)。
    • command_id (UUID4) – 命令ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • client_id (ClientId , optional) – 该命令的执行客户端ID。
    • params (dict *[*str , object ] , optional) - 命令的附加参数。

客户端ID

该命令的执行客户端ID。

  • 返回值: ClientId 或 None

客户端订单ID

要查询订单的客户端订单ID。

  • 返回: ClientOrderId

静态 from_dict(dict values) → QueryOrder

从给定的字典值返回查询订单命令。

  • 参数: values (dict *[*str , object ]) – 初始化使用的值。
  • 返回类型: QueryOrder

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

策略ID

与命令关联的策略ID。

  • 返回值: StrategyId

静态 to_dict(QueryOrder obj)

返回该对象的字典表示形式。

  • 返回类型: dict[str, object]

交易者ID

与命令关联的交易者ID。

  • 返回: TraderId

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

交易所订单ID

要查询订单的交易场所订单ID。

  • 返回: VenueOrderId 或 None

class 提交订单

基类: TradingCommand

SubmitOrder(TraderId trader_id, StrategyId strategy_id, Order order, UUID4 command_id, uint64_t ts_init, PositionId position_id: PositionId | None = None, ClientId client_id=None, dict params: dict | None = None) -> None 表示提交指定订单的命令。

  • Parameters:
    • trader_id (TraderId) – 该命令对应的交易员ID。
    • strategy_id (StrategyId) – 该命令对应的策略ID。
    • order (Order) – 要提交的订单。
    • command_id (UUID4) – 命令的ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • position_id (PositionId , optional) – 该命令对应的仓位ID。
    • client_id (ClientId , optional) – 该命令的执行客户端ID。
    • params (dict *[*str , object ] , optional) - 命令的附加参数。

客户端ID

该命令的执行客户端ID。

  • 返回值: ClientId 或 None

执行算法ID

订单的执行算法ID。

  • 返回: ExecAlgorithmId 或 None

静态 from_dict(dict 值) → SubmitOrder

根据给定的字典值返回一个提交订单命令。

  • 参数: values (dict *[*str , object ]) – 初始化使用的值。
  • 返回类型: SubmitOrder

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

订单

要提交的订单。

  • 返回: Order

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

仓位ID

与订单关联的头寸ID。

  • 返回值: PositionId 或 None

策略ID

与命令关联的策略ID。

  • 返回值: StrategyId

静态 to_dict(提交订单 对象)

返回该对象的字典表示形式。

  • 返回类型: dict[str, object]

交易者ID

与命令关联的交易者ID。

  • 返回: TraderId

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class SubmitOrderList

基类: TradingCommand

SubmitOrderList(TraderId trader_id, StrategyId strategy_id, OrderList order_list, UUID4 command_id, uint64_t ts_init, PositionId position_id: PositionId | None = None, ClientId client_id=None, dict params: dict | None = None) -> None 表示提交一个由相关父子条件订单组成的批量/批量订单列表的命令。

此命令可对应FIX协议中的NewOrderList消息。

  • Parameters:
    • trader_id (TraderId) – 该命令对应的交易员ID。
    • strategy_id (StrategyId) – 该命令对应的策略ID。
    • order_list (OrderList) – 要提交的订单列表。
    • command_id (UUID4) – 命令ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • position_id (PositionId , optional) – 该命令对应的仓位ID。
    • client_id (ClientId , optional) – 该命令的执行客户端ID。
    • params (dict *[*str , object ] , optional) - 命令的附加参数。

客户端ID

该命令的执行客户端ID。

  • 返回值: ClientId 或 None

执行算法ID

订单列表的执行算法ID。

  • 返回值: ExecAlgorithmId 或 None

static from_dict(dict values) → SubmitOrderList

根据给定的字典值返回一个提交订单列表命令。

  • 参数: values (dict *[*str , object ]) – 初始化使用的值。
  • 返回类型: SubmitOrderList

has_emulated_order

如果包含的order_list中至少有一个模拟订单。

  • 返回值: bool

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

订单列表

要提交的订单列表。

  • 返回: OrderList

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

仓位ID

与订单关联的仓位ID。

  • 返回值: PositionId 或 None

策略ID

与命令关联的策略ID。

  • 返回值: StrategyId

static to_dict(SubmitOrderList obj)

返回该对象的字典表示形式。

  • 返回类型: dict[str, object]

交易者ID

与命令关联的交易者ID。

  • 返回: TraderId

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class TradingCommand

基类:Command

TradingCommand(ClientId client_id: ClientId | None, TraderId trader_id, StrategyId strategy_id, InstrumentId instrument_id, UUID4 command_id, uint64_t ts_init, dict params: dict | None = None) -> None 所有交易相关命令的基类。

  • Parameters:
    • client_id (ClientId or None) – 该命令对应的执行客户端ID。
    • trader_id (TraderId) – 该命令对应的交易员ID。
    • strategy_id (StrategyId) – 该命令对应的策略ID。
    • instrument_id (InstrumentId) – 该命令对应的交易品种ID。
    • command_id (UUID4) – 命令的ID。
    • ts_init (uint64_t) – 对象初始化时的UNIX时间戳(纳秒)。
    • params (dict *[*str , object ] , optional) - 命令的附加参数。

警告

这个类不应该直接使用,而是通过具体的子类来使用。

客户端ID

该命令的执行客户端ID。

  • 返回值: ClientId 或 None

id

命令消息ID。

  • 返回: UUID4

instrument_id

与该命令关联的仪器ID。

  • 返回: InstrumentId

参数

该命令的其他特定参数。

  • 返回值: dict[str, object] 或 None

策略ID

与命令关联的策略ID。

  • 返回值: StrategyId

交易者ID

与命令关联的交易者ID。

  • 返回: TraderId

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

报告

class 执行报告

基类:Document

所有执行报告的基础类。

id

文档消息ID。

  • 返回: UUID4

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class 订单状态报告

基类: ExecutionReport

表示某个时间点的订单状态。

  • Parameters:
    • account_id (AccountId) – 报告对应的账户ID。
    • instrument_id (InstrumentId) – 报告对应的工具ID。
    • venue_order_id (VenueOrderId) – 交易所报告订单ID(由交易所分配)。
    • order_side (OrderSide {BUY, SELL}) – 报告订单方向。
    • order_type (OrderType) – 报告订单类型。
    • time_in_force (TimeInForce {GTC, IOC, FOK, GTD, DAY, AT_THE_OPEN, AT_THE_CLOSE}) – 报告的订单有效时间。
    • order_status (OrderStatus) – 交易所报告的最新订单状态。
    • quantity (Quantity) – 报告的订单原始数量。
    • filled_qty (数量) – 交易所报告的实际成交数量。
    • report_id (UUID4) – 报告ID。
    • ts_accepted (int) – 订单被接受时的UNIX时间戳(纳秒)。
    • ts_last (int) – 最后一次订单状态变更的UNIX时间戳(纳秒)。
    • ts_init (int) – 对象初始化时的UNIX时间戳(纳秒)。
    • client_order_id (ClientOrderId , optional) – 上报的客户端订单ID。
    • order_list_id (OrderListId , optional) – 与订单关联的报告订单列表ID。
    • venue_position_id (PositionId , optional) – 订单上报的交易场所持仓ID。如果交易场所已为该订单关联了持仓ID/票据,请在此处传递该ID;否则传递None,执行引擎OMS将处理持仓ID解析。
    • contingency_type (ContingencyType, 默认 NO_CONTINGENCY) – 报告的订单应急类型。
    • expire_time (datetime , optional) – 订单过期时间。
    • price (Price , optional) – 报告的订单价格(限价单)。
    • trigger_price (Price , optional) – 报告的订单触发价格(STOP)。
    • trigger_type (TriggerType, default NO_TRIGGER) – 上报订单的触发类型。
    • limit_offset (Decimal , optional) – 订单价格(LIMIT)的尾随偏移量。
    • trailing_offset (Decimal , optional) – 触发价格(STOP)的追踪偏移量。
    • trailing_offset_type (TrailingOffsetType, 默认 NO_TRAILING_OFFSET) – 订单追踪偏移类型。
    • avg_px (Decimal , optional) – 报告订单的平均成交价格。
    • display_qty (Quantity , optional) – 在公开订单簿上显示的申报订单数量(冰山订单)。
    • post_only (bool , default False) – 如果报告的订单仅提供流动性(做市)。
    • reduce_only (bool , 默认 False) – 如果报告的订单带有"仅减仓"执行指令。
    • cancel_reason (str , optional) – 订单取消上报的原因。
    • ts_triggered (int , optional) – 对象初始化时的UNIX时间戳(纳秒)。
  • Raises:
    • ValueError - 如果数量不是正数(> 0)。
    • ValueError - 如果filled_qty为负数(小于0)。
    • ValueError – 如果trigger_price不是None且trigger_price等于NO_TRIGGER
    • ValueError – 如果limit_offset或trailing_offset不为None且trailing_offset_type等于NO_TRAILING_OFFSET

属性 is_open : bool

返回报告订单状态是否为"开放"状态。

  • 返回类型: bool

static from_pyo3(pyo3_report: OrderStatusReport) → OrderStatusReport

id

文档消息ID。

  • 返回: UUID4

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class 成交报告

基类: ExecutionReport

表示单个订单成交的报告。

  • Parameters:
    • account_id (AccountId) – 报告对应的账户ID。
    • instrument_id (InstrumentId) – 报告的交易标的ID。
    • venue_order_id (VenueOrderId) – 交易所为这笔交易分配的订单ID。
    • trade_id (TradeId) – 报告的交易匹配ID(由交易场所分配)。
    • order_side (OrderSide {BUY, SELL}) – 交易报告中的订单方向。
    • last_qty (Quantity) – 报告的交易数量。
    • last_px (Price) – 交易报告价格。
    • commission (Money) – 该交易报告的佣金金额。如果无佣金,则使用佣金货币的零金额。
    • liquidity_side (LiquiditySide {NO_LIQUIDITY_SIDE, MAKER, TAKER}) – 交易报告的流动性方向。
    • report_id (UUID4) – 报告ID。
    • ts_event (int) – 交易发生时的UNIX时间戳(纳秒)。
    • ts_init (int) – 对象初始化时的UNIX时间戳(纳秒)。
    • client_order_id (ClientOrderId , optional) – 交易报告中的客户端订单ID。
    • venue_position_id (PositionId , optional) – 交易报告中的交易所仓位ID。如果交易场所为该交易分配了仓位ID/票据,请在此处传入该ID,否则传入None,执行引擎OMS将处理仓位ID解析。
  • 抛出异常: ValueError – 如果last_qty不是正数(>0)。

静态 从_pyo3(pyo3_report: FillReport) → FillReport

id

文档消息ID。

  • 返回: UUID4

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class PositionStatusReport

基类: ExecutionReport

表示某个时间点的持仓状态。

  • Parameters:
    • account_id (AccountId) – 报告对应的账户ID。
    • instrument_id (InstrumentId) – 报告的头寸对应的标的ID。
    • position_side (PositionSide {FLAT, LONG, SHORT}) – 交易所报告的头寸方向。
    • quantity (Quantity) – 交易所报告的头寸数量。
    • report_id (UUID4) – 报告ID。
    • ts_last (int) – 最近仓位变更的UNIX时间戳(纳秒)。
    • ts_init (int) – 对象初始化时的UNIX时间戳(纳秒)。
    • venue_position_id (PositionId , optional) – 交易所报告的头寸ID(由交易所分配)。如果交易场所已为该交易分配了头寸ID/票据,则在此处传递该ID,否则传递None,执行引擎OMS将处理头寸ID解析。

静态 从_pyo3(pyo3_report: PositionStatusReport) → PositionStatusReport

id

文档消息ID。

  • 返回: UUID4

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t

class ExecutionMassStatus

基类:Document

表示执行客户端的批量执行状态报告 - 包括所有订单的状态、这些订单的交易以及未平仓头寸。

  • Parameters:
    • venue (Venue) – 报告的交易场所。
    • client_id (ClientId) – 报告对应的客户端ID。
    • account_id (AccountId) – 报告对应的账户ID。
    • report_id (UUID4) – 报告ID。
    • ts_init (int) – 对象初始化时的UNIX时间戳(纳秒)。

属性 order_reports : dict[VenueOrderId, OrderStatusReport]

订单状态报告。

属性 fill_reports : dict[VenueOrderId, list[FillReport]]

成交回报。

属性 position_reports : dict[InstrumentId, list[PositionStatusReport]]

持仓状态报告。

add_order_reports(reports: list[OrderStatusReport]) → None

将订单报告添加到批量状态中。

  • 参数: reports (list [OrderStatusReport ]) - 要添加的报告列表。
  • 抛出异常: TypeError - 如果reports包含非FillReport类型的对象。

添加成交报告(reports: list[FillReport]) → None

将成交报告添加到批量状态中。

  • 参数: reports (list [FillReport ]) – 要添加的报告列表。
  • 抛出异常: TypeError – 如果reports包含非FillReport类型的对象。

add_position_reports(报告: list[PositionStatusReport]) → 无

将持仓状态报告添加到批量状态中。

id

文档消息ID。

  • 返回: UUID4

ts_init

对象初始化时的UNIX时间戳(纳秒)。

  • 返回值: uint64_t