合约交易主流程

一、业务闭环

用户 / 合约机器人
    → 实际应用或平台接入
    → 用户、商户、合约配置、方向与精度校验
    → 杠杆、账户、仓位及下单条件检查
    → 委托系统区分普通单 / 止盈止损条件单
        ├─ 普通单 → 撮合 addOrder → 前置事件 → 订单簿
        │                            → 成交 / 余单 / 撤单结果
        └─ 条件单 → addTpslOrder → 条件单处理
                                   → 具体触发链路继续核对
    → 核对仓位、保证金、手续费和盈亏记录
    → 深度与成交消息 → 合约行情 → 查询或推送

价格 / 风险状态变化 → 风险扫描 → 撤销相关委托及强平分支
独立资金费率事件 → 费率与持仓计算 → 日志、统计及资金结果核对

这是业务归纳,不表示所有事件都位于一个事务,也不表示每笔订单都必经机器人、三方接口或资金费率结算。

二、已核对的普通下单路径

  1. 应用侧 ContractEntrustController 可见调用 entrustService.saveEntrust。
  2. ContractEntrustServiceImpl.saveEntrust 按 matchType 区分 TP_SL 与普通委托。
  3. 普通 EntrustCreateService.saveEntrust 依次处理参数与最新价、合约交易对、机器人标识、用户、涨跌幅、市价全平、精度、杠杆、账户校验及 DTO 构造。
  4. saveOrder 实际调用 matchEngineApi.addOrder(entrust)。
  5. 撮合 ContractMatchEngineService.addOrder 设置委托信息并构造 ADD_ORDER 事件,进入引擎响应处理。
  6. MatchEngineManager 串联 SaveOrderHandler 与 MatchingBusinessHandler,后者调用对应订单簿动作。
  7. 价格档位处理与消息辅助器生成深度、成交及结果数据;行情端分别消费深度和成交主题。

步骤间的异常、持久化和返回结果仍需进一步逐笔验证,尤其不能把“addOrder 返回”直接解释为完全成交。

三、撤单与条件单

普通撤单:ContractEntrustServiceImpl → EntrustCancelService → matchEngineApi.cancelOrder。条件单创建和撤销则通过各自服务连接 addTpslOrder、cancelTpslOrder,不直接按普通订单簿路径描述。

撮合普通撤单会检查缓存订单、已完成状态、强平相关标识及用户合约状态。被强平使用的订单和普通撤单不能假定规则相同。

四、仓位、风险与行情

仓位与保证金说明账户事件;强平与风控说明风险扫描和强平请求;行情系统区分成交价、指数价和标记价;资金费率单独核对费率与用户持仓处理。

外部价格和外部合约业务另见三方接入,不要将 coinex-futures3rd 自动插入本地下单链路。

五、主流程验证

用同一委托标识追踪接入、撮合事件、订单状态、成交、仓位、保证金与费用,再核对行情。覆盖普通开平、条件单、部分成交撤单、余额或保证金不足、风险触发和进程恢复。当前为源码核对,未进行真实资金交易测试。