### 下单执行规范（统一参数/校验/精度对齐）

— 统一请求参数 —

```
symbol: string            // 统一符号（Pacifica 用基础，如 BTC；Aster 用 BTCUSDT）
side: 'BUY' | 'SELL'
type: 'MARKET' | 'LIMIT' | 'POST_ONLY'
quantity: string          // 数量（字符串）
price?: string            // 限价必填
tif?: 'GTC' | 'IOC' | 'FOK'  // 市价默认 IOC；POST_ONLY 对应 ALO/GTX（按接入映射）
reduceOnly?: boolean
clientOrderId?: string    // UUID
```

— 精度/步进对齐 —

- Pacifica：`lot_size` 与最小数量从 `info` 获取；数量、价格以字符串传递，内部不四舍五入，仅向下截取步进。
- Aster：对齐 `exchangeInfo.filters.LOT_SIZE`（minQty/maxQty/stepSize），数量超限自动降档重试；市价不传 `timeInForce`。

— 市价单 —

- Pacifica：需 `slippage_percent`（默认 0.5），`tif` 使用 `IOC`；
- Aster：`type=MARKET`，不带 `timeInForce`，按签名规则提交；

— 限价单/POST_ONLY —

- Pacifica：`LIMIT`/`POST_ONLY` → `tif=GTC/ALO`，签名字段包含 `tif/price/reduce_only/client_order_id`；
- Aster：`LIMIT` 带 `timeInForce=GTC`，签名与市价相同但包含 `price`；

— 批量 —

- Pacifica：对批量内每个动作单独签名（Create/Cancel），`Create` 数据必须带 `reduce_only`；

— TP/SL —

- Pacifica：`/positions/tpsl`，`symbol` 需基础符号，签名 type=`set_position_tpsl`；

— 错误与重试 —

- -1111/-4005（精度/超限）：对齐步进后重试；必要时自动降量（对 Aster 已实现）。
- -2019（余额不足）：策略侧进行双向减仓或降量重试；
- 429/5xx：指数退避（基 250ms，最多 4 次）。

— 统一映射（返回值） —

```
Order: {
  id, symbol, status, side, type, price?, origQty, executedQty, updateTime
}
```


