Skip to main content

futu_mcp/tool_args/qot/
screen_unusual.rs

1//! MCP QOT screen and unusual-move request schemas.
2
3use rmcp::schemars;
4use serde::Deserialize;
5use serde_json::Value;
6
7#[derive(Debug, Deserialize, schemars::JsonSchema)]
8#[serde(deny_unknown_fields)]
9pub struct StockScreenReq {
10    #[schemars(
11        description = "Full Qot_StockScreen C2S JSON object. Use snake_case generated proto fields, e.g. filter_list/retrieve_list/page_from/page_count."
12    )]
13    pub c2s: Value,
14}
15
16#[derive(Debug, Deserialize, schemars::JsonSchema)]
17#[serde(deny_unknown_fields)]
18pub struct OptionScreenReq {
19    #[schemars(
20        description = "Full Qot_OptionScreen C2S JSON object. Use snake_case generated proto fields, e.g. market_category_list/filter_list/sort_list/page_from/page_count."
21    )]
22    pub c2s: Value,
23}
24
25#[derive(Debug, Deserialize, schemars::JsonSchema)]
26#[serde(deny_unknown_fields)]
27pub struct WarrantScreenReq {
28    #[schemars(
29        description = "Full Qot_WarrantScreen C2S JSON object. Use snake_case generated proto fields, e.g. market_type/filter_list/sort_list/page_from/page_count."
30    )]
31    pub c2s: Value,
32}
33
34#[derive(Debug, Deserialize, schemars::JsonSchema)]
35#[serde(deny_unknown_fields)]
36pub struct TechnicalUnusualReq {
37    #[schemars(
38        description = "Stock symbol accepted by Futu SkillWrap, e.g. HK.00700 / US.AAPL \
39                       (alias: symbol / code / stock / security)"
40    )]
41    #[serde(alias = "symbol", alias = "code", alias = "stock", alias = "security")]
42    pub stock_symbol: String,
43    #[schemars(description = "Time range in calendar days; omit or <=0 uses backend default 7")]
44    #[serde(default, alias = "timeRange")]
45    pub time_range: Option<i32>,
46    #[schemars(description = "Optional technical indicator filters; omitted means all")]
47    #[serde(default, alias = "indicatorFilters")]
48    pub indicator_filters: Vec<String>,
49    #[schemars(description = "Language id: 0=simplified Chinese, 1=traditional, 2=English")]
50    #[serde(default, alias = "languageId")]
51    pub language_id: Option<i32>,
52}
53
54#[derive(Debug, Deserialize, schemars::JsonSchema)]
55#[serde(deny_unknown_fields)]
56pub struct FinancialUnusualReq {
57    #[schemars(
58        description = "Stock symbol accepted by Futu SkillWrap, e.g. HK.00700 / US.AAPL \
59                       (alias: symbol / code / stock / security)"
60    )]
61    #[serde(alias = "symbol", alias = "code", alias = "stock", alias = "security")]
62    pub stock_symbol: String,
63    #[schemars(description = "Time range in calendar days; omit or <=0 uses backend default 7")]
64    #[serde(default, alias = "timeRange")]
65    pub time_range: Option<i32>,
66    #[schemars(description = "Optional financial analysis dimensions; omitted means all")]
67    #[serde(default, alias = "analysisDimensions")]
68    pub analysis_dimensions: Vec<String>,
69    #[schemars(description = "Language id: 0=simplified Chinese, 1=traditional, 2=English")]
70    #[serde(default, alias = "languageId")]
71    pub language_id: Option<i32>,
72}
73
74#[derive(Debug, Deserialize, schemars::JsonSchema)]
75#[serde(deny_unknown_fields)]
76pub struct DerivativeUnusualReq {
77    #[schemars(
78        description = "Stock symbol accepted by Futu SkillWrap, e.g. HK.00700 / US.AAPL \
79                       (alias: symbol / code / stock / security)"
80    )]
81    #[serde(alias = "symbol", alias = "code", alias = "stock", alias = "security")]
82    pub stock_symbol: String,
83    #[schemars(description = "Time range in calendar days; omit or <=0 uses backend default 7")]
84    #[serde(default, alias = "timeRange")]
85    pub time_range: Option<i32>,
86    #[schemars(description = "Optional derivative analysis dimensions; omitted means all")]
87    #[serde(default, alias = "analysisDimensions")]
88    pub analysis_dimensions: Vec<String>,
89    #[schemars(description = "Language id: 0=simplified Chinese, 1=traditional, 2=English")]
90    #[serde(default, alias = "languageId")]
91    pub language_id: Option<i32>,
92}