update api,libs

This commit is contained in:
2026-08-30 00:34:27 +08:00
parent 9a43aaba23
commit cdccc48d8c
21 changed files with 2616 additions and 179 deletions

View File

@@ -144,19 +144,26 @@ def RunOnce(run: Runtime, signals) -> None:
logging.exception("获取持仓失败")
return
active_codes = set(position_codes)
removed_codes = set(run.state.codes) - active_codes
# 每轮使用最新委托和成交恢复状态。查询或落盘失败时禁止继续开仓,
# 避免在订单结果不明确的情况下提交重复买单。
previous_state_codes = set(run.state.codes)
try:
broker_orders = run.client.trade_detail_data("order")
broker_deals = run.client.deals()
run.state.reconcile(positions, broker_orders, broker_deals)
except Exception:
logging.exception("订单状态对账失败,本轮禁止自动交易")
return
removed_codes = previous_state_codes - set(run.state.codes)
for code in removed_codes:
run.state.delete(code)
run.open_watch.forget(code)
run.add_watch.forget(code)
if removed_codes:
run.state.save()
# 5. 验证有效开仓信号:排除已有持仓,并按 signal_allow 过滤
# 5. 验证有效开仓信号:排除已有持仓和未决订单
position_code_set = set(position_codes)
allow_open = []
seen_codes = set(position_code_set)
seen_codes = position_code_set | set(run.state.unresolved_codes)
for signal in signals:
if signal.code not in seen_codes:
allow_open.append(signal)