feat(binance_order_event_logger, user_data_stream): 优化算法更新字段兼容性

在 `binance_order_event_logger.py` 和 `user_data_stream.py` 中更新了 ALGO_UPDATE 事件的字段处理逻辑,增强了对不同字段名的兼容性,确保在获取算法 ID 和客户端算法 ID 时能够正确解析多种可能的字段。这一改进提升了系统在处理算法订单时的灵活性与准确性。
This commit is contained in:
薇薇安 2026-02-21 22:45:40 +08:00
parent 32c50466f3
commit fa7208f5f3
2 changed files with 7 additions and 5 deletions

View File

@ -72,10 +72,11 @@ def log_order_event(account_id: int, event_type: str, event_time_ms: Optional[in
elif event_type == "ALGO_UPDATE" and data:
o = data
row["symbol"] = (o.get("s") or "").strip()
row["algoId"] = o.get("aid") # 币安 ALGO_UPDATE 用 aid
row["clientAlgoId"] = (o.get("caid") or "").strip() or None # 币安用 caidSL_/TP_+entry_order_id
# 币安文档aid=Algo Id兼容 i/algoIdcaid=Client Algo Id兼容 c/clientAlgoId
row["algoId"] = o.get("aid") or o.get("i") or o.get("algoId")
row["clientAlgoId"] = (o.get("caid") or o.get("c") or o.get("clientAlgoId") or "").strip() or None
row["algoStatus"] = (o.get("X") or "").strip() # TRIGGERED/FINISHED
row["triggeredOrderId"] = o.get("ai") or None # 触发后的普通订单 id
row["triggeredOrderId"] = o.get("ai") or o.get("triggeredOrderId") or None
else:
row["raw"] = data
line = json.dumps(row, ensure_ascii=False, default=_default_serializer) + "\n"

View File

@ -690,8 +690,9 @@ class UserDataStream:
x = (o.get("X") or "").strip().upper()
ai = o.get("ai")
symbol = (o.get("s") or "").strip()
algo_id = o.get("aid") # 币安 ALGO_UPDATE 用 aidAlgo Id
client_algo_id = (o.get("caid") or "").strip() or None # 币安用 caidClient Algo Id
# 币安文档aid/caid兼容 i/c、algoId/clientAlgoId
algo_id = o.get("aid") or o.get("i") or o.get("algoId")
client_algo_id = (o.get("caid") or o.get("c") or o.get("clientAlgoId") or "").strip() or None
entry_order_id = None
if client_algo_id and (client_algo_id.startswith("SL_") or client_algo_id.startswith("TP_")):
try: