Skip to main content

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}