跳转至

CLI 参数

完整 flag 列表。也可以跑 --help 查看:

futu-opend --help
futu-mcp --help
futucli --help

futu-opend

Flag 默认 说明
--login-account <id> 牛牛号(必填之一)
--login-pwd <pwd> 登录密码明文(会打 deprecation WARN,推荐走 --login-pwd-file
--login-pwd-md5 <hex> 登录密码 MD5(同样 argv 暴露,会 WARN)
--login-pwd-file <path> v1.4.18+:从文件读密码(Docker secrets / systemd LoadCredential 友好)
--login-region <gz/sh/hk> 后端连接区域(v1.4+)
--config <path> TOML 配置文件(v1.4.2+),字段和 CLI 参数一致,CLI 覆盖
--cfg-file <path> XML 配置文件,兼容 C++ FutuOpenD.xml 格式
--ip <addr> 0.0.0.0 监听 IP
--port <n> 11111 FTAPI TCP 端口
--rest-port <n> REST 端口(含 /ws
--rest-keys-file <path> REST Bearer Token keys.json
--rest-tls-cert <path> REST TLS 证书 PEM;配置 --rest-keys-file 时必填
--rest-tls-key <path> REST TLS 私钥 PEM;配置 --rest-keys-file 时必填
--grpc-port <n> gRPC 端口
--grpc-keys-file <path> gRPC Bearer Token keys.json
--websocket-port <n> 核心 WS 端口(Futu SDK)
--ws-keys-file <path> 核心 WS 握手鉴权 keys.json(v1.0+)
--telnet-port <n> 管理 telnet
--telnet-ip <addr> 127.0.0.1 管理 telnet 监听 IP,仅在 --telnet-port 启用时生效
--lang <chs/cht/en> auto 界面语言 chs/cht/en;未显式设置时按 OS 首选界面语言 → POSIX locale → 英文解析
--log-level <level> info trace/debug/info/warn/error
--json-log false stdout JSON 日志
--audit-log <path> 审计 JSONL 文件或目录 (v1.4.87+ dir 0700 / file 0600 on Unix)
--tz <IANA> v1.4.87+:时区覆盖 (如 Asia/Hong_Kong / America/New_York),影响 hours_window 限额检查
--client-sig-proactive-refresh false v1.5.3+:长跑 daemon 在 client_sig 到期前 1h 主动刷新;默认关闭,可用 TOML 同名字段或 env 兼容入口打开
--client-sig-reactive-refresh false v1.5.3+:reconnect 连续 TCP 登录失败时尝试刷新 client_sig;默认关闭,可用 TOML 同名字段或 env 兼容入口打开
--rsa-private-key <path> RSA 私钥 PEM(给客户端用 RSA 加密)
--platform <futunn/moomoo> futunn 账号平台(v1.4.14+)。futunn=牛牛(CN/HK),moomoo(US/SG/AU/JP/CA)
--auth-server <url> 根据 --platform 推导 自定义认证服务器 URL,覆盖 --platform
--device-id <hex> 自动派生 设备 ID(16 位 hex,v1.4.16+)。显式指定并更新 ~/.futu-opend-rs/device-<hash>.dat
--reset-device false v1.4.17+:启动前清空 device + credentials 文件,下次 login 走完整首登(SMS)
--setup-only false v1.4.17+:只完成首登 + 凭据缓存就退出,不启动 server(systemd/Docker 场景)

配置 --rest-keys-file 会启用 REST scope mode,并要求同时配置 --rest-tls-cert--rest-tls-key。daemon 在 broker 登录前校验证书和私钥; 带鉴权的 REST 必须使用 https://,同一 listener 的 /ws 必须使用 wss://。 未配置 REST keys file 时,legacy 无凭据兼容模式仍可使用 HTTP/WS。

futu-mcp

Flag 默认 说明
--gateway <addr> 127.0.0.1:11111 网关 TCP 地址
--keys-file <path> keys.json(scope 模式)
--api-key <plaintext> / env FUTU_MCP_API_KEY 启动时绑定的 key 明文
--enable-trading false (legacy) 允许交易写工具;配 keys-file 时忽略
--allow-real-trading false (legacy) 允许 real 环境;配 keys-file 时忽略
--audit-log <path> 审计 JSONL
--http-listen <addr> HTTP transport(v1.0+),不传则 stdio
-v, --verbose false debug 日志

futucli

CLI vs REST/MCP 参数命名对照(v1.4.84 加)

CLI 的 9 个命令原本用位置参数<OWNER> / <SYMBOLS> / <GROUP> 等), 和 REST/MCP 的命名参数习惯(--code / --owner / --acc-id)不一致。 v1.4.84 起 CLI 加了 REST/MCP 风格 alias,位置参数依旧 work(向后兼容)。

命令 位置参数 v1.4.84+ alias 示例
option-chain <OWNER> --owner / --code futucli option-chain --owner US.AAPL --begin 2026-05-15 --end 2026-06-20
option-expiration-date <OWNER> --owner futucli option-expiration-date --owner HK.800000
suspend <SYMBOLS> --code / --symbols futucli suspend --code HK.00700 --begin 2026-04-01 --end 2026-04-15
margin-ratio <SYMBOLS> --code / --symbols futucli margin-ratio --code HK.00700 --market HK --acc-id <acc>
user-security <GROUP> --group futucli user-security --group MyList
plate-stocks <PLATE> --plate futucli plate-stocks --plate HK.BK1001
acc-cash-flow <ACC_ID> --acc-id futucli acc-cash-flow --acc-id <acc> --date 2026-04-15
plate-list --set <SET> --plate-type futucli plate-list -m HK --plate-type industry
daemon-status --rest-url <URL> --rest-port <PORT> futucli daemon-status --rest-port 22222

两种风格可任选。位置参数适合 shell 速查,--owner/--code 适合脚本 / 从 REST/MCP API 文档复制命名。

全局

Flag 默认 说明
-g, --gateway <addr> / env FUTU_GATEWAY 127.0.0.1:11111 网关地址
-o, --output <format> table table / json / jsonl(jsonl 每行一个 JSON,适合管道)
-v, --verbose false debug 日志
--audit-log <path> 审计 JSONL(v1.2+)

按分类浏览命令

futucli 的根命令保持平铺、向后兼容;commands 只是发现入口,用来按分类浏览或搜索现有命令,不改变脚本里的 canonical 命令名。

futucli commands
futucli commands --group quote
futucli commands --search calendar
futucli -o json commands --group system

可用分类:commonquotetradeaccountkeysystemresearchadvanced

版本更新检查

futucli version 默认只打印本地版本,不访问网络:

futucli version

需要检查是否有新版时显式加 --check

futucli version --check

检查请求优先访问公开的 https://futuapi.com/version.json,不携带账号、持仓、设备或交易信息; 默认入口不可用、返回非 2xx 或使用不兼容的 schema_version 时会 fail closed, 不给出升级建议。doctor 默认会用短超时做同样的检查,并在有新版时生成一条诊断 finding;离线环境可以加 --no-update-check

futucli doctor --no-update-check

测试镜像站或 staging 时可用 --url / FUTU_UPDATE_CHECK_URL 覆盖检查入口。

子命令

子命令 说明
commands [--group <group>] [--search <text>] 按分类浏览或搜索 futucli 命令;仅用于发现,不改变现有命令名
version [--check] [--url <URL>] [--timeout-ms <MS>] 显示本地版本;加 --check 才请求公开 version.json 检查新版本。默认检查 https://futuapi.com/version.json;入口不可用、非 2xx 或 schema 不兼容时 fail closed;可用 --urlFUTU_UPDATE_CHECK_URL 覆盖
lang-pack status/import/update 管理 StringID 语言包 cache;CLI update 只在显式指定 --endpoint <HTTPS> 时联网。可传完整 manifest URL,或以 / 结尾的目录 URL(自动追加 manifest.json)。daemon 默认开启后台检查,但未配置 endpoint 时状态为 enabled_no_endpoint,不发起网络请求
ping ping 网关
quote <symbols...> 实时报价
snapshot <symbols...> 快照
kline <symbol> [--type day] [--count 100] K 线
orderbook <symbol> [--depth 10] 买卖盘
ticker <symbol> [--count 100] 逐笔
rt <symbol> 分时
static <symbols...> 静态信息
static-status [--rest-url/--rest-port] v1.5.3+:查看 daemon 静态证券缓存与 stock-list 同步状态
static-warmup <symbols...> v1.5.3+:显式 warmup 指定证券的静态信息缓存
broker <symbol> 经纪商队列
plate-list <market> 板块集合列表
plate-stocks <plate-id> 列出板块内股票
sub <symbols...> -t <types> 订阅(types: basic/orderbook/ticker/broker/rt/kline)
account 账户列表
funds <acc-id> --market HK 资金
position <acc-id> --market HK 持仓
order <acc-id> --market HK 当日订单
deal <acc-id> --market HK 当日成交
unlock-trade --env real [--trade-pwd-account <LOGIN_ACCOUNT>] [--otp <code>] [--security-firm <FIRM>] [--acc-ids <CSV>] 解锁交易;密码来源优先级为 --from-stdin > FUTU_TRADE_PWD > OS keychain > 交互式 prompt。--trade-pwd-account 读取 set-trade-pwd --account 写入的账号级 keychain 条目;未传时可用 FUTU_TRADE_PWD_ACCOUNT / FUTU_ACCOUNT 作为账号 hint。v1.4.31+ --otp 传令牌动态密码;v1.4.33+ --security-firm 只解锁该券商;v1.4.34+ --acc-ids 只解锁指定账户
set-trade-pwd Linux / Windows:写入 OS credential store;macOS 发布包会在读取密码前拒绝,请用 FUTU_TRADE_PWD / --from-stdin
clear-trade-pwd 从 OS keychain 删除交易密码(v1.4+)
set-login-pwd --account <id> Linux / Windows:写入 OS credential store;macOS 发布包会在读取密码前拒绝,请用 mode-0600 --login-pwd-file
clear-login-pwd --account <id> v1.4.18+:删除 keychain 里某账号的登录密码
gen-key --id <n> --scopes <list> 生成 key
list-keys 列所有 key
revoke-key <id> 吊销
bind-key <id> --this-machine / --replace / --clear / --freeze 就地改机器绑定
machine-id [--for-key <id>] 查本机机器指纹
repl 交互式 REPL(共享长连接 + 推送实时显示)
history-orders / history-deals v1.4.25+:历史订单 / 成交查询
max-qtys v1.4.25+:下单前算最大可买卖量
trade-check --market <M> --code <CODE> --price <P> v1.5.3+:只读交易预检;先 warmup 静态信息,再做 max-qtys 试算,不下单
place-order / modify-order / cancel-order v1.4.25+:下单 / 改单 / 撤单(real 必须 --confirm,默认 env=simulate)
capital-flow <symbol> v1.4.26+:资金流时间序列
capital-distribution <symbol> v1.4.26+:资金分布(超大/大/中/小单流入流出)
market-state <symbols> v1.4.26+:市场状态(开盘/休市/午休/盘后)
owner-plate <symbols> v1.4.26+:股票所属板块
option-chain <owner> --begin --end [--delta-min/--iv-max/...] v1.4.26+:期权链(按到期日 call/put 列表;支持 Greek server-side filter)
trading-days --market --begin --end v1.4.30+:交易日列表
rehab <symbol> v1.4.30+:复权因子(长期 K 线对齐 / 回测必用)
suspend <symbols> --begin --end v1.4.30+:停牌日查询
user-security <group> v1.4.30+:自选股分组下的股票
user-security-groups [--group-type] v1.4.30+:自选股分组列表
warrant [--owner] [--num] v1.4.30+:涡轮列表(按成交量降序)
ipo-list --market <HK/US/CN/SG/JP/MY> v1.4.30+:新股 IPO
ipo-calendar --market <HK/US/CN/SG/JP/MY> [--event list] [--begin-date YYYYMMDD] [--end-date YYYYMMDD] v1.5.3+:把 IPO 列表投影为日历事件(上市 / 申购 / 中签 / 日本 IPO 询价等)
financial-calendar --market <HK/US/...> --begin-date YYYYMMDD --end-date YYYYMMDD [--watchlist-only/--positions-only] [--custom-filter TYPE[:MIN[:MAX]]] v1.5.3+:财报日历全市场视图;自选 / 持仓过滤为移动端 calendar 后端的显式筛选开关,支持排序与自定义过滤
financial-calendar-target --stock-id <id> --market <HK/US/...> [--size 20] [--start 0] v1.5.3+:按股票 ID 查询目标股票财报日历(mobile/moomoo CMD20426)
future-info <symbols> v1.4.30+:期货合约资料
stock-filter --market [--begin --num] v1.4.30+:条件选股最小版(高级过滤走 REST)
cancel-all-order <acc-id> [--market] [--confirm] v1.4.30+:全部撤单(real 必须 --confirm
global-state v1.4.30+:网关全局状态(市场开闭/服务器版本/登录状态)
user-info v1.4.30+:用户信息(昵称/权限/配额)
delay-statistics v1.4.30+:延迟统计概要
query-subscription [--all-conn] v1.4.30+:查询当前订阅状态
used-quota v1.5.3+:查询当前已用订阅额度和历史 K 线额度
unsubscribe [--symbols --sub-types] [--all] v1.4.30+:反订阅行情数据
history-kl-quota [--detail] v1.4.30+:历史 K 线已用 / 剩余 / 总下载配额;CLI 额外显示额度来源说明
holding-change <symbol> --category v1.4.30+:持股变动(高管 / 机构 / 基金)
modify-user-security <group> --op <symbols> v1.4.30+:修改自选股分组
code-change <symbols> v1.4.30+:股票代码变更 / 临时代码(目前港股)
set-price-reminder <symbol> --op v1.4.30+:设置到价提醒
price-reminder [--symbol/--market] v1.4.30+:查询到价提醒
option-expiration-date <owner> v1.4.30+:期权到期日列表
sub-acc-push <acc-ids> v1.4.30+:订阅账户推送(订单 / 成交变更)
unsub-acc-push <acc-ids> v1.5.3+:按账号 ID 列表取消账户推送订阅
acc-cash-flow <acc-id> --date / --date-range v1.4.30+:账户资金流水(v1.4.32+ 支持日期范围,31 天硬上限,自动跳周末)
daemon-status [--rest-url --api-key] v1.4.32+:daemon 健康快照(登录 / broker 通道 / cipher 就绪度)
doctor [--rest-url/--rest-port] [--symbol <SYMBOL>] [--bundle <DIR>] [--no-update-check] v1.5.3+:聚合 REST readiness / push / quota / metrics 诊断;提供 --symbol 时额外查询 market-state 与 quote-capability,用于区分闭市、开市断流、行情权限或静态缓存问题;默认短超时检查公开 version.json 并在有新版本时给出升级提示,离线环境可用 --no-update-check 跳过;--bundle 写出脱敏诊断目录
surface [--gaps] [--checklist <ENDPOINT>] v1.5.3+:从 EndpointSpec 输出 REST / MCP / CLI / Gateway 覆盖视图;--gaps 只看显式未暴露项及原因;v1.5.3+ --checklist 按 canonical / REST path / MCP tool / CLI subcommand 输出新增或变更 endpoint 的防漏清单;配合 --output markdown 可生成适合 review / handoff 粘贴的 Markdown 清单
daemon-reload [--rest-url --api-key] v1.4.32+:清 cipher 缓存 + v1.4.47 刷新磁盘凭据(remember-login)
daemon-shutdown [--rest-url --api-key] v1.4.32+:请求 daemon 进入优雅退出路径,systemd / Docker 决定是否重启

期权 snapshot JSON 字段

futucli --output json snapshot <OPTION>--output jsonl 会把期权 snapshot 的 22 个扩展字段平铺到对应行。核心风险字段为 deltagammathetavegarhoimplied_volatility;其余字段包括 option_typeoption_ownerstrike_timestrike_pricecontract_sizeopen_interestpremiumstrike_timestampindex_option_typenet_open_interestexpiry_date_distancecontract_nominal_valueowner_lot_multiplieroption_area_typecontract_multipliercontract_size_float

服务端没有返回的可选字段不会出现在 JSON 中;值为零但实际存在的字段仍会保留。 股票、期货等非期权行不包含这些期权专用 key。默认 table 和 Markdown 输出继续使用 紧凑的基础列,不展开这 22 个字段。

3401+ proto-json 命令

earnings-calendarmacro-indicator-*fed-watch-*dividend-*economic-calendar*-rankhot-listheat-map-datainstitution-*ark-*industrial-*rating-changerise-fall-distribution 等 3401+ 只读入口使用 --c2s-json 透传 generated proto 的 C2S JSON。

这些入口保持严格 proto-json 行为:字段名使用 Rust generated proto 的 snake_casemarketQot_Common.QotMarket 数字枚举,不接受 "US" / "HK" 这类字符串。常用值:

市场 market
HK 1
US 11
SH 21
SZ 22
SG 31
JP 41
AU 51
MY 61
CA 71
FX 81
CC 91

最小示例(完整清单见发布包内 examples/qot-3401-plus-proto-json-examples.json):

futucli earnings-calendar \
  --c2s-json '{"market":11,"begin_date":"2026-06-25","end_date":"2026-06-25"}'

futucli dividend-calendar \
  --c2s-json '{"market":11,"date":"2026-06-25","count":20}'

futucli macro-indicator-list \
  --c2s-json '{"region":1}'

futucli top-movers-rank \
  --c2s-json '{"market":11,"count":20}'

futucli heat-map-data \
  --c2s-json '{"market":11,"count":20}'

如果误写成 {"market":"US"},CLI 会直接报错并提示应使用数字枚举,例如 {"market":11}

技术指标

indicator-list 是同步 3259 查询;indicator-calc 会在一条 raw 连接上完成 3260 ACK 与 3261 结果配对,不能改用 REST/MCP/generic gRPC 代替:

futucli indicator-list \
  --c2s-json '{"search_key":"MA","lang_type":0,"search_mode":1}'

futucli indicator-calc --timeout-secs 10 \
  --c2s-json '{"short_name":"MA","lang_type":1,"data":{"security":{"market":1,"code":"00700"},"kl_type":2,"k_line":[{"time":"2026-08-01 10:00:00","is_blank":false,"close_price":10}]}}'

机构、产业链、板块详情接口不要手填猜测 ID。先跑发现入口,再把返回 ID 带入详情:

futucli institution-list \
  --c2s-json '{"market":11,"count":20}'

futucli institution-profile \
  --c2s-json '{"market":11,"institution_id":<上一步返回的 institution_id>}'

futucli industrial-chain-list \
  --c2s-json '{"market":11,"count":20}'

futucli industrial-chain-detail \
  --c2s-json '{"chain_id":<上一步返回的 chain_id>}'

发布包内还带有只读真机 smoke:

python3 scripts/qot_3401_plus_discovery_chain_smoke.py \
  --futucli ./futucli \
  --gateway 127.0.0.1:11111 \
  --chain all

该脚本验证 list -> extract id -> detail,用于发版前或排障时确认 institution_idchain_idplate_id 的发现链仍可用。若后端返回 ret=-1 或发现入口为空, 错误文案会带 qot3401.* 诊断码,并提示需要回传 market、C2S JSON、daemon 日志和 smoke 输出。

static-status 读取 daemon 的 /api/admin/status,用于判断静态证券缓存是否适合做 行情/静态信息 parity 复测。关键字段含义:

  • ready:静态缓存是否已经完成首轮同步、零差量收敛且有可用证券行。
  • reason / action:解释当前状态为什么未就绪,以及下一步应等待、运行 static-warmup,还是把 counters 附到 bug 报告里。
  • security_count:当前内存里的静态证券行数。
  • stock_list_readiness:综合状态桶,常见值包括 emptybootstrap_onlysync_in_progressrecoverable_retryingfirst_sync_readyconverged
  • stock_list_*_total:stock-list 同步的启动、完成、失败、可恢复重试与零差量计数。
  • findings:面向排障的可读提示;doctor 也会把这类静态数据状态汇总进 static-data finding。如果仍在 warming/retry,建议等到 stock_list_readiness=converged 后再做静态信息数量或校验值对比。

doctor --symbol <MARKET.CODE> 会额外查询该标的的 market-state 和 quote-capability。market-state 用于判断闭市 / 午休 / 盘前盘后导致的无 push; quote-capability 会把 orderbook、snapshot、basic quote 等权限判断中的 reason / action 汇总进诊断 finding。若日股等市场缺行情权限,优先在官方 Futu/moomoo App 开通对应市场行情权限,再用 futucli quote-rightsfutucli quote-capability <SYMBOL> 复查。

部分用户可见提示会带 [diag:<key>],例如 [diag:quote.permission.open_market]。这是稳定诊断码,便于把 CLI、REST、 MCP 或日志里的同类问题对应到同一类排障动作;它不是错误码,翻译或文案优化不会改变 这个 key。

K 线命名说明:CLI 统一使用 kline 子命令;REST 路径使用 /api/history-kline,MCP 工具使用 futu_get_history_kline。CLI 没有 history-kline 子命令。

诊断命令说明:trade-check 不会调用下单接口;默认 table 输出会实际执行 static-infomax-qtys 两个只读步骤。json/jsonl 输出只返回预检计划,便于脚本先审阅参数。