LESSON 11

交易系统风控

策略不能绕过风控直接下单。交易所返回值不是唯一事实。默认故障动作是停下来等人,而不是自动挽回。

约 40 分钟讲解 + 示例 + Lab + 自测本机记录进度
边界

代码管不了托管风险

资产在中心化交易所,平台破产就不在你的策略回测里。控制方式是暴露,不是自信。

深色工作台上未按下的金属急停按钮和密封信封,比喻默认故障策略是停机而不是加仓
急停键必须比策略更靠近执行层。信封里是人工恢复清单,不是下一组参数。
CEX

降低暴露

  • 独立子账户
  • 只放策略所需最少资金
  • 禁用提现
  • 固定 IP,定期人工提回
DEX

换成另一组风险

  • 私钥在线
  • 合约与授权
  • Gas、RPC、MEV
  • 不天然更安全

策略生成意图,风控才许下单

行情 -> 策略 -> 风控 -> 执行
              -> 账本 -> 对账 -> 告警

定期查询订单、成交、余额和仓位。本地与交易所不一致时进入 reconciliation,而不是继续用本地幻觉交易。

密钥和订单都按最小权限设计

key

独立子账户;只开读取和必要交易;禁止提现、划转、杠杆,除非策略过闸且明确需要。

ip

能绑固定 IP 就绑。密钥不进代码、数据库和日志。

cid

每个订单唯一 client order id。

timeout

超时后先查询,不直接重试下单。

round

下单前按 tick/step/min notional 取整并复核。

age

行情超过 MAX_DATA_AGE 立即暂停。

硬风控写在执行层,不写在设置页

MAX_TOTAL_CAPITAL平台上最多放多少钱。
MAX_BASE / QUOTE单边库存上限。
MAX_OPEN_ORDERS同时挂单数量。
MAX_ORDER_NOTIONAL单笔名义上限。
DAILY_LOSS / DRAWDOWN亏到这里就停。
PRICE_BOUNDS离开预设区间停止新增。
故障

默认 fail closed

交互实验

任意异常都走同一条故障路径

点开一种或多种故障。程序没有“这次看起来还好,先跑着”的分支。

  1. 停止新订单

    待命

  2. 按预案保留或撤销挂单

    待命

  3. 保存交易所响应和本地状态

    待命

  4. 发出告警

    待命

  5. 等待人工确认,不自动加仓或换策略

    待命

现在系统仍在跑。选一个故障,看执行层会不会绕过策略。

上线顺序只能是:历史回测 → 实时模拟 → 交易所测试环境 → 极小金额人工监督 → 固定观察期后再谈扩大。短期盈利不是升级条件。

完成证据

为假设中的机器人写出硬风控表,并演练一次“超时但可能已成交”的恢复步骤。没有查询步骤的重试流程,算不合格。

课中测验 1 / 3

自写机器人能否消除中心化交易所托管风险?

课末自测

下单请求超时后,为什么不能立刻用同一参数再发一笔?

信心
下一课收入转化 →