feat client.

This commit is contained in:
2026-08-31 13:00:22 +08:00
parent a946c5b53d
commit 1b6f5a9f03
33 changed files with 544 additions and 1284 deletions

View File

@@ -1,5 +1,34 @@
### 4.1 发出撤单请求后立即丢弃订单和方向锁,未确认撤单成功
位置:
- `py-client/strategy/trend/order.py:63-72`
- `py-client/strategy/trend/order.py:85-88`
- `py-client/sdk/trade.py:75`
- `api/qmt_api_new.py:1001-1021`
`OrderBook.refresh()` 对过期订单调用 `cancel_by_id()` 后立即 `continue`,因此该订单不会进入新 `data``lock`。服务端对于“不可撤”或撤单返回 `False` 的情况仍返回 HTTP 200只在 JSON 中给出 `status=failed`;客户端既不解析该业务状态,订单簿也不复查券商状态。
影响:原订单可能仍可成交,但本地方向锁已经释放;同一股票、同一方向可以再次下单,形成重复仓位或超额卖出风险。撤单已受理但尚未确认时也存在相同窗口。
建议:撤单请求后保留订单和锁,直到下一次券商快照确认订单进入终态;客户端应将 `status=failed` 转成明确业务失败。为“不可撤”“撤单返回失败”“撤单请求异常”“撤单已受理但状态未更新”分别增加测试。
### 4.2 API 认证令牌硬编码、提交到仓库并写入日志
位置:
- `api/qmt_api_new.py:14,50,1526,1529`
- `api/qmt_api_rele.py:14,50,1548,1551`
- `py-client/etc/_global.yaml:2`
两份服务端文件包含相同的固定令牌,客户端配置也把该令牌提交到版本库。服务监听 `0.0.0.0`,启动时还会把完整令牌写入日志。
影响:任何能读取仓库或日志的人都可获得交易 API 凭据;在端口可达的网络范围内,可调用下单、撤单和关闭服务等接口。令牌已进入版本历史时,仅删除当前文本并不能完成处置。
建议:立即轮换现有令牌;从环境变量或受控密钥存储读取;配置库只保留占位符;停止记录令牌;默认绑定回环地址,确需远程访问时增加网络访问控制和 TLS。检查 Git 历史及已分发日志中的泄露范围。
### 4.2 IPO 没有校验真实交易日,只判断周一至周五和盘中时间
位置: