合约交易主流程
一、业务闭环
用户 / 合约机器人
→ 实际应用或平台接入
→ 用户、商户、合约配置、方向与精度校验
→ 杠杆、账户、仓位及下单条件检查
→ 委托系统区分普通单 / 止盈止损条件单
├─ 普通单 → 撮合 addOrder → 前置事件 → 订单簿
│ → 成交 / 余单 / 撤单结果
└─ 条件单 → addTpslOrder → 条件单处理
→ 具体触发链路继续核对
→ 核对仓位、保证金、手续费和盈亏记录
→ 深度与成交消息 → 合约行情 → 查询或推送
价格 / 风险状态变化 → 风险扫描 → 撤销相关委托及强平分支
独立资金费率事件 → 费率与持仓计算 → 日志、统计及资金结果核对
这是业务归纳,不表示所有事件都位于一个事务,也不表示每笔订单都必经机器人、三方接口或资金费率结算。
二、已核对的普通下单路径
- 应用侧
ContractEntrustController可见调用entrustService.saveEntrust。 ContractEntrustServiceImpl.saveEntrust按 matchType 区分 TP_SL 与普通委托。- 普通
EntrustCreateService.saveEntrust依次处理参数与最新价、合约交易对、机器人标识、用户、涨跌幅、市价全平、精度、杠杆、账户校验及 DTO 构造。 saveOrder实际调用matchEngineApi.addOrder(entrust)。- 撮合
ContractMatchEngineService.addOrder设置委托信息并构造 ADD_ORDER 事件,进入引擎响应处理。 MatchEngineManager串联 SaveOrderHandler 与 MatchingBusinessHandler,后者调用对应订单簿动作。- 价格档位处理与消息辅助器生成深度、成交及结果数据;行情端分别消费深度和成交主题。
步骤间的异常、持久化和返回结果仍需进一步逐笔验证,尤其不能把“addOrder 返回”直接解释为完全成交。
三、撤单与条件单
普通撤单:ContractEntrustServiceImpl → EntrustCancelService → matchEngineApi.cancelOrder。条件单创建和撤销则通过各自服务连接 addTpslOrder、cancelTpslOrder,不直接按普通订单簿路径描述。
撮合普通撤单会检查缓存订单、已完成状态、强平相关标识及用户合约状态。被强平使用的订单和普通撤单不能假定规则相同。
四、仓位、风险与行情
仓位与保证金说明账户事件;强平与风控说明风险扫描和强平请求;行情系统区分成交价、指数价和标记价;资金费率单独核对费率与用户持仓处理。
外部价格和外部合约业务另见三方接入,不要将 coinex-futures3rd 自动插入本地下单链路。
五、主流程验证
用同一委托标识追踪接入、撮合事件、订单状态、成交、仓位、保证金与费用,再核对行情。覆盖普通开平、条件单、部分成交撤单、余额或保证金不足、风险触发和进程恢复。当前为源码核对,未进行真实资金交易测试。