Files
Hermes-Skills/longbridge-cli/references/cli-unicode-table-parsing.md
T
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

2.4 KiB

note
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) 同时处理两个字符。

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 字段(只有 现金余额/净资产/最大融资额/剩余融资额/风险等级)。需要推算:

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

每个函数都内部走:

proxychains4 -f ~/.proxychains/proxychains.conf \
  ~/.local/bin/longbridge --profile lb_real <cmd>

外加强制 env:

env['LONGBRIDGE_HTTP_URL'] = 'https://openapi.longbridge.com'  # 走 .com 海外域
env['LONGBRIDGE_REGION'] = 'ap'                              # 绕过 is_cn 探测
env['LONGBRIDGE_TRADE_ENABLED'] = 'true'                      # 解除只读模式