Xlight API用户手册 v1.7.0.16
Xlight极速柜台接口文档
载入中...
搜索中...
未找到
算法厂商接入手册

概述

本文面向算法厂商侧开发,描述厂商接入 Xlight 算法母单能力时的接口、流程与状态约定。

参与方职责

参与方 核心职责 关键接口/回调
用户侧(User) 发起算法母单或篮子母单的创建与操作 x1::XLTTradeApi::algo_create, x1::XLTTradeApi::algo_control, x1::XLTTradeApi::basket_algo_create, x1::XLTTradeApi::basket_algo_control
管理侧(Privilege) 账户管理、请求路由、状态分发
厂商侧(Vendor) 注册算法、处理请求、上报执行结果、查询和恢复母单状态 x1::XLTTradeApi::vendor_algo_register, x1::XLTTradeSpi::on_vendor_basket_algo_create_request, x1::XLTTradeSpi::on_vendor_basket_algo_control_request, x1::XLTTradeApi::vendor_submit_algo_exec_report, x1::XLTTradeApi::vendor_query_algo_state, x1::XLTTradeApi::vendor_query_algo_state_ex

厂商接入主流程

前置条件

算法厂商服务接入前,需先完成以下准备:

  1. 开通厂商账号:支持开通多个账号,建议每台服务实例使用一个独立账号(即 vendor_account_index)。
  2. 在 Xlight 柜台上架算法:上架成功后返回唯一算法类型标识 algo_type。
  3. 服务运行时账号登录后,需注册 algo_type(XLTTradeApi::vendor_algo_register),注册成功后才能接收对应算法母单请求。

运行期基础动作建议如下:

  1. 完成交易 API 初始化与登录(XLTTradeApi::initialize / XLTTradeApi::login)。
  2. 建议登录成功后立即订阅交易消息(XLTTradeApi::subscribe_trade_message),确保可接收算法相关推送。
  3. 按账号注册支持的算法类型(XLTTradeApi::vendor_algo_register)。
  4. 厂商重启或需要补齐本地母单上下文时,可调用 XLTTradeApi::vendor_query_algo_state_ex 查询状态及创建参数。

标准处理链路

步骤 厂商动作 对应接口/回调 说明
1 登录 x1::XLTTradeApi::login / x1::XLTTradeSpi::on_login 建立会话
2 订阅消息 x1::XLTTradeApi::subscribe_trade_message / x1::XLTTradeSpi::on_subscribe_trade_message 建议覆盖算法相关消息类型
3 注册算法类型 x1::XLTTradeApi::vendor_algo_register / x1::XLTTradeSpi::on_vendor_algo_register_response 注册后可接收对应母单请求
4 接收创建请求 x1::XLTTradeSpi::on_vendor_algo_create_request 管理侧转发母单创建请求
5 上报创建结果 x1::XLTTradeApi::vendor_submit_algo_exec_report 上报 ALGO_EXEC_NEW 或 ALGO_EXEC_NEW_REJECT
6 上报开始执行 x1::XLTTradeApi::vendor_submit_algo_exec_report 上报 ALGO_EXEC_START
7 按需申请交易令牌 x1::XLTTradeApi::vendor_auth_trade / x1::XLTTradeSpi::on_auth_trade 返回 trade_token 用于后续下单
8 执行交易并处理交易回报 x1::XLTTradeApi::insert_order / x1::XLTTradeApi::cancel_order / x1::XLTTradeSpi::on_order_response / x1::XLTTradeSpi::on_cancel_response / x1::XLTTradeSpi::on_trade_report / x1::XLTTradeSpi::on_order_error_response / x1::XLTTradeSpi::on_order_end 通过 trade_token 发起委托/撤单并处理回报:委托回报 on_order_response、撤单回报 on_cancel_response、成交回报 on_trade_report、委托错误回报 on_order_error_response、委托结束回报 on_order_end。上述回报中的 xlt_msg_desc_t::account_index 即母单 ID xlt_algo_id
9 持续上报执行状态 x1::XLTTradeApi::vendor_submit_algo_exec_report 例如 ALGO_EXEC_FINISH / ALGO_EXEC_ABORT
10 接收操作请求并回执 x1::XLTTradeSpi::on_vendor_algo_control_request + x1::XLTTradeApi::vendor_submit_algo_exec_report 上报 ALGO_EXEC_CONTROL 或 ALGO_EXEC_CONTROL_REJECT
11 接收管理侧状态通知 x1::XLTTradeSpi::on_vendor_algo_state 算法管理系统每次变更母单状态时通知厂商,厂商据此与本地状态机对账
12 查询并恢复母单上下文 x1::XLTTradeApi::vendor_query_algo_state_ex + x1::XLTTradeSpi::on_vendor_query_algo_state_ex 返回母单状态和创建参数;结果可能分批返回,以 is_last=true 表示结束

关键时序图(厂商侧)

下图从厂商视角抽取了核心链路:登录/订阅/注册 -> 处理创建请求 -> 执行交易 -> 处理控制请求。

状态查询与恢复

厂商可以使用以下两组接口查询已存在的母单:

查询接口 响应回调 返回数据 适用场景
x1::XLTTradeApi::vendor_query_algo_state x1::XLTTradeSpi::on_vendor_query_algo_state x1::xlt_algo_state_t 只需要母单状态和基础母单信息
x1::XLTTradeApi::vendor_query_algo_state_ex x1::XLTTradeSpi::on_vendor_query_algo_state_ex x1::xlt_algo_state_ex_t 需要同时恢复母单创建参数

两种查询都要求传入 algo_type;xlt_algo_id 传入具体母单 ID 时查询单个母单,传入 0 时查询该算法类型下的全部母单。查询请求立即返回发送结果,实际数据通过对应回调异步返回。回调中的列表通过 data_count() 和 get(i) 访问,is_last 为 false 时还会有后续批次。

xlt_algo_state_ex_t 在普通状态信息的基础上增加 create_params,包含开始/结束时间、市场、证券代码、数量及厂商定义的 params JSON 等创建信息。厂商应在回调中拷贝需要异步使用的数据,不要保存列表或元素指针。

篮子母单处理

消息模型

篮子母单是一组 algo_type 相同、证券和逐母单参数可不同的算法母单。厂商侧会收到两层消息:

层级 创建 操作 处理职责
篮子级 x1::XLTTradeSpi::on_vendor_basket_algo_create_request x1::XLTTradeSpi::on_vendor_basket_algo_control_request 建立篮子上下文,记录公共参数、algo_count 和 xlt_algo_ids
母单级 x1::XLTTradeSpi::on_vendor_algo_create_request x1::XLTTradeSpi::on_vendor_algo_control_request 逐个创建/操作策略实例,并逐个上报执行结果

收到篮子级创建回调后,厂商会继续收到 algo_count 个逐母单创建回调;收到篮子级操作回调后,会继续收到对应的逐母单操作回调。篮子级回调是分组和预处理通知,不替代逐母单回调;厂商仍使用 x1::XLTTradeApi::vendor_submit_algo_exec_report 对每个 xlt_algo_id 分别上报结果,不需要另外上报篮子级执行结果。

xlt_basket_algo_create_request_t::xlt_algo_ids 和 xlt_basket_algo_control_request_t::xlt_algo_ids 是柔性数组,有效元素数为 basket_algo_info.algo_count。如果需要异步处理,应在回调返回前拷贝篮子信息、参数和 ID 列表,不要保存回调入参指针。

篮子创建与操作时序

执行类型与状态建议映射

执行类型来自 AlgoExecType,建议状态映射来自 algo_v1_7.md。

ExecType 建议目标状态 说明
ALGO_EXEC_NEW CREATED 母单创建成功
ALGO_EXEC_NEW_REJECT REJECTED 母单创建被拒绝
ALGO_EXEC_START STARTED 母单进入运行
ALGO_EXEC_CONTROL CANCELED(按操作语义) 常见是撤单成功
ALGO_EXEC_CONTROL_REJECT 保持原状态 常见是撤单被拒
ALGO_EXEC_FINISH FINISHED 母单正常完成
ALGO_EXEC_ABORT ABORTED 母单异常中止

厂商侧重点回调

回调 场景 厂商处理建议
x1::XLTTradeSpi::on_vendor_algo_create_request 收到新母单创建请求 校验参数并尽快上报创建结果
x1::XLTTradeSpi::on_vendor_algo_control_request 收到母单操作请求(当前为撤单) 幂等处理,明确成功/失败结果
x1::XLTTradeSpi::on_vendor_basket_algo_create_request 收到篮子创建上下文 按 basket_id 建立分组,记录 algo_count 与母单 ID 列表,等待逐母单回调
x1::XLTTradeSpi::on_vendor_basket_algo_control_request 收到篮子操作上下文 记录篮子操作 ID 和目标母单集合,按逐母单结果收敛
x1::XLTTradeSpi::on_vendor_algo_state 算法管理系统状态通知(每次母单状态变动触发) 以管理平台状态为准更新本地状态:按 xlt_algo_id 迁移状态机;若与本地推导不一致则以回调为准并记录对账日志;对跳变/回退告警;落库状态变更时间与来源用于恢复追溯
x1::XLTTradeSpi::on_vendor_query_algo_state 查询母单状态 按 request_id 关联查询请求,遍历列表并处理多批响应;以 is_last 判断查询结束
x1::XLTTradeSpi::on_vendor_query_algo_state_ex 查询母单状态及创建参数 在恢复本地上下文时同时保存 xlt_algo_state_ex_t::create_params,并按 is_last 判断查询结束
x1::XLTTradeSpi::on_auth_trade 厂商授权响应 缓存 trade_token 并绑定会话
x1::XLTTradeSpi::on_order_response 委托确认 记录订单生命周期起点
x1::XLTTradeSpi::on_trade_report 成交回报 驱动算法执行进度与风控
x1::XLTTradeSpi::on_order_error_response 委托失败 及时上报 ALGO_EXEC_ABORT 或控制类失败

实践建议

  1. 以 xlt_algo_id 建立唯一上下文,保证创建/操作/状态上报串行有序。
  2. 对 on_vendor_algo_control_request 做幂等设计,避免重复操作导致状态抖动。
  3. 执行结果上报与交易回报处理解耦,避免回调阻塞导致断线。
  4. 对异常路径统一使用 ALGO_EXEC_ABORT,并附带可追踪的错误原因。
  5. 厂商重启恢复后,优先做状态对账,再恢复增量处理。
  6. 以 basket_id -> xlt_algo_ids 建立双向索引,但仍以 xlt_algo_id 作为执行和上报的最小单元。
  7. 对篮子级与逐母单回调做去重和计数;收齐数量与 algo_count 不一致时告警,不要静默忽略缺失母单。
  8. 厂商重启恢复时优先使用 vendor_query_algo_state_ex 补齐状态和创建参数,再接收实时状态通知;查询结果按 request_id 去重并支持多批次收敛。