futucli/cli/commands.rs
1//! clap subcommand enum definitions.
2//!
3//! Kept separate from `cli.rs` so the root CLI module only owns global flags
4//! and re-exports the command type used by dispatch / REPL.
5
6use clap::Subcommand;
7
8mod account;
9mod catalog;
10mod key;
11mod qot;
12mod sys;
13mod tier_m;
14mod trade_read;
15mod trade_write;
16
17pub use account::AccountArgs;
18pub use catalog::CommandsArgs;
19pub use key::{
20 BindKeyArgs, ClearLoginPwdArgs, ClearTradePwdArgs, GenKeyArgs, ListKeysArgs, MachineIdArgs,
21 RevokeKeyArgs, SetLoginPwdArgs, SetTradePwdArgs, UnlockTradeArgs,
22};
23pub use qot::{
24 BrokerArgs, CapitalFlowArgs, CompanyExecutiveBackgroundArgs, CompanyExecutivesArgs,
25 CompanyOperationalEfficiencyArgs, CompanyProfileArgs, CorporateActionsBuybacksArgs,
26 CorporateActionsDividendsArgs, CorporateActionsStockSplitsArgs, DailyShortVolumeArgs,
27 DerivativeUnusualArgs, FinancialCalendarArgs, FinancialCalendarTargetArgs,
28 FinancialUnusualArgs, FinancialsEarningsPriceHistoryArgs, FinancialsEarningsPriceMoveArgs,
29 FinancialsRevenueBreakdownArgs, FinancialsStatementsArgs, InsiderHolderListArgs,
30 InsiderTradeListArgs, IpoCalendarArgs, KlineArgs, OptionExerciseProbabilityArgs,
31 OptionScreenArgs, OptionVolatilityArgs, OrderbookArgs, PlateListArgs, PlateStocksArgs,
32 ProtoJsonArgs, QuoteArgs, ReferenceArgs, ResearchAnalystConsensusArgs,
33 ResearchMorningstarReportArgs, ResearchRatingSummaryArgs, RtArgs, ShareholdersHolderDetailArgs,
34 ShareholdersHoldingChangesArgs, ShareholdersInstitutionalArgs, ShareholdersOverviewArgs,
35 ShortInterestArgs, SnapshotArgs, StaticArgs, StockScreenArgs, SubArgs, TechnicalUnusualArgs,
36 TickerArgs, TopTenBuySellBrokersArgs, ValuationDetailArgs, ValuationPlateStockListArgs,
37 WarrantScreenArgs,
38};
39pub use sys::{
40 DaemonReloadArgs, DaemonShutdownArgs, DaemonStatusArgs, DoctorArgs, HistoryKlQuotaArgs,
41 LanguagePackArgs, LanguagePackCommand, PushSubscriberInfoArgs, QuerySubscriptionArgs,
42 QuoteCapabilityArgs, QuoteRightsArgs, StaticStatusArgs, StaticWarmupArgs, SurfaceArgs,
43 TickerStatisticArgs, TickerStatisticDetailArgs, UnsubscribeArgs, VersionArgs,
44};
45pub use tier_m::{
46 AccountFlagArgs, BizGroupArgs, BondAnswerStateArgs, BondPositionListArgs, BondSingleAssetArgs,
47 BondTotalAssetArgs, BondTradeReminderArgs, CashDetailArgs, CashLogArgs, MarginInfoArgs,
48};
49pub use trade_read::{
50 AccCashFlowArgs, ComboMaxTrdQtysArgs, DealArgs, FundsArgs, HistoryDealsArgs, HistoryOrdersArgs,
51 MarginRatioArgs, MaxQtysArgs, OrderArgs, OrderFeeArgs, PositionArgs, TradeCheckArgs,
52};
53pub use trade_write::{
54 CancelOrderArgs, ComboOrderArgs, ModifyOrderArgs, PlaceOrderArgs, ReconfirmOrderArgs,
55};
56
57#[derive(Subcommand)]
58pub enum Command {
59 /// 探活:连接网关并测一次 RTT
60 Ping,
61 /// 按分类浏览 futucli 命令(不改变现有命令名)
62 Commands(CommandsArgs),
63 /// 显示本地版本;加 --check 从公开 version.json 检查新版本
64 Version(VersionArgs),
65 LangPack(LanguagePackArgs),
66 /// 获取基础实时报价(CLI 自动订阅 SubType::Basic)
67 Quote(QuoteArgs),
68 /// 获取股票快照(单次,无需订阅)
69 Snapshot(SnapshotArgs),
70
71 /// 订阅行情推送并持续打印(Ctrl-C 停止)
72 ///
73 /// v1.4.83 §10 新增 aliases: `subscribe` / `subscription`
74 #[command(visible_aliases = ["subscribe", "subscription"])]
75 Sub(SubArgs),
76
77 /// 获取历史 K 线
78 ///
79 /// v1.4.83 §10: `--symbol` / `--code` / `--stock` flag alias 替代 positional
80 Kline(KlineArgs),
81
82 /// REST push 订阅者诊断快照
83 PushSubscriberInfo(PushSubscriberInfoArgs),
84
85 /// 获取摆盘
86 ///
87 /// v1.4.83 §10: `--symbol` / `--code` / `--stock` flag alias 替代 positional
88 Orderbook(OrderbookArgs),
89
90 /// 获取逐笔成交
91 ///
92 /// v1.4.83 §10: `--symbol` / `--code` / `--stock` flag alias
93 Ticker(TickerArgs),
94
95 /// 获取分时数据
96 ///
97 /// v1.4.83 §10: `--symbol` / `--code` / `--stock` flag alias
98 Rt(RtArgs),
99
100 /// 获取静态信息(名称、每手数量、类型、上市时间等)
101 Static(StaticArgs),
102
103 /// 查看 daemon 静态数据缓存 / stock-list 同步状态
104 StaticStatus(StaticStatusArgs),
105
106 /// 显式 warmup 指定证券的静态信息缓存
107 StaticWarmup(StaticWarmupArgs),
108
109 /// 获取经纪队列
110 ///
111 /// v1.4.83 §10: `--symbol` / `--code` / `--stock` flag alias
112 Broker(BrokerArgs),
113
114 /// 列出板块集合
115 PlateList(PlateListArgs),
116
117 /// 列出板块内股票
118 PlateStocks(PlateStocksArgs),
119
120 /// 获取关联证券(正股对应涡轮/期货)
121 Reference(ReferenceArgs),
122
123 /// 列出交易账户(默认显示 App 可见账户集合)
124 #[command(visible_alias = "accounts")]
125 Account(AccountArgs),
126
127 /// 查询账户资金
128 Funds(FundsArgs),
129
130 /// 查询持仓
131 Position(PositionArgs),
132
133 /// 查询当日订单
134 Order(OrderArgs),
135
136 /// 查询当日成交
137 Deal(DealArgs),
138
139 #[doc = include_str!("commands/docs/unlock_trade.md")]
140 UnlockTrade(UnlockTradeArgs),
141
142 #[doc = include_str!("commands/docs/set_trade_pwd.md")]
143 SetTradePwd(SetTradePwdArgs),
144
145 /// 清除 keychain 里某登录账号的交易密码
146 ClearTradePwd(ClearTradePwdArgs),
147
148 #[doc = include_str!("commands/docs/set_login_pwd.md")]
149 SetLoginPwd(SetLoginPwdArgs),
150
151 /// 清除 keychain 里某账号的登录密码
152 ClearLoginPwd(ClearLoginPwdArgs),
153
154 /// 进入交互式 REPL(共享一条长连接,历史记录,推送实时显示)
155 Repl,
156
157 #[doc = include_str!("commands/docs/gen_key.md")]
158 GenKey(GenKeyArgs),
159
160 #[doc = include_str!("commands/docs/bind_key.md")]
161 BindKey(BindKeyArgs),
162
163 #[doc = include_str!("commands/docs/machine_id.md")]
164 MachineId(MachineIdArgs),
165
166 #[doc = include_str!("commands/docs/list_keys.md")]
167 ListKeys(ListKeysArgs),
168
169 /// 吊销一条 API Key(按 id 从 keys.json 删除;需要运行中的网关 SIGHUP 才生效)
170 RevokeKey(RevokeKeyArgs),
171
172 // ===== v1.4.25: 交易扩展命令 =====
173 #[doc = include_str!("commands/docs/place_order.md")]
174 PlaceOrder(PlaceOrderArgs),
175
176 #[doc = include_str!("commands/docs/modify_order.md")]
177 ModifyOrder(ModifyOrderArgs),
178
179 /// 撤单(modify-order 的常用快捷方式,op=CANCEL)
180 CancelOrder(CancelOrderArgs),
181
182 /// 二次确认订单(Python SDK `OpenTradeContext.reconfirm_order`)
183 ReconfirmOrder(ReconfirmOrderArgs),
184
185 /// 查询历史订单(Python SDK `OpenTradeContext.history_order_list_query`)
186 HistoryOrders(HistoryOrdersArgs),
187
188 /// 查询历史成交(Python SDK `OpenTradeContext.history_deal_list_query`)
189 HistoryDeals(HistoryDealsArgs),
190
191 /// 查最大可买/可卖(Python SDK `OpenTradeContext.acctradinginfo_query`)
192 MaxQtys(MaxQtysArgs),
193
194 /// 只读交易预检:静态信息 warmup + max-qtys 试算,不下单
195 TradeCheck(TradeCheckArgs),
196
197 /// 查询组合订单最大可交易数量(Futu API v10.7 `get_combo_max_trd_qtys`,proto-json)
198 ComboMaxTrdQtys(ComboMaxTrdQtysArgs),
199
200 /// 组合期权下单(Futu API v10.7 `place_combo_order`,proto-json)
201 ComboOrder(ComboOrderArgs),
202
203 /// 查询融资融券比率(对齐 py-futu-api `get_margin_ratio`;v1.4.31)
204 MarginRatio(MarginRatioArgs),
205
206 /// 查询订单费用明细(对齐 py-futu-api `order_fee_query`;v1.4.31)
207 OrderFee(OrderFeeArgs),
208 /// 资金流向时间序列
209 CapitalFlow(CapitalFlowArgs),
210 /// 资金分布快照(超大/大/中/小单流入流出)
211 CapitalDistribution {
212 symbol: String,
213 },
214 /// 公司详情标签(Futu API v10.6 `get_company_profile`)
215 CompanyProfile(CompanyProfileArgs),
216 /// 公司高管信息(Futu API v10.6 `get_company_executives`)
217 CompanyExecutives(CompanyExecutivesArgs),
218 /// 公司高管背景(Futu API v10.6 `get_company_executive_background`)
219 CompanyExecutiveBackground(CompanyExecutiveBackgroundArgs),
220 /// 公司经营效率(Futu API v10.6 `get_company_operational_efficiency`)
221 CompanyOperationalEfficiency(CompanyOperationalEfficiencyArgs),
222 /// 财报日前后价格表现(Futu API v10.6 `get_financials_earnings_price_move`)
223 FinancialsEarningsPriceMove(FinancialsEarningsPriceMoveArgs),
224 /// 财报日前后股价历史(Futu API v10.6 `get_financials_earnings_price_history`)
225 FinancialsEarningsPriceHistory(FinancialsEarningsPriceHistoryArgs),
226 /// 财报日历(Rust 增强只读 endpoint,不是 C++ FTAPI parity)
227 FinancialCalendar(FinancialCalendarArgs),
228 /// 指定股票财报日历搜索(Rust 增强只读 endpoint,不是 C++ FTAPI parity)
229 FinancialCalendarTarget(FinancialCalendarTargetArgs),
230 /// 财务报表(Futu API v10.6 `get_financials_statements`)
231 FinancialsStatements(FinancialsStatementsArgs),
232 /// 主营构成(Futu API v10.6 `get_financials_revenue_breakdown`)
233 FinancialsRevenueBreakdown(FinancialsRevenueBreakdownArgs),
234 /// 分析师评级概述(Futu API v10.6 `get_research_analyst_consensus`)
235 ResearchAnalystConsensus(ResearchAnalystConsensusArgs),
236 /// 评级汇总/详情(Futu API v10.6 `get_research_rating_summary`)
237 ResearchRatingSummary(ResearchRatingSummaryArgs),
238 /// 晨星研究报告(Futu API v10.6 `get_research_morningstar_report`)
239 ResearchMorningstarReport(ResearchMorningstarReportArgs),
240 /// 个股/指数估值详情(Futu API v10.6 `get_valuation_detail`)
241 ValuationDetail(ValuationDetailArgs),
242 /// 板块/指数成分股估值列表(Futu API v10.6 `get_valuation_plate_stock_list`)
243 ValuationPlateStockList(ValuationPlateStockListArgs),
244 /// 股票筛选(Futu API v10.6 `stock_screen`)
245 StockScreen(StockScreenArgs),
246 /// 期权筛选(Futu API v10.6 `option_screen`)
247 OptionScreen(OptionScreenArgs),
248 /// 窝轮筛选(Futu API v10.6 `warrant_screen`)
249 WarrantScreen(WarrantScreenArgs),
250 /// 技术指标异动(Futu API v10.6 `get_technical_unusual`)
251 TechnicalUnusual(TechnicalUnusualArgs),
252 /// 财务异动(Futu API v10.6 `get_financial_unusual`)
253 FinancialUnusual(FinancialUnusualArgs),
254 /// 衍生品异动(Futu API v10.6 `get_derivative_unusual`)
255 DerivativeUnusual(DerivativeUnusualArgs),
256 /// 回购记录(Futu API v10.6 `get_corporate_actions_buybacks`)
257 CorporateActionsBuybacks(CorporateActionsBuybacksArgs),
258 /// 分红派息(Futu API v10.6 `get_corporate_actions_dividends`)
259 CorporateActionsDividends(CorporateActionsDividendsArgs),
260 /// 拆合股(Futu API v10.6 `get_corporate_actions_stock_splits`)
261 CorporateActionsStockSplits(CorporateActionsStockSplitsArgs),
262 /// 每日卖空成交(Futu API v10.6 `get_daily_short_volume`)
263 DailyShortVolume(DailyShortVolumeArgs),
264 /// 空头持仓(Futu API v10.6 `get_short_interest`)
265 ShortInterest(ShortInterestArgs),
266 /// 十大买卖经纪(Futu API v10.6 `get_top_ten_buy_sell_brokers`)
267 TopTenBuySellBrokers(TopTenBuySellBrokersArgs),
268 /// 持股统计(Futu API v10.6 `get_shareholders_overview`)
269 ShareholdersOverview(ShareholdersOverviewArgs),
270 /// 股东持股变动(Futu API v10.6 `get_shareholders_holding_changes`)
271 ShareholdersHoldingChanges(ShareholdersHoldingChangesArgs),
272 /// 股东持股明细(Futu API v10.6 `get_shareholders_holder_detail`)
273 ShareholdersHolderDetail(ShareholdersHolderDetailArgs),
274 /// 机构持股统计(Futu API v10.6 `get_shareholders_institutional`)
275 ShareholdersInstitutional(ShareholdersInstitutionalArgs),
276 /// 内部人持股列表(Futu API v10.6 `get_insider_holder_list`)
277 InsiderHolderList(InsiderHolderListArgs),
278 /// 内部人交易列表(Futu API v10.6 `get_insider_trade_list`)
279 InsiderTradeList(InsiderTradeListArgs),
280 /// 期权波动率分析(Futu API v10.6 `get_option_volatility`)
281 OptionVolatility(OptionVolatilityArgs),
282 /// 期权行权概率(Futu API v10.6 `get_option_exercise_probability`)
283 OptionExerciseProbability(OptionExerciseProbabilityArgs),
284 /// 组合/单腿期权行情(Futu API v10.7 `get_option_quote`,proto-json)
285 OptionQuote(ProtoJsonArgs),
286 /// 组合期权策略列表(Futu API v10.7 `get_option_strategy`,proto-json)
287 OptionStrategy(ProtoJsonArgs),
288 /// 组合期权策略分析(Futu API v10.7 `get_option_strategy_analysis`,proto-json)
289 OptionStrategyAnalysis(ProtoJsonArgs),
290 /// 组合期权有效价差(Futu API v10.7 `get_option_strategy_spread`,proto-json)
291 OptionStrategySpread(ProtoJsonArgs),
292 /// 财报日历(Public QOT 3401,proto-json)
293 EarningsCalendar(ProtoJsonArgs),
294 /// 宏观指标列表(Public QOT 3402,proto-json)
295 MacroIndicatorList(ProtoJsonArgs),
296 /// 宏观指标历史(Public QOT 3403,proto-json)
297 MacroIndicatorHistory(ProtoJsonArgs),
298 /// FedWatch 目标利率(Public QOT 3404,proto-json)
299 FedWatchTargetRate(ProtoJsonArgs),
300 /// FedWatch 点阵图(Public QOT 3405,proto-json)
301 FedWatchDotPlot(ProtoJsonArgs),
302 /// 盈利超预期排行(Public QOT 3406,proto-json)
303 EarningsBeatRank(ProtoJsonArgs),
304 /// 分红排行(Public QOT 3407,proto-json)
305 DividendRank(ProtoJsonArgs),
306 /// 分红日历(Public QOT 3408,proto-json)
307 DividendCalendar(ProtoJsonArgs),
308 /// 经济日历(Public QOT 3409,proto-json)
309 EconomicCalendar(ProtoJsonArgs),
310 /// 美股盘前排行(Public QOT 3410,proto-json)
311 #[command(name = "us-pre-market-rank")]
312 UsPreMarketRank(ProtoJsonArgs),
313 /// 美股盘后排行(Public QOT 3411,proto-json)
314 #[command(name = "us-after-hours-rank")]
315 UsAfterHoursRank(ProtoJsonArgs),
316 /// 美股夜盘排行(Public QOT 3412,proto-json)
317 #[command(name = "us-overnight-rank")]
318 UsOvernightRank(ProtoJsonArgs),
319 /// 异动排行(Public QOT 3413,proto-json)
320 TopMoversRank(ProtoJsonArgs),
321 /// 热门榜单(Public QOT 3414,proto-json)
322 HotList(ProtoJsonArgs),
323 /// 沽空排行(Public QOT 3415,proto-json)
324 ShortSellingRank(ProtoJsonArgs),
325 /// 区间涨跌排行(Public QOT 3416,proto-json)
326 PeriodChangeRank(ProtoJsonArgs),
327 /// 高股息央企排行(Public QOT 3417,proto-json)
328 #[command(name = "high-dividend-soe-rank")]
329 HighDividendSoeRank(ProtoJsonArgs),
330 /// 机构列表(Public QOT 3418,proto-json)
331 #[command(name = "institution-list")]
332 InstitutionList(ProtoJsonArgs),
333 /// 机构资料(Public QOT 3419,proto-json)
334 #[command(name = "institution-profile")]
335 InstitutionProfile(ProtoJsonArgs),
336 /// 机构持仓分布(Public QOT 3420,proto-json)
337 #[command(name = "institution-distribution")]
338 InstitutionDistribution(ProtoJsonArgs),
339 /// 机构持股变动(Public QOT 3421,proto-json)
340 #[command(name = "institution-holding-change")]
341 InstitutionHoldingChange(ProtoJsonArgs),
342 /// 机构持仓列表(Public QOT 3422,proto-json)
343 #[command(name = "institution-holding-list")]
344 InstitutionHoldingList(ProtoJsonArgs),
345 /// ARK 基金持仓(Public QOT 3423,proto-json)
346 #[command(name = "ark-fund-holding")]
347 ArkFundHolding(ProtoJsonArgs),
348 /// ARK 个股交易动态(Public QOT 3424,proto-json)
349 #[command(name = "ark-stock-dynamic")]
350 ArkStockDynamic(ProtoJsonArgs),
351 /// ARK 主动交易(Public QOT 3425,proto-json)
352 #[command(name = "ark-active-transaction")]
353 ArkActiveTransaction(ProtoJsonArgs),
354 /// 评级变动(Public QOT 3426,proto-json)
355 #[command(name = "rating-change")]
356 RatingChange(ProtoJsonArgs),
357 /// 产业链列表(Public QOT 3427,proto-json)
358 #[command(name = "industrial-chain-list")]
359 IndustrialChainList(ProtoJsonArgs),
360 /// 产业链详情(Public QOT 3428,proto-json)
361 #[command(name = "industrial-chain-detail")]
362 IndustrialChainDetail(ProtoJsonArgs),
363 /// 板块关联产业链(Public QOT 3429,proto-json)
364 #[command(name = "industrial-chain-by-plate")]
365 IndustrialChainByPlate(ProtoJsonArgs),
366 /// 产业板块信息(Public QOT 3430,proto-json)
367 #[command(name = "industrial-plate-info")]
368 IndustrialPlateInfo(ProtoJsonArgs),
369 /// 产业板块成分股(Public QOT 3431,proto-json)
370 #[command(name = "industrial-plate-stock")]
371 IndustrialPlateStock(ProtoJsonArgs),
372 /// 热力图数据(Public QOT 3432,proto-json)
373 #[command(name = "heat-map-data")]
374 HeatMapData(ProtoJsonArgs),
375 /// 涨跌分布(Public QOT 3433,proto-json)
376 #[command(name = "rise-fall-distribution")]
377 RiseFallDistribution(ProtoJsonArgs),
378 /// 市场状态查询(开盘/休市/午休)
379 MarketState {
380 /// 证券列表,逗号分隔,如 HK.00700,US.AAPL
381 symbols: String,
382 },
383
384 /// 股票所属板块
385 OwnerPlate {
386 /// 证券列表,逗号分隔
387 symbols: String,
388 },
389
390 /// 期权链(按到期日列出 call/put 合约)
391 OptionChain {
392 /// 正股 MARKET.CODE,如 HK.00700 / US.AAPL(位置参数或 --owner / --code 二选一)
393 #[arg(index = 1, value_name = "OWNER")]
394 owner: Option<String>,
395 /// v1.4.52 BUG-9: REST/MCP 风格命名参数 alias
396 #[arg(long = "owner", visible_alias = "code", conflicts_with = "owner")]
397 owner_arg: Option<String>,
398 /// 到期日范围开始 YYYY-MM-DD
399 #[arg(long)]
400 begin: String,
401 /// 到期日范围结束 YYYY-MM-DD
402 #[arg(long)]
403 end: String,
404 /// 期权类型:all|call|put(默认 all)
405 #[arg(long, default_value = "all")]
406 option_type: String,
407 /// Greek filter: delta 下限
408 #[arg(long)]
409 delta_min: Option<f64>,
410 /// Greek filter: delta 上限
411 #[arg(long)]
412 delta_max: Option<f64>,
413 /// Greek filter: implied volatility 下限(小数,如 0.3 = 30%)
414 #[arg(long)]
415 iv_min: Option<f64>,
416 /// Greek filter: implied volatility 上限(小数,如 0.3 = 30%)
417 #[arg(long)]
418 iv_max: Option<f64>,
419 /// Greek filter: open interest 下限
420 #[arg(long)]
421 oi_min: Option<f64>,
422 /// Greek filter: open interest 上限
423 #[arg(long)]
424 oi_max: Option<f64>,
425 /// Greek filter: gamma 下限
426 #[arg(long)]
427 gamma_min: Option<f64>,
428 /// Greek filter: gamma 上限
429 #[arg(long)]
430 gamma_max: Option<f64>,
431 /// Greek filter: vega 下限
432 #[arg(long)]
433 vega_min: Option<f64>,
434 /// Greek filter: vega 上限
435 #[arg(long)]
436 vega_max: Option<f64>,
437 /// Greek filter: theta 下限
438 #[arg(long)]
439 theta_min: Option<f64>,
440 /// Greek filter: theta 上限
441 #[arg(long)]
442 theta_max: Option<f64>,
443 },
444
445 // ===== v1.4.30 市场元数据 / 复权 / 自选 / 撤单 =====
446 /// 交易日列表(对齐 py-futu-api `request_trading_days`)
447 TradingDays {
448 /// 市场:HK / US / CN / NT / ST / JP / SG
449 #[arg(long)]
450 market: String,
451 /// 起始日期 YYYY-MM-DD
452 #[arg(long)]
453 begin: String,
454 /// 结束日期 YYYY-MM-DD
455 #[arg(long)]
456 end: String,
457 },
458
459 /// 复权因子(对齐 py-futu-api `get_rehab`;长期 K 线对齐 / 回测必用)
460 Rehab {
461 /// 证券 MARKET.CODE,如 HK.00700 / US.AAPL
462 symbol: String,
463 },
464
465 /// 停牌日查询(对齐 py-futu-api `get_suspend`)
466 Suspend {
467 /// 证券列表,逗号分隔(位置参数或 --code / --symbols 二选一)
468 #[arg(index = 1, value_name = "SYMBOLS")]
469 symbols: Option<String>,
470 /// v1.4.52 BUG-9: REST/MCP 风格命名参数 alias
471 #[arg(long = "code", visible_alias = "symbols", conflicts_with = "symbols")]
472 symbols_arg: Option<String>,
473 /// 起始日期 YYYY-MM-DD
474 #[arg(long)]
475 begin: String,
476 /// 结束日期 YYYY-MM-DD
477 #[arg(long)]
478 end: String,
479 },
480
481 /// 自选股分组下的股票(对齐 py-futu-api `get_user_security`)
482 UserSecurity {
483 /// 分组名(位置参数或 --group 二选一,用 `user-security-groups` 先看可用分组)
484 #[arg(index = 1, value_name = "GROUP")]
485 group: Option<String>,
486 /// v1.4.52 BUG-9: REST/MCP 风格命名参数 alias
487 #[arg(long = "group", conflicts_with = "group")]
488 group_arg: Option<String>,
489 },
490
491 /// 自选股分组列表(对齐 py-futu-api `get_user_security_group`)
492 UserSecurityGroups {
493 /// 分组类型:1=自定义 / 2=系统 / 3=全部(默认 3)
494 #[arg(long, default_value_t = 3)]
495 group_type: i32,
496 },
497
498 /// 涡轮列表(对齐 py-futu-api `get_warrant`;按成交量降序)
499 Warrant {
500 /// 可选正股 MARKET.CODE(不传则全市场)
501 #[arg(long)]
502 owner: Option<String>,
503 /// 分页起始 index (默认 0). v1.4.106 codex 0635 ζ36 F1: 暴露分页参数,
504 /// 拿下一页用 `--begin 20 --num 20` (响应含 last_page / all_count)
505 #[arg(long, default_value_t = 0)]
506 begin: i32,
507 /// 最大行数(0-200,默认 20;0 表示空页请求)
508 #[arg(long, default_value_t = 20)]
509 num: i32,
510 },
511
512 /// 新股 IPO 列表(对齐 py-futu-api `get_ipo_list`)
513 IpoList {
514 /// 市场:HK=1 / HK_FUTURE=2 / US=11 / CN/SH=21 / SZ=22 / SG=31 / JP=41 / MY=61
515 #[arg(long)]
516 market: String,
517 },
518
519 /// IPO 日历视图(Rust 增强只读视图,复用 IPO 列表数据)
520 IpoCalendar(IpoCalendarArgs),
521
522 /// 期货合约资料(对齐 py-futu-api `get_future_info`)
523 FutureInfo {
524 /// 期货代码列表,逗号分隔(如 HK.HSImain / US.MNQmain)
525 symbols: String,
526 },
527
528 /// 条件选股最小版(对齐 py-futu-api `get_stock_filter`;高级过滤走 REST)
529 StockFilter {
530 /// 市场:HK=1 / HK_FUTURE=2 / US=11 / CN/SH=21 / SZ=22
531 #[arg(long)]
532 market: String,
533 /// 分页起始(默认 0)
534 #[arg(long, default_value_t = 0)]
535 begin: i32,
536 /// 返回行数(0-200,默认 50;0 表示空页请求)
537 #[arg(long, default_value_t = 50)]
538 num: i32,
539 },
540
541 #[doc = include_str!("commands/docs/cancel_all_order.md")]
542 CancelAllOrder {
543 /// 账户 id;也可改用 --card-num 传 App 显示卡号
544 #[arg(index = 1, value_name = "ACC_ID")]
545 acc_id: Option<u64>,
546 /// App 显示卡号:4 位末尾或 16 位完整卡号
547 #[arg(long = "card-num")]
548 card_num: Option<String>,
549 /// 环境:simulate(默认)/ real
550 #[arg(long, default_value = "simulate")]
551 env: String,
552 /// 市场:HK / US / HKCC / CN(可选,不传则全账户)
553 #[arg(long)]
554 market: Option<String>,
555 /// JP 子账户类型(TrdHeader.jpAccType / TrdSubAccType)
556 #[arg(long = "jp-acc-type")]
557 jp_acc_type: Option<i32>,
558 /// real 环境必须带此 flag 确认(防误触)
559 #[arg(long)]
560 confirm: bool,
561 },
562
563 /// 网关全局状态(市场开闭 / 服务器版本 / 登录状态)
564 GlobalState,
565
566 /// 用户信息(昵称 / 各市场行情权限 / 订阅配额 / 历史 K 线配额)
567 UserInfo,
568
569 /// 行情权限概览(C++ OpenD GUI 风格分组;可选刷新最高行情权限)
570 QuoteRights(QuoteRightsArgs),
571
572 /// 单只股票行情能力诊断(摆盘深度 / Lv2 接收 gate / 权限 raw 字段)
573 QuoteCapability(QuoteCapabilityArgs),
574
575 /// 延迟统计(行情推送 / 请求 / 下单三类延迟分布概要)
576 DelayStatistics,
577
578 /// v1.4.98 T2-8: NN+MM token 启用/绑定状态查询. unlock-trade -20011 时
579 /// 第一线诊断 (NN=Futu Token app, MM=moomoo Token app, 同协议异 app brand).
580 /// 输出 4 字段: nn/mm × enable/bind (1=已启用/绑定, 0=未启用/未绑定).
581 TokenState,
582
583 /// v1.4.98 T2-2: 无风险利率 (HK/US/JP, 期权定价基准). backend cmd 20231.
584 /// 输出 3 市场利率 (百分比 + raw uint64) + update_time.
585 RiskFreeRate,
586
587 /// v1.4.98 T2-1: 摆盘步长 (价位表) — backend cmd 6503.
588 /// PlaceOrder/ModifyOrder 校验价格合法性必备.
589 SpreadTable,
590
591 /// v1.4.98 T2-3: 逐笔统计 (avg_price / 主买/主卖/中性量等) — cmd 6365.
592 /// 前置: symbol 必须先 subscribe / get_static_info 触发 stock_id 缓存.
593 ///
594 /// v1.4.102 A3 alias: 加 positional `[SYMBOL]` 短写, 跟其他行情类
595 /// command (quote / snapshot / kline) 一致. `futucli ticker-statistic
596 /// HK.00700` 等同 `--symbol HK.00700`.
597 TickerStatistic(TickerStatisticArgs),
598
599 /// v1.4.106 codex 0500 ζ23-redo: 逐笔统计 Detail (价位级分布) — cmd 6366.
600 /// 配套 `ticker-statistic` (Info, cmd 6365): 先调 Info 拿 `ticker_time`,
601 /// 再调 Detail 同 `ticker_time` 拿这个时点的 DetailItem 列表 (price /
602 /// buy_volume / sell_volume / volume / ratio / neutral_volume).
603 /// 前置: symbol 必须先 subscribe / get_static_info 触发 stock_id 缓存.
604 TickerStatisticDetail(TickerStatisticDetailArgs),
605
606 // ===== v1.4.30 P2(100% 覆盖) =====
607 /// 查询当前订阅状态(已用 / 剩余额度 + 订阅清单)
608 QuerySubscription(QuerySubscriptionArgs),
609
610 /// 查询当前 daemon 已用订阅额度与历史 K 线额度
611 UsedQuota,
612
613 /// 反订阅行情数据(也可 --all 清空本连接所有订阅)
614 Unsubscribe(UnsubscribeArgs),
615
616 /// 从 EndpointSpec 输出 REST/MCP/CLI/Gateway surface 覆盖视图
617 Surface(SurfaceArgs),
618
619 /// 历史 K 线已用 / 剩余下载配额
620 HistoryKlQuota(HistoryKlQuotaArgs),
621
622 /// 持股变动(高管 / 机构 / 基金)
623 HoldingChange {
624 /// 证券 MARKET.CODE
625 symbol: String,
626 /// 持有者类别:1=机构 / 2=基金 / 3=高管
627 #[arg(long, default_value_t = 3)]
628 category: i32,
629 /// 开始时间 YYYY-MM-DD HH:MM:SS(可选)
630 #[arg(long)]
631 begin: Option<String>,
632 /// 结束时间(可选)
633 #[arg(long)]
634 end: Option<String>,
635 },
636
637 /// 修改自选股分组(add / del / move_out)
638 ModifyUserSecurity {
639 /// 分组名
640 group: String,
641 /// 操作:1=AddInto / 2=Delete / 3=MoveOut
642 #[arg(long)]
643 op: i32,
644 /// 证券列表,逗号分隔
645 symbols: String,
646 },
647
648 /// 股票代码变更 / 临时代码信息(目前仅港股)
649 CodeChange {
650 /// 证券列表,逗号分隔
651 symbols: String,
652 },
653
654 #[doc = include_str!("commands/docs/set_price_reminder.md")]
655 SetPriceReminder {
656 /// 证券 MARKET.CODE
657 symbol: String,
658 /// 操作码
659 #[arg(long)]
660 op: i32,
661 /// 提醒 key(modify/del/enable/disable 时必填)
662 #[arg(long)]
663 key: Option<i64>,
664 /// 提醒类型码
665 #[arg(long)]
666 r#type: Option<i32>,
667 /// 频率(1=Always 2=OncePerDay 3=Once)
668 #[arg(long)]
669 freq: Option<i32>,
670 /// 阈值(add/modify 必填)
671 #[arg(long)]
672 value: Option<f64>,
673 /// 备注 (最多 40 半角字节 / 20 中文字符, 对齐 C++ NoteMaxLen)
674 #[arg(long)]
675 note: Option<String>,
676 /// reminder session list,逗号分隔
677 #[arg(long, value_delimiter = ',')]
678 session: Vec<i32>,
679 },
680
681 /// 查询到价提醒(按 symbol 或 market)
682 PriceReminder {
683 /// 证券(和 --market 二选一)
684 #[arg(long)]
685 symbol: Option<String>,
686 /// C++ 到价提醒市场桶:HK=1 HK_FUTURE=6 US=11 SH/CN=21 SZ=22(和 --symbol 二选一)
687 #[arg(long)]
688 market: Option<String>,
689 },
690
691 /// 期权到期日列表
692 OptionExpirationDate {
693 /// 标的股 MARKET.CODE(位置参数或 --owner 二选一)
694 #[arg(index = 1, value_name = "OWNER")]
695 owner: Option<String>,
696 /// v1.4.52 BUG-9: REST/MCP 风格命名参数 alias
697 #[arg(long = "owner", conflicts_with = "owner")]
698 owner_arg: Option<String>,
699 /// 指数期权类型(仅恒指/国指)
700 #[arg(long)]
701 index_type: Option<i32>,
702 },
703
704 /// 订阅账户推送(订单 / 成交)
705 SubAccPush {
706 /// 账户 id 列表,逗号分隔
707 acc_ids: String,
708 },
709
710 /// 取消订阅账户推送(订单 / 成交)
711 UnsubAccPush {
712 /// 账户 id 列表,逗号分隔;与 sub-acc-push 对称
713 acc_ids: String,
714 },
715
716 /// 账户资金流水(对齐 `get_acc_cash_flow`)
717 #[command(visible_alias = "flow-summary")]
718 AccCashFlow(AccCashFlowArgs),
719
720 /// v1.4.32+ daemon 健康状态快照(GET /api/admin/status)。
721 /// 同事提议的"快速看 daemon 在线不、broker 通不通、解锁没"工具。
722 /// scope 模式下 key 必须持 `admin` scope,否则被 bearer_auth 拒。
723 #[command(name = "daemon-status")]
724 DaemonStatus(DaemonStatusArgs),
725
726 /// 聚合 REST 健康、订阅、push、quota、metrics 的一键体检。
727 #[command(name = "doctor")]
728 Doctor(DoctorArgs),
729
730 /// v1.4.32+ 优雅退出 daemon(POST /api/admin/shutdown)。
731 /// daemon 响应 200 表示已接收 shutdown 请求;实际退出走 opend 统一
732 /// graceful shutdown 路径。是否重启由进程 supervisor(systemd / Docker)
733 /// 决定。
734 #[command(name = "daemon-shutdown")]
735 DaemonShutdown(DaemonShutdownArgs),
736
737 /// v1.4.32+ 重置 trade cipher 缓存(POST /api/admin/reload)。
738 /// 用于"解锁状态错乱 / 换了交易密码"场景——清空 cipher 缓存后客户端
739 /// 必须重新 unlock-trade。不重启 daemon 进程,不影响 Platform / broker
740 /// TCP 连接。
741 #[command(name = "daemon-reload")]
742 DaemonReload(DaemonReloadArgs),
743
744 // ========================================================================
745 // v1.4.94 / v1.4.95 Tier M (mobile-driven extensions): 11 subcommand 镜像
746 // REST + MCP. 全 only-read (acc:read scope). 见 cmd/tier_m.rs.
747 // ========================================================================
748 /// 资金明细查询 (mobile-driven, 比 acc-cash-flow 字段更全) — v1.4.94 M1
749 ///
750 /// v1.4.102 A3 alias: positional `[ACC_ID]` 短写
751 /// (`futucli cash-log 12345 --begin-time ...` 等同 `--acc-id 12345`).
752 #[command(name = "cash-log")]
753 CashLog(CashLogArgs),
754
755 /// 单条资金流水详情 — v1.4.94 M1 + v1.4.102 A3 positional alias
756 #[command(name = "cash-detail")]
757 CashDetail(CashDetailArgs),
758
759 /// 业务分类元数据 — v1.4.94 M1 + v1.4.102 A3 positional alias
760 #[command(name = "biz-group")]
761 BizGroup(BizGroupArgs),
762
763 /// per-account margin info (HK / US / CN_AH) — v1.4.95 U2-D
764 ///
765 /// 与 `margin-ratio` (per-security ratio) 互补: 本命令给账户全景
766 /// (购买力 / 杠杆 / 风险等级 / 流动性 / HK-specific 港股保证金).
767 #[command(name = "margin-info")]
768 MarginInfo(MarginInfoArgs),
769
770 /// 账户合规标志查询 — v1.4.95 U2-A
771 ///
772 /// 高级交易准入 (期权 / 衍生品 / OTC / CFD 等) 强制要求.
773 /// 常用 flag_id: 5=US 期权确认, 22=衍生品风批 (合并新), 10=基金 KYC,
774 /// 16=PDT 风披, 23=美股 OTC. 详见 proto 头部完整 36+ 项列表.
775 #[command(name = "account-flag")]
776 AccountFlag(AccountFlagArgs),
777
778 /// 账户债券总持仓 (P&L 汇总) — v1.4.95 U2-B
779 #[command(name = "bond-total-asset")]
780 BondTotalAsset(BondTotalAssetArgs),
781
782 /// 单只债券持仓 (含派息/到期/通知) — v1.4.95 U2-B
783 #[command(name = "bond-single-asset")]
784 BondSingleAsset(BondSingleAssetArgs),
785
786 /// 账户债券持仓列表 — v1.4.95 U2-B
787 #[command(name = "bond-position-list")]
788 BondPositionList(BondPositionListArgs),
789
790 /// 是否需要答题 (suitability questionnaire) — v1.4.95 U2-B
791 #[command(name = "bond-answer-state")]
792 BondAnswerState(BondAnswerStateArgs),
793
794 /// 交易提醒 (是否可买/复杂/高风险/可卖/资格预审) — v1.4.95 U2-B
795 #[command(name = "bond-trade-reminder")]
796 BondTradeReminder(BondTradeReminderArgs),
797}