Files
mikeandClaude 32d5d7dc0b feat(longbridge): complete 602315 bypass + CLI helper + stock_t脚本
新增:
- references/cli-unicode-table-parsing.md - CLI 表格 ┃ vs │ Unicode 解析
- references/cron-wrapper-multi-token-pitfall.md - cron script 字段不支持空格
- references/generic-stock-query.md - 通用 stock_t.py 持仓查询
- references/longportapp-cn-endpoints.md - Python SDK 走 longportapp.cn vs CLI 走 longbridge.com
- references/sdk-vs-cli-domain-routing.md - SDK/CLI 域名路由差异
- scripts/longbridge_cli_helper.py - SDK 兼容层, 内部走 CLI (绕 602315)
- scripts/stock_t.py - 通用持仓查询脚本 (不限定股票)

修改:
- longbridge-cli/SKILL.md + references/longbridge-602315-bypass.md
- longbridge-python-sdk/SKILL.md: 增 cn endpoint 说明
- intraday-trading/SKILL.md

关键发现:
1. Python SDK 用 openapi.longportapp.cn (阿里云深圳), CLI 用 openapi.longbridge.com (AWS 香港)
2. 两个不同域名, 不同 endpoint, 都需 LONGBRIDGE_HTTP_URL=https://openapi.longbridge.com 强制覆盖
3. CLI 默认不读 HTTP_PROXY env, 必须用 proxychains4 OS 层拦截
4. 完整链路: LONGBRIDGE_HTTP_URL=.com + LONGBRIDGE_REGION=ap + proxychains4 + Clash 香港节点
5. Yahoo Finance 备用数据源 (CLI 拿不到 K线)
6. CLI 表格用 ┃ (header) 和 │ (data) 两种 Unicode 字符, parser 要兼容

订单实测:
- RGTI.US 1股@15.40: 下单 1259694819492519936, 撤单成功
- 9988.HK 200股@112.70: Rejected (余额或限额)
- 1810.HK 1200股@25.98: Rejected (同上)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-09 18:19:58 +08:00

66 lines
2.4 KiB
Markdown

---
note: 2026-07-09 session - helper script for SDK-shaped access to longbridge CLI
---
# CLI Unicode 表格解析陷阱
**问题**: Longbridge CLI 的表格输出中,**header 用的竖线和 data 行的竖线是不同字符**:
- Header 边框: `┃` (U+2503, BOX DRAWINGS DOUBLE VERTICAL)
- Data 边框: `│` (U+2502, BOX DRAWINGS LIGHT VERTICAL)
直接用 `line.split('┃')` 解析 → header 解析正常,data 行解析为空(因为 data 行没有 `┃` 只有 `│`)。
**正解**: 用 `re.split('[┃│]', line)` 同时处理两个字符。
```python
import re
def split_row(line):
cells = re.split('[┃│]', line)
return [c.strip() for c in cells if c.strip()]
```
# 持仓表名换行问题
股票名称(长名称如 "Unitedhealth" / "Semicon Bear 3X")会在表格里换行,导致 parser 拿到空数据行。需要在 `stock_positions()` 里**过滤空持仓**:
- 跳过 `标的` 为空 或 `持仓` 不是数字的行
- 避免 `Position("Unitedhealth", 0, 0.0, 0)` 这种空对象
# Buy_power 缺失
CLI `balance` 输出**没有 buy_power 字段**(只有 现金余额/净资产/最大融资额/剩余融资额/风险等级)。需要推算:
```python
buy_power = cash + remaining_finance_amount
```
SDK 的 `AccountBalance.buy_power` 是**实际可买入金额** = 现金 + 剩余融资额。`total_cash` 字段也对应现金余额。
# Cancel 交互确认
`longbridge cancel <id>` **没有 -y 标志**(`longbridge cancel --help` 显示没有此选项),交互式问 `确认撤销订单 XXX? [y/N]`
**绕开**: `echo 'y' | longbridge cancel <id>``expect 'y\n'`
Buy/sell 有 `-y`,但 cancel 没有。
# 参考实现
`scripts/longbridge_cli_helper.py` 提供 SDK 兼容接口:
- `account_balance()``[AccountBalance]`
- `stock_positions()``Channels`
- `submit_order(symbol, order_type, side, qty, time_in_force, price)``OrderResult`
- `cancel_order(order_id)` → None
- enums: `OrderType.LO/MO`, `OrderSide.Buy/Sell`, `TimeInForceType.Day/GoodTilCanceled`
每个函数都内部走:
```bash
proxychains4 -f ~/.proxychains/proxychains.conf \
~/.local/bin/longbridge --profile lb_real <cmd>
```
外加强制 env:
```python
env['LONGBRIDGE_HTTP_URL'] = 'https://openapi.longbridge.com' # 走 .com 海外域
env['LONGBRIDGE_REGION'] = 'ap' # 绕过 is_cn 探测
env['LONGBRIDGE_TRADE_ENABLED'] = 'true' # 解除只读模式
```