Skip to main content

futucli/cli/commands/
inline_args.rs

1//! Typed argument structs extracted from legacy inline root command variants.
2
3#[derive(clap::Args)]
4pub struct CapitalDistributionArgs {
5    pub(crate) symbol: String,
6}
7#[derive(clap::Args)]
8pub struct MarketStateArgs {
9    /// 证券列表,逗号分隔,如 HK.00700,US.AAPL
10    pub(crate) symbols: String,
11}
12#[derive(clap::Args)]
13pub struct OwnerPlateArgs {
14    /// 证券列表,逗号分隔
15    pub(crate) symbols: String,
16}
17#[derive(clap::Args)]
18pub struct OptionChainArgs {
19    /// 正股 MARKET.CODE,如 HK.00700 / US.AAPL(位置参数或 --owner / --code 二选一)
20    #[arg(index = 1, value_name = "OWNER")]
21    pub(crate) owner: Option<String>,
22    /// REST/MCP 风格命名参数别名
23    #[arg(long = "owner", visible_alias = "code", conflicts_with = "owner")]
24    pub(crate) owner_arg: Option<String>,
25    /// 到期日范围开始 YYYY-MM-DD
26    #[arg(long)]
27    pub(crate) begin: String,
28    /// 到期日范围结束 YYYY-MM-DD
29    #[arg(long)]
30    pub(crate) end: String,
31    /// 期权类型:all|call|put(默认 all)
32    #[arg(long, default_value = "all")]
33    pub(crate) option_type: String,
34    /// Greek filter: delta 下限
35    #[arg(long)]
36    pub(crate) delta_min: Option<f64>,
37    /// Greek filter: delta 上限
38    #[arg(long)]
39    pub(crate) delta_max: Option<f64>,
40    /// Greek filter: implied volatility 下限(小数,如 0.3 = 30%)
41    #[arg(long)]
42    pub(crate) iv_min: Option<f64>,
43    /// Greek filter: implied volatility 上限(小数,如 0.3 = 30%)
44    #[arg(long)]
45    pub(crate) iv_max: Option<f64>,
46    /// Greek filter: open interest 下限
47    #[arg(long)]
48    pub(crate) oi_min: Option<f64>,
49    /// Greek filter: open interest 上限
50    #[arg(long)]
51    pub(crate) oi_max: Option<f64>,
52    /// Greek filter: gamma 下限
53    #[arg(long)]
54    pub(crate) gamma_min: Option<f64>,
55    /// Greek filter: gamma 上限
56    #[arg(long)]
57    pub(crate) gamma_max: Option<f64>,
58    /// Greek filter: vega 下限
59    #[arg(long)]
60    pub(crate) vega_min: Option<f64>,
61    /// Greek filter: vega 上限
62    #[arg(long)]
63    pub(crate) vega_max: Option<f64>,
64    /// Greek filter: theta 下限
65    #[arg(long)]
66    pub(crate) theta_min: Option<f64>,
67    /// Greek filter: theta 上限
68    #[arg(long)]
69    pub(crate) theta_max: Option<f64>,
70}
71#[derive(clap::Args)]
72pub struct TradingDaysArgs {
73    /// 市场:HK / US / CN / NT / ST / JP / SG
74    #[arg(long)]
75    pub(crate) market: String,
76    /// 起始日期 YYYY-MM-DD
77    #[arg(long)]
78    pub(crate) begin: String,
79    /// 结束日期 YYYY-MM-DD
80    #[arg(long)]
81    pub(crate) end: String,
82}
83#[derive(clap::Args)]
84pub struct RehabArgs {
85    /// 证券 MARKET.CODE,如 HK.00700 / US.AAPL
86    pub(crate) symbol: String,
87}
88#[derive(clap::Args)]
89pub struct SuspendArgs {
90    /// 证券列表,逗号分隔(位置参数或 --code / --symbols 二选一)
91    #[arg(index = 1, value_name = "SYMBOLS")]
92    pub(crate) symbols: Option<String>,
93    /// REST/MCP 风格命名参数别名
94    #[arg(long = "code", visible_alias = "symbols", conflicts_with = "symbols")]
95    pub(crate) symbols_arg: Option<String>,
96    /// 起始日期 YYYY-MM-DD
97    #[arg(long)]
98    pub(crate) begin: String,
99    /// 结束日期 YYYY-MM-DD
100    #[arg(long)]
101    pub(crate) end: String,
102}
103#[derive(clap::Args)]
104pub struct UserSecurityArgs {
105    /// 分组名(位置参数或 --group 二选一,用 `user-security-groups` 先看可用分组)
106    #[arg(index = 1, value_name = "GROUP")]
107    pub(crate) group: Option<String>,
108    /// REST/MCP 风格命名参数别名
109    #[arg(long = "group", conflicts_with = "group")]
110    pub(crate) group_arg: Option<String>,
111}
112#[derive(clap::Args)]
113pub struct UserSecurityGroupsArgs {
114    /// 分组类型:1=自定义 / 2=系统 / 3=全部(默认 3)
115    #[arg(long, default_value_t = 3)]
116    pub(crate) group_type: i32,
117}
118#[derive(clap::Args)]
119pub struct WarrantArgs {
120    /// 可选正股 MARKET.CODE(不传则全市场)
121    #[arg(long)]
122    pub(crate) owner: Option<String>,
123    /// 分页起始 index(默认 0);下一页可用 `--begin 20 --num 20`
124    #[arg(long, default_value_t = 0)]
125    pub(crate) begin: i32,
126    /// 最大行数(0-200,默认 20;0 表示空页请求)
127    #[arg(long, default_value_t = 20)]
128    pub(crate) num: i32,
129}
130#[derive(clap::Args)]
131pub struct IpoListArgs {
132    /// 市场:HK=1 / HK_FUTURE=2 / US=11 / CN/SH=21 / SZ=22 / SG=31 / JP=41 / MY=61
133    #[arg(long)]
134    pub(crate) market: String,
135}
136#[derive(clap::Args)]
137pub struct FutureInfoArgs {
138    /// 期货代码列表,逗号分隔(如 HK.HSImain / US.MNQmain)
139    pub(crate) symbols: String,
140}
141#[derive(clap::Args)]
142pub struct StockFilterArgs {
143    /// 市场:HK=1 / HK_FUTURE=2 / US=11 / CN/SH=21 / SZ=22
144    #[arg(long)]
145    pub(crate) market: String,
146    /// 分页起始(默认 0)
147    #[arg(long, default_value_t = 0)]
148    pub(crate) begin: i32,
149    /// 返回行数(0-200,默认 50;0 表示空页请求)
150    #[arg(long, default_value_t = 50)]
151    pub(crate) num: i32,
152}
153#[derive(clap::Args)]
154pub struct CancelAllOrderArgs {
155    /// 账户 id;也可改用 --card-num 传 App 显示卡号
156    #[arg(index = 1, value_name = "ACC_ID")]
157    pub(crate) acc_id: Option<u64>,
158    /// App 显示卡号:4 位末尾或 16 位完整卡号
159    #[arg(long = "card-num")]
160    pub(crate) card_num: Option<String>,
161
162    /// Unix owner-only (exact mode 0600) account-id file; keeps the raw selector out of argv.
163    #[arg(
164        long = "acc-id-file",
165        value_name = "MODE_0600_FILE",
166        conflicts_with_all = ["acc_id", "card_num"]
167    )]
168    pub(crate) acc_id_file: Option<std::path::PathBuf>,
169    /// 环境:simulate(默认)/ real
170    #[arg(long, default_value = "simulate")]
171    pub(crate) env: String,
172    /// 市场:HK / US / HKCC / CN(可选,不传则全账户)
173    #[arg(long)]
174    pub(crate) market: Option<String>,
175    /// JP 子账户类型(TrdHeader.jpAccType / TrdSubAccType)
176    #[arg(long = "jp-acc-type")]
177    pub(crate) jp_acc_type: Option<i32>,
178    /// real 环境必须带此 flag 确认(防误触)
179    #[arg(long)]
180    pub(crate) confirm: bool,
181}
182#[derive(clap::Args)]
183pub struct HoldingChangeArgs {
184    /// 证券 MARKET.CODE
185    pub(crate) symbol: String,
186    /// 持有者类别:1=机构 / 2=基金 / 3=高管
187    #[arg(long, default_value_t = 3)]
188    pub(crate) category: i32,
189    /// 开始时间 YYYY-MM-DD HH:MM:SS(可选)
190    #[arg(long)]
191    pub(crate) begin: Option<String>,
192    /// 结束时间(可选)
193    #[arg(long)]
194    pub(crate) end: Option<String>,
195}
196#[derive(clap::Args)]
197pub struct ModifyUserSecurityArgs {
198    /// 分组名
199    pub(crate) group: String,
200    /// 操作:1=AddInto / 2=Delete / 3=MoveOut
201    #[arg(long)]
202    pub(crate) op: i32,
203    /// 证券列表,逗号分隔
204    pub(crate) symbols: String,
205}
206#[derive(clap::Args)]
207pub struct CodeChangeArgs {
208    /// 证券列表,逗号分隔
209    pub(crate) symbols: String,
210}
211#[derive(clap::Args)]
212pub struct SetPriceReminderArgs {
213    /// 证券 MARKET.CODE
214    pub(crate) symbol: String,
215    /// 操作码
216    #[arg(long)]
217    pub(crate) op: i32,
218    /// 提醒 key(modify/del/enable/disable 时必填)
219    #[arg(long)]
220    pub(crate) key: Option<i64>,
221    /// 提醒类型码
222    #[arg(long)]
223    pub(crate) r#type: Option<i32>,
224    /// 频率(1=Always 2=OncePerDay 3=Once)
225    #[arg(long)]
226    pub(crate) freq: Option<i32>,
227    /// 阈值(add/modify 必填)
228    #[arg(long)]
229    pub(crate) value: Option<f64>,
230    /// 备注 (最多 40 半角字节 / 20 中文字符, 对齐 C++ NoteMaxLen)
231    #[arg(long)]
232    pub(crate) note: Option<String>,
233    /// reminder session list,逗号分隔
234    #[arg(long, value_delimiter = ',')]
235    pub(crate) session: Vec<i32>,
236}
237#[derive(clap::Args)]
238pub struct PriceReminderArgs {
239    /// 证券(和 --market 二选一)
240    #[arg(long)]
241    pub(crate) symbol: Option<String>,
242    /// C++ 到价提醒市场子集:HK=1 HK_FUTURE=2 US=11 SH/CN=21 SZ=22 SG=31 JP=41 MY=61 CC=91(和 --symbol 二选一)
243    #[arg(long)]
244    pub(crate) market: Option<String>,
245}
246#[derive(clap::Args)]
247pub struct OptionExpirationDateArgs {
248    /// 标的股 MARKET.CODE(位置参数或 --owner 二选一)
249    #[arg(index = 1, value_name = "OWNER")]
250    pub(crate) owner: Option<String>,
251    /// REST/MCP 风格命名参数别名
252    #[arg(long = "owner", conflicts_with = "owner")]
253    pub(crate) owner_arg: Option<String>,
254    /// 指数期权类型(仅恒指/国指)
255    #[arg(long)]
256    pub(crate) index_type: Option<i32>,
257}
258#[derive(clap::Args)]
259pub struct SubAccPushArgs {
260    /// 账户 id 列表,逗号分隔
261    pub(crate) acc_ids: String,
262}
263#[derive(clap::Args)]
264pub struct UnsubAccPushArgs {
265    /// 账户 id 列表,逗号分隔;与 sub-acc-push 对称
266    pub(crate) acc_ids: String,
267}