摘要
交易产品从单一策略走向多个市场,新增功能常会牵动账户、订单和页面。本文提出一种四层接口设计:产品底座提供共同对象,交易闭环组织意图与回报,市场适配层描述执行能力,开放应用通过查询和订阅组合这些能力。以下模型与协议是工程设计示例,重点讨论扩展时怎样减少已有模块的改动。
01 / 先确定共同使用的对象
账户、行情和 AI 引擎应共享同一套产品语言。一个交易标的除了名称,还要包含市场、资产类型、数量单位和价格精度;策略运行记录则关联账户范围、输入快照与策略版本。这样,研究页面和订单页面看到的“同一标的”才有确定含义。
底座输出稳定对象,市场专属字段放进有名称的扩展区。例如永续合约增加合约乘数与持仓模式,事件市场增加结果标识。AI 引擎产生的建议也先转换为明确的策略输入,由交易层解释执行目标,避免模型输出直接决定每家交易接口的参数。
| 阶段 | 主要模块 | 向上提供的接口 |
|---|---|---|
| 产品底座 | 账户、行情、AI 引擎 | 对象与输入快照 |
| 交易闭环 | 策略、订单、成交 | 交易意图与执行事件 |
| 多市场 | CEX、DEX、永续、事件市场 | 市场能力与适配结果 |
| 开放生态 | 社区、NOVA、应用 | 查询、订阅与应用入口 |
02 / 让交易过程形成闭环
策略层提交“希望完成什么”,执行层返回“已经发生什么”。前者是意图,包含标的、方向、目标数量及执行约束;后者是事件,包含所属订单、事件类型与当前状态。页面由事件更新进度,策略也据此决定继续等待、调整剩余目标或结束本轮。
FIX 的订单状态规范区分回报用途与订单状态,这个区分适合借鉴到内部对象中。例如收到一笔成交回报时,订单仍可能处于部分成交状态。将两者分开,应用就能同时展示最新动作和整体进度,而不必从一段渠道原文中推断。
03 / 用能力描述连接不同市场
统一接口应允许市场表达自己的机制。订单簿可以保留限价订单,流动性池交换则围绕输入、输出与价格约束执行。Uniswap 官方文档说明了流动性池交换与订单簿撮合的差异,也列出了最小输出、最大输入等常用约束。适配层需要将这些能力显式提供给上层。
可将能力描述组织为支持的意图类型、数量模式、有效期和进度事件。策略准备执行前,先选择符合目标的能力组合,再生成具体请求。永续与事件市场保留各自的产品参数,公共订单视图仍复用统一标识和进度。新增渠道时,改动便集中在适配器与能力映射中。
04 / 一个应用可以消费的协议示例
CloudEvents 1.0.2使用来源、标识、类型等上下文描述事件。下面借用这一外层结构,业务数据保持独立;订单数量采用十进制字符串,单位明确为基础资产。示例表示一张目标数量为 2 的订单,累计成交 1.2,尚余 0.8。
{
"specversion": "1.0",
"id": "event-003",
"source": "/adapters/example-spot",
"type": "trade.order.updated.v1",
"subject": "order-042",
"datacontenttype": "application/json",
"data": {
"intentId": "intent-017",
"eventKind": "trade",
"orderStatus": "partially_filled",
"quantityUnit": "base_asset",
"targetQty": "2.0",
"filledQty": "1.2",
"remainingQty": "0.8"
}
}
应用按来源和类型订阅,再用订单标识更新局部视图。新增成交渠道可以沿用同一消息结构。改变字段含义时发布新的业务版本,并提供对应数据定义;外层 specversion 表示事件规范版本,不能拿来代替业务版本。
05 / 开放应用复用哪些能力
钱包连接、行情组件、交易面板和社区工具可以分别组合查询、意图提交与事件订阅。钱包侧可参考 EIP-1193 的请求方法及账户、网络变化事件:应用通过共同接口感知连接上下文,钱包实现则可以独立变化。
开放应用层应提供清晰的使用路径。例如社区页面读取策略说明和运行进度,交易面板提交用户确认的意图,分析工具订阅公开市场事件。NOVA 相关组件也通过明确接口加入这些页面。应用需要什么能力,就接入对应模块;底层增加市场时,已有页面继续使用原来的对象和事件。
06 / 按接口依赖推进产品演进
四个阶段可以对应四次可检查的交付。先完成账户、标的和快照定义,再让一条策略跑通意图到回报;随后接入机制不同的第二类市场,检验共同接口能否容纳差异;最后让独立应用仅通过公开接口实现查询和交易交互。
检验方法应贴近扩展工作:新增适配器需要修改哪些既有模块,替换钱包后哪些页面仍可运行,一份事件能否被交易面板和分析工具共同消费。固定一组示例输入,比较它们在各阶段产生的对象与视图,比单看接入数量更能说明设计质量。
这种分层把产品路线转化为接口依赖:底座积累共同对象,交易层形成行为,多市场提供选择,应用层产生新的组合。每一步都有可以独立实现和复用的成果,也为下一阶段留下明确入口。
参考资料
- FIX Trading Community — FIX Application Layer: Order State Changes:订单状态及执行回报用途。
- Uniswap — Understanding Swaps on Uniswap:流动性池交换与输入、输出约束。
- CloudEvents — Specification v1.0.2:事件上下文、业务数据与结构定义。
- EIP-1193 — Ethereum Provider JavaScript API:钱包应用请求与上下文变化事件。
← 返回发展路线