--- 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 ` **没有 -y 标志**(`longbridge cancel --help` 显示没有此选项),交互式问 `确认撤销订单 XXX? [y/N]`。 **绕开**: `echo 'y' | longbridge cancel ` 或 `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 ``` 外加强制 env: ```python env['LONGBRIDGE_HTTP_URL'] = 'https://openapi.longbridge.com' # 走 .com 海外域 env['LONGBRIDGE_REGION'] = 'ap' # 绕过 is_cn 探测 env['LONGBRIDGE_TRADE_ENABLED'] = 'true' # 解除只读模式 ```