关于 futu
futu 是通过本地运行的 OpenD 网关访问富途账户和行情数据的命令行技能。它支持选择模拟或实盘账户,券商凭据保留在 OpenD 中。
主要功能
- 01通过套接字连接 OpenD
- 02查询账户与持仓
- 03获取报价和历史数据
- 04查看订单与成交记录
- 05提交模拟或实盘订单
适用场景
- 01检查 OpenD 是否可连接
- 02查看账户持仓和订单
- 03查询指定格式代码的报价
- 04提交整股订单
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ starchild-ai-agent/ official-skills --skill futu安装后在 Claude Code 中输入/futu确认已加载。
附带文件scripts/futu_cli.py
详细介绍
这是什么 — 请先读这里
🖥️ 本地网关代理。 富途并不提供公开的云端 API。你需要在一台机器上运行名为 OpenD 的网关程序,用你的富途账号登录它,而这个 CLI 会通过本地 socket(默认 127.0.0.1:11111)与 OpenD 通信。你的富途凭据保存在 OpenD 内部——它们绝不会到达这个 skill。
⚠️ 这意味着默认情况下它无法从 Starchild 容器中运行,因为 OpenD 运行在你的电脑上,而容器的 127.0.0.1 是容器自身(另一台机器)。有两种使用方式:
- 本地运行 —— 在你自己的电脑上运行 OpenD + 这个脚本,且该电脑上已登录 OpenD。(最简单)
- 打通网络 —— 在容器可访问的主机上运行 OpenD,然后设置
FUTU_HOST/FUTU_PORT指向它(网络/防火墙/安全由你自己负责——将 OpenD 暴露到 localhost 之外有风险;请严格绑定)。
如果 status 报告网关不可达,原因就在这里。
设置 OpenD(一次性)
- 从 Futu OpenAPI 页面(富途牛牛 / moomoo → OpenAPI)下载适用于你操作系统的 OpenD。它提供 GUI 应用和命令行版本。
- 你需要一个已入金/已开通的富途或 moomoo 账户,并已启用 OpenAPI 权限(如需要请在 App 内申请)。
- 启动 OpenD,用你的富途凭据(+ 手机/2FA)登录。确认它监听的 API 端口(默认
11111)。 - 使用此 skill 时请保持 OpenD 运行。若要进行模拟交易,请确保你的账户拥有 模拟 / paper (SIMULATE) 子账户。
配置(.env)
这里没有密钥——只有网关位置 +(实盘所需的)交易密码 MD5。请通过安全输入申请。
| 变量 | 必填 | 说明 |
|---|---|---|
FUTU_HOST | 否 | OpenD 主机,默认 127.0.0.1 |
FUTU_PORT | 否 | OpenD 端口,默认 11111 |
FUTU_TRD_MARKET | 否 | 交易市场筛选:HK(默认)/ US / CN / SG |
FUTU_SECURITY_FIRM | 否 | FUTUSECURITIES(默认)、FUTUINC、FUTUSG |
FUTU_ACC_ID | 否 | 固定指定账户 id;0 = 按环境自动解析 |
FUTU_TRADE_PWD_MD5 | 仅实盘 | 你的富途交易密码的 MD5(解锁实盘订单所需) |
模拟还是实盘由每个账户的 trd_env 决定(SIMULATE = 模拟,REAL = 实盘);--profile 选择使用哪一个,如果 CLI 找不到匹配的账户,就会安全失败。
用法
pip install futu-api(首次运行)。JSON 输出。默认 profile 为 paper。
python skills/futu/scripts/futu_cli.py status # checks OpenD reachability + resolves account
python skills/futu/scripts/futu_cli.py account
python skills/futu/scripts/futu_cli.py positions
python skills/futu/scripts/futu_cli.py orders [--executions]
python skills/futu/scripts/futu_cli.py quote --symbol HK.00700
python skills/futu/scripts/futu_cli.py history --symbol US.AAPL --period 1d --limit 90
# place (paper SIMULATE): qty in whole shares; market or limit
python skills/futu/scripts/futu_cli.py place --symbol HK.00700 --side buy --qty 100 --type limit --limit-price 350
python skills/futu/scripts/futu_cli.py cancel --order-id <id>
# live (REAL): needs FUTU_TRADE_PWD_MD5 in .env AND --confirm-live
python skills/futu/scripts/futu_cli.py --profile live --confirm-live place --symbol HK.00700 --side buy --qty 100
代码格式是强制的: <MARKET>.<code> —— HK.00700、US.AAPL、SH.600519、SZ.000001。周期:1m 5m 15m 30m 1h 1d 1w 1M。
注意事项
- “OpenD gateway not reachable” = OpenD 未运行、未登录、在另一台机器上,或主机/端口错误。请重新阅读“这是什么”一节。
- 富途要求
--qty为整股;不支持名义金额订单。 - 实盘订单需要
FUTU_TRADE_PWD_MD5(你的交易密码的 MD5 哈希,而不是密码本身)。CLI 仅在实盘时解锁交易上下文;模拟盘永远不会解锁。 - 港股/A 股每手股数限制适用——碎股数量可能会被交易所拒绝。
评论
支持 Markdown