Skip to main content

futu_backend/home/runner/work/futu-opend-rs/futu-opend-rs/target/debug/build/futu-backend-90fdba7f4793bb8b/out/
ft_cmd_stock_screener.rs

1// This file is @generated by prost-build.
2/// -----------------Property Definitions-----------------
3#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4pub struct PropertyBasic {
5    #[prost(enumeration = "PropertyNameBasic", optional, tag = "1")]
6    pub name: ::core::option::Option<i32>,
7}
8#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9pub struct PropertySimple {
10    #[prost(enumeration = "PropertyNameSimple", optional, tag = "1")]
11    pub name: ::core::option::Option<i32>,
12}
13#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14pub struct PropertyCumulative {
15    #[prost(enumeration = "PropertyNameCumulative", optional, tag = "1")]
16    pub name: ::core::option::Option<i32>,
17    #[prost(uint32, optional, tag = "2", default = "1")]
18    pub days: ::core::option::Option<u32>,
19    /// 周期平均
20    #[prost(int32, optional, tag = "3")]
21    pub period_average: ::core::option::Option<i32>,
22}
23#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24pub struct PropertyFinancial {
25    #[prost(enumeration = "PropertyNameFinancial", optional, tag = "1")]
26    pub name: ::core::option::Option<i32>,
27    #[prost(enumeration = "Term", optional, tag = "2")]
28    pub term: ::core::option::Option<i32>,
29    /// 可选时间跨度(范围\[1, 9\], 成长能力因子专用)
30    #[prost(int64, optional, tag = "3")]
31    pub duration: ::core::option::Option<i64>,
32    /// 年份(2020/2019/...)
33    #[prost(int32, optional, tag = "4")]
34    pub year: ::core::option::Option<i32>,
35    /// 周期平均
36    #[prost(int32, optional, tag = "5")]
37    pub period_average: ::core::option::Option<i32>,
38}
39#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
40pub struct PropertyIndicator {
41    #[prost(enumeration = "Indicator", optional, tag = "1")]
42    pub name: ::core::option::Option<i32>,
43    #[prost(enumeration = "Period", optional, tag = "2")]
44    pub period: ::core::option::Option<i32>,
45    /// 动态参数(如MA6,设置6即可;BOLL(15,3),则按顺序设置15, 3;KDJ(9,4,4),则按顺序设置9,4,4)
46    #[prost(int64, repeated, packed = "false", tag = "3")]
47    pub indicator_params: ::prost::alloc::vec::Vec<i64>,
48}
49#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
50pub struct PropertyFeatured {
51    /// 枚举如上Featured所示
52    #[prost(int32, optional, tag = "1")]
53    pub name: ::core::option::Option<i32>,
54    /// K线周期,用于指标解读
55    #[prost(enumeration = "Period", optional, tag = "2")]
56    pub period: ::core::option::Option<i32>,
57    /// 范围周期(用于公司估值)枚举如上RangePeriod所示
58    #[prost(int32, optional, tag = "3")]
59    pub range_period: ::core::option::Option<i32>,
60}
61#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
62pub struct PropertyBroker {
63    /// 枚举如上Broker所示
64    #[prost(int32, optional, tag = "1")]
65    pub name: ::core::option::Option<i32>,
66    /// 近n日
67    #[prost(int32, optional, tag = "2")]
68    pub days: ::core::option::Option<i32>,
69    /// 参数(注意类型为string)
70    /// 如持仓分布集中度,前10,占比22%, 则param = 10
71    /// 如持仓经纪商变动: 例:broker_id, 变动了 26%,param = broker_id
72    /// ...其他的类似,需要设置这个param的有:持仓分布集中度,持仓经纪商变动,持仓经纪商排行,经纪商持仓量
73    #[prost(string, optional, tag = "3")]
74    pub param: ::core::option::Option<::prost::alloc::string::String>,
75}
76/// -----------------Result Definitions-----------------
77#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
78pub struct ResultPropertyBasic {
79    #[prost(string, required, tag = "1")]
80    pub value: ::prost::alloc::string::String,
81    #[prost(message, required, tag = "2")]
82    pub property: PropertyBasic,
83}
84#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
85pub struct ResultPropertySimple {
86    #[prost(int64, required, tag = "1")]
87    pub value: i64,
88    #[prost(message, required, tag = "2")]
89    pub property: PropertySimple,
90}
91#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
92pub struct ResultPropertyCumulative {
93    #[prost(int64, required, tag = "1")]
94    pub value: i64,
95    #[prost(message, required, tag = "2")]
96    pub property: PropertyCumulative,
97}
98#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
99pub struct ResultPropertyFinancial {
100    #[prost(int64, required, tag = "1")]
101    pub value: i64,
102    #[prost(message, required, tag = "2")]
103    pub property: PropertyFinancial,
104    #[prost(uint32, optional, tag = "3")]
105    pub end_time: ::core::option::Option<u32>,
106}
107#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
108pub struct ResultPropertyIndicator {
109    #[prost(int64, required, tag = "1")]
110    pub value: i64,
111    #[prost(message, required, tag = "2")]
112    pub property: PropertyIndicator,
113}
114#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
115pub struct ResultPropertyFeatured {
116    #[prost(int64, optional, tag = "1")]
117    pub value: ::core::option::Option<i64>,
118    #[prost(message, optional, tag = "2")]
119    pub property: ::core::option::Option<PropertyFeatured>,
120}
121#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
122pub struct ResultPropertyBroker {
123    /// sample:
124    /// 持仓分布集中度: 例:前10,占比了 22%;则对应 property.param = 10, value = 22000(22%)
125    /// 持仓经纪商变动: 例:broker_id, 变动了 26%;则对应的 property.param = broker_id, value = 26000(26%)
126    /// 持仓经纪商数量:例:30;则对应 value = 30
127    /// 持仓经纪商排行:例:broker_id, 排行7;则对应 property.param = broker_id, value = 7
128    /// 经纪商持仓量:例:broker_id, 持仓23%;则对应 property.param = broker_id, value = 23000(23%)
129    /// 中央结算持股占比,中央结算持股变动的返回值是在 value
130    #[prost(int64, optional, tag = "1")]
131    pub value: ::core::option::Option<i64>,
132    #[prost(message, optional, tag = "2")]
133    pub property: ::core::option::Option<PropertyBroker>,
134}
135/// -----------------Query Definitions-----------------
136#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
137pub struct Bounary {
138    /// 边界值
139    #[prost(int64, required, tag = "1")]
140    pub value: i64,
141    /// 是否包含此值
142    #[prost(bool, required, tag = "2")]
143    pub includes: bool,
144}
145/// 区间
146#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
147pub struct Interval {
148    /// 区间下限
149    #[prost(message, optional, tag = "1")]
150    pub lower: ::core::option::Option<Bounary>,
151    /// 区间上限
152    #[prost(message, optional, tag = "2")]
153    pub upper: ::core::option::Option<Bounary>,
154}
155/// 简单属性查询
156#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
157pub struct QueryPropertySimple {
158    #[prost(message, required, tag = "1")]
159    pub property: PropertySimple,
160    /// 区间下限
161    #[prost(message, optional, tag = "2")]
162    pub lower: ::core::option::Option<Bounary>,
163    /// 区间上限
164    #[prost(message, optional, tag = "3")]
165    pub upper: ::core::option::Option<Bounary>,
166}
167/// 累计值属性查询
168#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
169pub struct QueryPropertyCumulative {
170    #[prost(message, required, tag = "1")]
171    pub property: PropertyCumulative,
172    /// 区间下限
173    #[prost(message, optional, tag = "2")]
174    pub lower: ::core::option::Option<Bounary>,
175    /// 区间上限
176    #[prost(message, optional, tag = "3")]
177    pub upper: ::core::option::Option<Bounary>,
178    /// 连续周期
179    #[prost(int32, optional, tag = "4")]
180    pub continuous_period: ::core::option::Option<i32>,
181}
182/// 财务属性查询
183#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
184pub struct QueryPropertyFinancial {
185    #[prost(message, required, tag = "1")]
186    pub property: PropertyFinancial,
187    /// 区间下限
188    #[prost(message, optional, tag = "2")]
189    pub lower: ::core::option::Option<Bounary>,
190    /// 区间上限
191    #[prost(message, optional, tag = "3")]
192    pub upper: ::core::option::Option<Bounary>,
193    /// 连续周期
194    #[prost(int32, optional, tag = "4")]
195    pub continuous_period: ::core::option::Option<i32>,
196}
197/// 指标相对位置查询
198#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
199pub struct QueryIndicatorPositional {
200    #[prost(enumeration = "Position", required, tag = "1")]
201    pub position: i32,
202    #[prost(enumeration = "Period", required, tag = "2")]
203    pub period: i32,
204    #[prost(enumeration = "Indicator", required, tag = "3")]
205    pub first_indicator: i32,
206    #[prost(enumeration = "Indicator", optional, tag = "4")]
207    pub second_indicator: ::core::option::Option<i32>,
208    #[prost(int64, optional, tag = "5")]
209    pub second_value: ::core::option::Option<i64>,
210    /// 动态参数(如MA6,设置6即可;BOLL(15,3),则按顺序设置15, 3;KDJ(9,4,4),则按顺序设置9,4,4)
211    #[prost(int64, repeated, packed = "false", tag = "6")]
212    pub first_indicator_params: ::prost::alloc::vec::Vec<i64>,
213    /// 动态参数(如MA6,设置6即可;BOLL(15,3),则按顺序设置15, 3;KDJ(9,4,4),则按顺序设置9,4,4)
214    #[prost(int64, repeated, packed = "false", tag = "7")]
215    pub second_indicator_params: ::prost::alloc::vec::Vec<i64>,
216    /// 连续周期
217    #[prost(int32, optional, tag = "8")]
218    pub continuous_period: ::core::option::Option<i32>,
219}
220/// 指标样式查询
221#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
222pub struct QueryIndicatorPattern {
223    #[prost(enumeration = "Pattern", required, tag = "1")]
224    pub pattern: i32,
225    #[prost(enumeration = "Period", required, tag = "2")]
226    pub period: i32,
227    /// 连续周期
228    #[prost(int32, optional, tag = "3")]
229    pub continuous_period: ::core::option::Option<i32>,
230}
231#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
232pub struct QueryPropertyFeatured {
233    #[prost(message, optional, tag = "1")]
234    pub property: ::core::option::Option<PropertyFeatured>,
235    /// 区间下限
236    #[prost(message, optional, tag = "2")]
237    pub lower: ::core::option::Option<Bounary>,
238    /// 区间上限
239    #[prost(message, optional, tag = "3")]
240    pub upper: ::core::option::Option<Bounary>,
241}
242#[derive(Clone, PartialEq, ::prost::Message)]
243pub struct QueryPropertyBroker {
244    /// 占比/变动/排行 操作
245    /// sample:
246    /// 持仓分布集中度: 例:前10,占比 20%;则对应 property.param = 10, intervals\[0\].lower.includes = true, intervals\[0\].lower.value = 20000(20%)
247    #[prost(message, optional, tag = "1")]
248    pub property: ::core::option::Option<PropertyBroker>,
249    /// 区间(多个区间是 或 的关系)
250    #[prost(message, repeated, tag = "2")]
251    pub intervals: ::prost::alloc::vec::Vec<Interval>,
252}
253#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
254pub struct QueryKlinePattern {
255    #[prost(enumeration = "KlinePattern", optional, tag = "1")]
256    pub kline_pattern: ::core::option::Option<i32>,
257    #[prost(enumeration = "Period", optional, tag = "2")]
258    pub period: ::core::option::Option<i32>,
259    /// 连续周期
260    #[prost(int32, optional, tag = "3")]
261    pub continuous_period: ::core::option::Option<i32>,
262}
263/// basic_property, simple_property, cumulative_property, financial_property, indicator_property,featured_property, property_broker 选一
264#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
265pub struct Sort {
266    #[prost(enumeration = "SortDirection", required, tag = "1")]
267    pub direction: i32,
268    #[prost(message, optional, tag = "2")]
269    pub basic_property: ::core::option::Option<PropertyBasic>,
270    #[prost(message, optional, tag = "3")]
271    pub simple_property: ::core::option::Option<PropertySimple>,
272    #[prost(message, optional, tag = "4")]
273    pub cumulative_property: ::core::option::Option<PropertyCumulative>,
274    #[prost(message, optional, tag = "5")]
275    pub financial_property: ::core::option::Option<PropertyFinancial>,
276    #[prost(message, optional, tag = "6")]
277    pub indicator_property: ::core::option::Option<PropertyIndicator>,
278    #[prost(message, optional, tag = "7")]
279    pub featured_property: ::core::option::Option<PropertyFeatured>,
280    #[prost(message, optional, tag = "8")]
281    pub broker_property: ::core::option::Option<PropertyBroker>,
282}
283/// 客户端命令号:9010
284#[derive(Clone, PartialEq, ::prost::Message)]
285pub struct ScreenRequest {
286    /// 市场
287    #[prost(enumeration = "Market", required, tag = "1")]
288    pub market: i32,
289    /// 交易所过滤器
290    #[prost(uint64, repeated, packed = "false", tag = "2")]
291    pub exchanges: ::prost::alloc::vec::Vec<u64>,
292    /// 板块
293    #[prost(uint64, repeated, packed = "false", tag = "3")]
294    pub categories: ::prost::alloc::vec::Vec<u64>,
295    /// 自定义的股票名单列表
296    #[prost(uint64, repeated, packed = "false", tag = "11")]
297    pub watchlist_stock_ids: ::prost::alloc::vec::Vec<u64>,
298    /// 使用自选股
299    #[prost(bool, optional, tag = "12", default = "false")]
300    pub use_watchlist_stocks: ::core::option::Option<bool>,
301    /// 有关联adr标的(需要该条件筛选才设置)
302    #[prost(bool, optional, tag = "16")]
303    pub has_adr: ::core::option::Option<bool>,
304    /// 含期权标的(需要该条件筛选才设置)
305    #[prost(bool, optional, tag = "17")]
306    pub has_option: ::core::option::Option<bool>,
307    /// 含窝轮标的(需要该条件筛选才设置)
308    #[prost(bool, optional, tag = "18")]
309    pub has_warrant: ::core::option::Option<bool>,
310    /// 含期货标的(需要该条件筛选才设置)
311    #[prost(bool, optional, tag = "19")]
312    pub has_future: ::core::option::Option<bool>,
313    /// 有关联AH股的标的(需要该条件筛选才设置)
314    #[prost(bool, optional, tag = "20")]
315    pub has_ah_stock: ::core::option::Option<bool>,
316    /// 简单行情过滤器
317    #[prost(message, repeated, tag = "4")]
318    pub simple_property_queries: ::prost::alloc::vec::Vec<QueryPropertySimple>,
319    /// 累计值行情过滤器
320    #[prost(message, repeated, tag = "5")]
321    pub cumulative_property_queries: ::prost::alloc::vec::Vec<QueryPropertyCumulative>,
322    /// 财务指标过滤器
323    #[prost(message, repeated, tag = "6")]
324    pub financial_property_queries: ::prost::alloc::vec::Vec<QueryPropertyFinancial>,
325    /// 指标相对位置过滤器
326    #[prost(message, repeated, tag = "7")]
327    pub indicator_positional_queries: ::prost::alloc::vec::Vec<QueryIndicatorPositional>,
328    /// 形态过滤器
329    #[prost(message, repeated, tag = "8")]
330    pub indicator_pattern_queries: ::prost::alloc::vec::Vec<QueryIndicatorPattern>,
331    /// 特色指标过滤器
332    #[prost(message, repeated, tag = "13")]
333    pub featured_property_queries: ::prost::alloc::vec::Vec<QueryPropertyFeatured>,
334    /// 经纪商持股过滤器
335    #[prost(message, repeated, tag = "14")]
336    pub broker_holdings_queries: ::prost::alloc::vec::Vec<QueryPropertyBroker>,
337    /// K线形态过滤器
338    #[prost(message, repeated, tag = "15")]
339    pub kline_pattern_queries: ::prost::alloc::vec::Vec<QueryKlinePattern>,
340    /// 选出股票个数限制,不传代表不限制
341    #[prost(uint32, optional, tag = "9")]
342    pub limit: ::core::option::Option<u32>,
343    /// 排序字段
344    #[prost(message, optional, tag = "10")]
345    pub sort: ::core::option::Option<Sort>,
346}
347#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
348pub struct ScreenResponse {
349    #[prost(int32, required, tag = "1")]
350    pub result_code: i32,
351    #[prost(uint64, repeated, packed = "false", tag = "2")]
352    pub stock_ids: ::prost::alloc::vec::Vec<u64>,
353}
354/// 客户端命令号:9011
355#[derive(Clone, PartialEq, ::prost::Message)]
356pub struct RetrieveRequest {
357    #[prost(uint64, repeated, packed = "false", tag = "1")]
358    pub stock_ids: ::prost::alloc::vec::Vec<u64>,
359    #[prost(message, repeated, tag = "2")]
360    pub basic_properties: ::prost::alloc::vec::Vec<PropertyBasic>,
361    #[prost(message, repeated, tag = "3")]
362    pub simple_properties: ::prost::alloc::vec::Vec<PropertySimple>,
363    #[prost(message, repeated, tag = "4")]
364    pub cumulative_properties: ::prost::alloc::vec::Vec<PropertyCumulative>,
365    #[prost(message, repeated, tag = "5")]
366    pub financial_properties: ::prost::alloc::vec::Vec<PropertyFinancial>,
367    #[prost(message, repeated, tag = "6")]
368    pub indicator_properties: ::prost::alloc::vec::Vec<PropertyIndicator>,
369    #[prost(message, repeated, tag = "7")]
370    pub featured_properties: ::prost::alloc::vec::Vec<PropertyFeatured>,
371    #[prost(message, repeated, tag = "8")]
372    pub broker_properties: ::prost::alloc::vec::Vec<PropertyBroker>,
373}
374#[derive(Clone, PartialEq, ::prost::Message)]
375pub struct RetrieveResponse {
376    #[prost(int32, required, tag = "1")]
377    pub result_code: i32,
378    #[prost(message, repeated, tag = "2")]
379    pub items: ::prost::alloc::vec::Vec<retrieve_response::Item>,
380}
381/// Nested message and enum types in `RetrieveResponse`.
382pub mod retrieve_response {
383    #[derive(Clone, PartialEq, ::prost::Message)]
384    pub struct Item {
385        #[prost(uint64, required, tag = "1")]
386        pub stock_id: u64,
387        #[prost(message, repeated, tag = "2")]
388        pub basic_property_results: ::prost::alloc::vec::Vec<super::ResultPropertyBasic>,
389        #[prost(message, repeated, tag = "3")]
390        pub simple_property_results: ::prost::alloc::vec::Vec<
391            super::ResultPropertySimple,
392        >,
393        #[prost(message, repeated, tag = "4")]
394        pub cumulative_property_results: ::prost::alloc::vec::Vec<
395            super::ResultPropertyCumulative,
396        >,
397        #[prost(message, repeated, tag = "5")]
398        pub financial_property_results: ::prost::alloc::vec::Vec<
399            super::ResultPropertyFinancial,
400        >,
401        #[prost(message, repeated, tag = "6")]
402        pub indicator_property_results: ::prost::alloc::vec::Vec<
403            super::ResultPropertyIndicator,
404        >,
405        #[prost(message, repeated, tag = "7")]
406        pub featured_property_results: ::prost::alloc::vec::Vec<
407            super::ResultPropertyFeatured,
408        >,
409        #[prost(message, repeated, tag = "8")]
410        pub broker_property_results: ::prost::alloc::vec::Vec<
411            super::ResultPropertyBroker,
412        >,
413    }
414}
415/// 客户端命令字:9456
416#[derive(Clone, PartialEq, ::prost::Message)]
417pub struct ScreenAndRetrieveRequest {
418    /// 筛选查询过滤器(设置各个类型筛选条件过滤器)
419    #[prost(message, optional, tag = "1")]
420    pub screen_queries: ::core::option::Option<
421        screen_and_retrieve_request::ScreenQueries,
422    >,
423    /// 获取属性设置(获取各个类型字段数据属性的设置)
424    #[prost(message, optional, tag = "2")]
425    pub retrieve_properties: ::core::option::Option<
426        screen_and_retrieve_request::RetrieveProperties,
427    >,
428    /// 自定义的股票名单列表
429    #[prost(uint64, repeated, packed = "false", tag = "3")]
430    pub watchlist_stock_ids: ::prost::alloc::vec::Vec<u64>,
431    /// 使用自选股
432    #[prost(bool, optional, tag = "4")]
433    pub use_watchlist_stocks: ::core::option::Option<bool>,
434    /// 排序字段
435    #[prost(message, optional, tag = "5")]
436    pub sort: ::core::option::Option<Sort>,
437    /// 数据偏移位,从0开始
438    #[prost(int32, optional, tag = "6")]
439    pub data_from: ::core::option::Option<i32>,
440    /// 当前要拉取的最大数据量(最大100)
441    #[prost(int32, optional, tag = "7")]
442    pub data_max_count: ::core::option::Option<i32>,
443}
444/// Nested message and enum types in `ScreenAndRetrieveRequest`.
445pub mod screen_and_retrieve_request {
446    /// 筛选查询过滤器
447    #[derive(Clone, PartialEq, ::prost::Message)]
448    pub struct ScreenQueries {
449        /// 市场
450        #[prost(enumeration = "super::Market", optional, tag = "1")]
451        pub market: ::core::option::Option<i32>,
452        /// 交易所过滤器
453        #[prost(uint64, repeated, packed = "false", tag = "2")]
454        pub exchanges: ::prost::alloc::vec::Vec<u64>,
455        /// 板块
456        #[prost(uint64, repeated, packed = "false", tag = "3")]
457        pub categories: ::prost::alloc::vec::Vec<u64>,
458        /// 简单行情过滤器
459        #[prost(message, repeated, tag = "4")]
460        pub simple_property_queries: ::prost::alloc::vec::Vec<
461            super::QueryPropertySimple,
462        >,
463        /// 累计值行情过滤器
464        #[prost(message, repeated, tag = "5")]
465        pub cumulative_property_queries: ::prost::alloc::vec::Vec<
466            super::QueryPropertyCumulative,
467        >,
468        /// 财务指标过滤器
469        #[prost(message, repeated, tag = "6")]
470        pub financial_property_queries: ::prost::alloc::vec::Vec<
471            super::QueryPropertyFinancial,
472        >,
473        /// 指标相对位置过滤器
474        #[prost(message, repeated, tag = "7")]
475        pub indicator_positional_queries: ::prost::alloc::vec::Vec<
476            super::QueryIndicatorPositional,
477        >,
478        /// 形态过滤器
479        #[prost(message, repeated, tag = "8")]
480        pub indicator_pattern_queries: ::prost::alloc::vec::Vec<
481            super::QueryIndicatorPattern,
482        >,
483        /// 特色指标过滤器
484        #[prost(message, repeated, tag = "9")]
485        pub featured_property_queries: ::prost::alloc::vec::Vec<
486            super::QueryPropertyFeatured,
487        >,
488        /// 经纪商持股过滤器
489        #[prost(message, repeated, tag = "10")]
490        pub broker_holdings_queries: ::prost::alloc::vec::Vec<
491            super::QueryPropertyBroker,
492        >,
493        /// K线形态过滤器
494        #[prost(message, repeated, tag = "11")]
495        pub kline_pattern_queries: ::prost::alloc::vec::Vec<super::QueryKlinePattern>,
496        /// 有关联adr标的(需要该条件筛选才设置)
497        #[prost(bool, optional, tag = "12")]
498        pub has_adr: ::core::option::Option<bool>,
499        /// 含期权标的(需要该条件筛选才设置)
500        #[prost(bool, optional, tag = "13")]
501        pub has_option: ::core::option::Option<bool>,
502        /// 含窝轮标的(需要改条件筛选才设置)
503        #[prost(bool, optional, tag = "14")]
504        pub has_warrant: ::core::option::Option<bool>,
505        /// 含期货标的(需要该条件筛选才设置)
506        #[prost(bool, optional, tag = "15")]
507        pub has_future: ::core::option::Option<bool>,
508        /// 有关联AH股的标的(需要该条件筛选才设置)
509        #[prost(bool, optional, tag = "16")]
510        pub has_ah_stock: ::core::option::Option<bool>,
511    }
512    /// 获取属性设置
513    #[derive(Clone, PartialEq, ::prost::Message)]
514    pub struct RetrieveProperties {
515        /// 获取基本行情属性设置
516        #[prost(message, repeated, tag = "1")]
517        pub basic_properties: ::prost::alloc::vec::Vec<super::PropertyBasic>,
518        /// 获取简单行情属性设置
519        #[prost(message, repeated, tag = "2")]
520        pub simple_properties: ::prost::alloc::vec::Vec<super::PropertySimple>,
521        /// 获取累积值行情属性设置
522        #[prost(message, repeated, tag = "3")]
523        pub cumulative_properties: ::prost::alloc::vec::Vec<super::PropertyCumulative>,
524        /// 获取财务指标属性设置
525        #[prost(message, repeated, tag = "4")]
526        pub financial_properties: ::prost::alloc::vec::Vec<super::PropertyFinancial>,
527        /// 获取技术指标属性设置
528        #[prost(message, repeated, tag = "5")]
529        pub indicator_properties: ::prost::alloc::vec::Vec<super::PropertyIndicator>,
530        /// 获取特色指标属性设置
531        #[prost(message, repeated, tag = "6")]
532        pub featured_properties: ::prost::alloc::vec::Vec<super::PropertyFeatured>,
533        /// 获取经纪商持股数据设置
534        #[prost(message, repeated, tag = "7")]
535        pub broker_properties: ::prost::alloc::vec::Vec<super::PropertyBroker>,
536    }
537}
538#[derive(Clone, PartialEq, ::prost::Message)]
539pub struct ScreenAndRetrieveResponse {
540    /// 返回码 0 成功,其他失败
541    #[prost(int32, optional, tag = "1")]
542    pub result_code: ::core::option::Option<i32>,
543    /// 数据列表
544    #[prost(message, repeated, tag = "2")]
545    pub items: ::prost::alloc::vec::Vec<screen_and_retrieve_response::Item>,
546    /// 是否最后一页
547    #[prost(bool, optional, tag = "3")]
548    pub if_last_page: ::core::option::Option<bool>,
549    /// 数据总量
550    #[prost(int32, optional, tag = "4")]
551    pub all_count: ::core::option::Option<i32>,
552}
553/// Nested message and enum types in `ScreenAndRetrieveResponse`.
554pub mod screen_and_retrieve_response {
555    #[derive(Clone, PartialEq, ::prost::Message)]
556    pub struct Item {
557        /// 股票ID
558        #[prost(uint64, optional, tag = "1")]
559        pub stock_id: ::core::option::Option<u64>,
560        /// 基本行情属性数据
561        #[prost(message, repeated, tag = "2")]
562        pub basic_property_results: ::prost::alloc::vec::Vec<super::ResultPropertyBasic>,
563        /// 简单行情属性数据
564        #[prost(message, repeated, tag = "3")]
565        pub simple_property_results: ::prost::alloc::vec::Vec<
566            super::ResultPropertySimple,
567        >,
568        /// 累积值行情属性数据
569        #[prost(message, repeated, tag = "4")]
570        pub cumulative_property_results: ::prost::alloc::vec::Vec<
571            super::ResultPropertyCumulative,
572        >,
573        /// 财务指标属性数据
574        #[prost(message, repeated, tag = "5")]
575        pub financial_property_results: ::prost::alloc::vec::Vec<
576            super::ResultPropertyFinancial,
577        >,
578        /// 技术指标属性数据
579        #[prost(message, repeated, tag = "6")]
580        pub indicator_property_results: ::prost::alloc::vec::Vec<
581            super::ResultPropertyIndicator,
582        >,
583        /// 特色指标属性数据
584        #[prost(message, repeated, tag = "7")]
585        pub featured_property_results: ::prost::alloc::vec::Vec<
586            super::ResultPropertyFeatured,
587        >,
588        /// 经纪商持股属性数据
589        #[prost(message, repeated, tag = "8")]
590        pub broker_property_results: ::prost::alloc::vec::Vec<
591            super::ResultPropertyBroker,
592        >,
593    }
594}
595/// -----------------"load/save" Interface-----------------
596#[derive(Clone, PartialEq, ::prost::Message)]
597pub struct Strategy {
598    /// 策略ID -- uuid
599    #[prost(string, optional, tag = "1")]
600    pub id: ::core::option::Option<::prost::alloc::string::String>,
601    /// 策略名称
602    #[prost(string, required, tag = "2")]
603    pub name: ::prost::alloc::string::String,
604    /// 策略细则
605    #[prost(message, required, tag = "3")]
606    pub detail: strategy::Detail,
607    /// 创建时间
608    #[prost(uint32, optional, tag = "4")]
609    pub created_time: ::core::option::Option<u32>,
610    /// 修改时间
611    #[prost(uint32, optional, tag = "5")]
612    pub modified_time: ::core::option::Option<u32>,
613}
614/// Nested message and enum types in `Strategy`.
615pub mod strategy {
616    #[derive(Clone, PartialEq, ::prost::Message)]
617    pub struct Detail {
618        /// 市场
619        #[prost(enumeration = "super::Market", optional, tag = "1")]
620        pub market: ::core::option::Option<i32>,
621        /// 交易所过滤器
622        #[prost(uint64, repeated, packed = "false", tag = "2")]
623        pub exchanges: ::prost::alloc::vec::Vec<u64>,
624        /// 板块
625        #[prost(uint64, repeated, packed = "false", tag = "3")]
626        pub categories: ::prost::alloc::vec::Vec<u64>,
627        /// 使用自选股 \[新版客户端必须上报此字段,不可不传表示false\]
628        #[prost(bool, optional, tag = "9")]
629        pub use_watchlist_stocks: ::core::option::Option<bool>,
630        /// 简单行情过滤器
631        #[prost(message, repeated, tag = "4")]
632        pub simple_property_queries: ::prost::alloc::vec::Vec<
633            super::QueryPropertySimple,
634        >,
635        /// 累计值行情过滤器
636        #[prost(message, repeated, tag = "5")]
637        pub cumulative_property_queries: ::prost::alloc::vec::Vec<
638            super::QueryPropertyCumulative,
639        >,
640        /// 财务指标过滤器
641        #[prost(message, repeated, tag = "6")]
642        pub financial_property_queries: ::prost::alloc::vec::Vec<
643            super::QueryPropertyFinancial,
644        >,
645        /// 指标相对位置过滤器
646        #[prost(message, repeated, tag = "7")]
647        pub indicator_positional_queries: ::prost::alloc::vec::Vec<
648            super::QueryIndicatorPositional,
649        >,
650        /// 形态过滤器
651        #[prost(message, repeated, tag = "8")]
652        pub indicator_pattern_queries: ::prost::alloc::vec::Vec<
653            super::QueryIndicatorPattern,
654        >,
655        /// 特色指标过滤器
656        #[prost(message, repeated, tag = "10")]
657        pub featured_property_queries: ::prost::alloc::vec::Vec<
658            super::QueryPropertyFeatured,
659        >,
660        /// 经纪商持股过滤器
661        #[prost(message, repeated, tag = "11")]
662        pub broker_holdings_queries: ::prost::alloc::vec::Vec<
663            super::QueryPropertyBroker,
664        >,
665        /// K线形态过滤器
666        #[prost(message, repeated, tag = "12")]
667        pub kline_pattern_queries: ::prost::alloc::vec::Vec<super::QueryKlinePattern>,
668        /// 有关联adr标的(需要该条件筛选才设置)
669        #[prost(bool, optional, tag = "13")]
670        pub has_adr: ::core::option::Option<bool>,
671        /// 含期权标的(需要该条件筛选才设置)
672        #[prost(bool, optional, tag = "14")]
673        pub has_option: ::core::option::Option<bool>,
674        /// 含窝轮标的(需要该条件筛选才设置)
675        #[prost(bool, optional, tag = "15")]
676        pub has_warrant: ::core::option::Option<bool>,
677        /// 含期货标的(需要该条件筛选才设置)
678        #[prost(bool, optional, tag = "16")]
679        pub has_future: ::core::option::Option<bool>,
680        /// 有关联AH股的标的(需要该条件筛选才设置)
681        #[prost(bool, optional, tag = "17")]
682        pub has_ah_stock: ::core::option::Option<bool>,
683    }
684}
685/// 客户端命令号: 9013
686#[derive(Clone, PartialEq, ::prost::Message)]
687pub struct SaveRequest {
688    /// 保存策略请求
689    #[prost(message, required, tag = "1")]
690    pub strategy: Strategy,
691    /// 版本控制,说明:1. 每一次升级协议版本Server侧务必要更新default值,2.客户端不要自行设置此值
692    #[prost(uint32, optional, tag = "2", default = "1")]
693    pub version: ::core::option::Option<u32>,
694}
695#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
696pub struct SaveResponse {
697    #[prost(int32, required, tag = "1")]
698    pub result_code: i32,
699    /// 保存下来的策略ID(当result_code = SUCCESS时有)
700    #[prost(string, optional, tag = "2")]
701    pub strategy_id: ::core::option::Option<::prost::alloc::string::String>,
702}
703/// 客户端命令号: 9014
704#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
705pub struct RemoveRequest {
706    /// 策略ID
707    #[prost(string, required, tag = "1")]
708    pub strategy_id: ::prost::alloc::string::String,
709}
710#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
711pub struct RemoveResponse {
712    #[prost(int32, required, tag = "1")]
713    pub result_code: i32,
714}
715/// 客户端命令号: 9012
716#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
717pub struct LoadRequest {
718    /// 客户端缓存的sequence
719    #[prost(uint32, optional, tag = "1")]
720    pub sequence: ::core::option::Option<u32>,
721}
722#[derive(Clone, PartialEq, ::prost::Message)]
723pub struct LoadResponse {
724    #[prost(int32, required, tag = "1")]
725    pub result_code: i32,
726    /// 客户端数据是否过期
727    #[prost(bool, optional, tag = "2")]
728    pub expired: ::core::option::Option<bool>,
729    /// 服务端的sequence(expired = true时存在)
730    #[prost(uint32, optional, tag = "3")]
731    pub sequence: ::core::option::Option<u32>,
732    /// 策略列表(expired = true时存在)
733    #[prost(message, repeated, tag = "4")]
734    pub strategies: ::prost::alloc::vec::Vec<Strategy>,
735}
736/// -----------------Common Definitions-----------------
737#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
738#[repr(i32)]
739pub enum Market {
740    /// 未知
741    MktUnknown = 0,
742    /// 港股
743    MktHk = 1,
744    /// 美股
745    MktUs = 2,
746    /// A股
747    MktCn = 3,
748    /// 新加坡股票
749    MktSg = 4,
750    /// 加拿大股票
751    MktCa = 5,
752    /// 澳大利亚股票
753    MktAu = 6,
754}
755impl Market {
756    /// String value of the enum field names used in the ProtoBuf definition.
757    ///
758    /// The values are not transformed in any way and thus are considered stable
759    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
760    pub fn as_str_name(&self) -> &'static str {
761        match self {
762            Self::MktUnknown => "MKT_UNKNOWN",
763            Self::MktHk => "MKT_HK",
764            Self::MktUs => "MKT_US",
765            Self::MktCn => "MKT_CN",
766            Self::MktSg => "MKT_SG",
767            Self::MktCa => "MKT_CA",
768            Self::MktAu => "MKT_AU",
769        }
770    }
771    /// Creates an enum from field names used in the ProtoBuf definition.
772    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
773        match value {
774            "MKT_UNKNOWN" => Some(Self::MktUnknown),
775            "MKT_HK" => Some(Self::MktHk),
776            "MKT_US" => Some(Self::MktUs),
777            "MKT_CN" => Some(Self::MktCn),
778            "MKT_SG" => Some(Self::MktSg),
779            "MKT_CA" => Some(Self::MktCa),
780            "MKT_AU" => Some(Self::MktAu),
781            _ => None,
782        }
783    }
784}
785#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
786#[repr(i32)]
787pub enum ResultCode {
788    /// 服务器内部错误
789    ServerFault = -100,
790    /// 请求数据错误
791    BadRequest = -99,
792    /// 成功
793    Success = 0,
794}
795impl ResultCode {
796    /// String value of the enum field names used in the ProtoBuf definition.
797    ///
798    /// The values are not transformed in any way and thus are considered stable
799    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
800    pub fn as_str_name(&self) -> &'static str {
801        match self {
802            Self::ServerFault => "RESULT_CODE_SERVER_FAULT",
803            Self::BadRequest => "RESULT_CODE_BAD_REQUEST",
804            Self::Success => "RESULT_CODE_SUCCESS",
805        }
806    }
807    /// Creates an enum from field names used in the ProtoBuf definition.
808    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
809        match value {
810            "RESULT_CODE_SERVER_FAULT" => Some(Self::ServerFault),
811            "RESULT_CODE_BAD_REQUEST" => Some(Self::BadRequest),
812            "RESULT_CODE_SUCCESS" => Some(Self::Success),
813            _ => None,
814        }
815    }
816}
817#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
818#[repr(i32)]
819pub enum Term {
820    /// 未知
821    Unknown = 0,
822    /// Q1报
823    Q1 = 1,
824    /// Q2报
825    Q2 = 2,
826    /// Q3报
827    Q3 = 3,
828    /// Q4报
829    Q4 = 4,
830    /// 中报(累积报)
831    Q6 = 6,
832    /// 三季报(累积报)
833    Q9 = 9,
834    /// 最新单季报
835    QLatest = 10,
836    /// 年报FY
837    Annual = 100,
838}
839impl Term {
840    /// String value of the enum field names used in the ProtoBuf definition.
841    ///
842    /// The values are not transformed in any way and thus are considered stable
843    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
844    pub fn as_str_name(&self) -> &'static str {
845        match self {
846            Self::Unknown => "TERM_UNKNOWN",
847            Self::Q1 => "TERM_Q1",
848            Self::Q2 => "TERM_Q2",
849            Self::Q3 => "TERM_Q3",
850            Self::Q4 => "TERM_Q4",
851            Self::Q6 => "TERM_Q6",
852            Self::Q9 => "TERM_Q9",
853            Self::QLatest => "TERM_Q_LATEST",
854            Self::Annual => "TERM_ANNUAL",
855        }
856    }
857    /// Creates an enum from field names used in the ProtoBuf definition.
858    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
859        match value {
860            "TERM_UNKNOWN" => Some(Self::Unknown),
861            "TERM_Q1" => Some(Self::Q1),
862            "TERM_Q2" => Some(Self::Q2),
863            "TERM_Q3" => Some(Self::Q3),
864            "TERM_Q4" => Some(Self::Q4),
865            "TERM_Q6" => Some(Self::Q6),
866            "TERM_Q9" => Some(Self::Q9),
867            "TERM_Q_LATEST" => Some(Self::QLatest),
868            "TERM_ANNUAL" => Some(Self::Annual),
869            _ => None,
870        }
871    }
872}
873/// K线周期
874#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
875#[repr(i32)]
876pub enum Period {
877    /// 未知
878    Unknown = 0,
879    /// 1分钟
880    Minute1 = 1,
881    /// 1小时
882    Hour1 = 5,
883    /// 1日
884    Day1 = 11,
885    /// 1周
886    Week1 = 21,
887    /// 1月
888    Month1 = 31,
889}
890impl Period {
891    /// String value of the enum field names used in the ProtoBuf definition.
892    ///
893    /// The values are not transformed in any way and thus are considered stable
894    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
895    pub fn as_str_name(&self) -> &'static str {
896        match self {
897            Self::Unknown => "PERIOD_UNKNOWN",
898            Self::Minute1 => "PERIOD_MINUTE_1",
899            Self::Hour1 => "PERIOD_HOUR_1",
900            Self::Day1 => "PERIOD_DAY_1",
901            Self::Week1 => "PERIOD_WEEK_1",
902            Self::Month1 => "PERIOD_MONTH_1",
903        }
904    }
905    /// Creates an enum from field names used in the ProtoBuf definition.
906    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
907        match value {
908            "PERIOD_UNKNOWN" => Some(Self::Unknown),
909            "PERIOD_MINUTE_1" => Some(Self::Minute1),
910            "PERIOD_HOUR_1" => Some(Self::Hour1),
911            "PERIOD_DAY_1" => Some(Self::Day1),
912            "PERIOD_WEEK_1" => Some(Self::Week1),
913            "PERIOD_MONTH_1" => Some(Self::Month1),
914            _ => None,
915        }
916    }
917}
918/// 范围周期
919#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
920#[repr(i32)]
921pub enum RangePeriod {
922    /// 用于估值分析
923    ///
924    /// 近3月
925    RangeThreeMonths = 1,
926    /// 近6月
927    RangeSixMonths = 2,
928    /// 近1年
929    RangeOneYear = 3,
930    /// 近3年
931    RangeThreeYears = 4,
932}
933impl RangePeriod {
934    /// String value of the enum field names used in the ProtoBuf definition.
935    ///
936    /// The values are not transformed in any way and thus are considered stable
937    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
938    pub fn as_str_name(&self) -> &'static str {
939        match self {
940            Self::RangeThreeMonths => "RANGE_THREE_MONTHS",
941            Self::RangeSixMonths => "RANGE_SIX_MONTHS",
942            Self::RangeOneYear => "RANGE_ONE_YEAR",
943            Self::RangeThreeYears => "RANGE_THREE_YEARS",
944        }
945    }
946    /// Creates an enum from field names used in the ProtoBuf definition.
947    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
948        match value {
949            "RANGE_THREE_MONTHS" => Some(Self::RangeThreeMonths),
950            "RANGE_SIX_MONTHS" => Some(Self::RangeSixMonths),
951            "RANGE_ONE_YEAR" => Some(Self::RangeOneYear),
952            "RANGE_THREE_YEARS" => Some(Self::RangeThreeYears),
953            _ => None,
954        }
955    }
956}
957/// -----------------PropertyName Definitions-----------------
958#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
959#[repr(i32)]
960pub enum PropertyNameBasic {
961    PropertyBasicUnknown = 0,
962    /// 股票代码
963    PropertyBasicInfoCode = 1101,
964    /// 股票名称
965    PropertyBasicInfoName = 1102,
966    /// 所属行业
967    PropertyBasicInfoIndustry = 1103,
968}
969impl PropertyNameBasic {
970    /// String value of the enum field names used in the ProtoBuf definition.
971    ///
972    /// The values are not transformed in any way and thus are considered stable
973    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
974    pub fn as_str_name(&self) -> &'static str {
975        match self {
976            Self::PropertyBasicUnknown => "PROPERTY_BASIC_UNKNOWN",
977            Self::PropertyBasicInfoCode => "PROPERTY_BASIC_INFO_CODE",
978            Self::PropertyBasicInfoName => "PROPERTY_BASIC_INFO_NAME",
979            Self::PropertyBasicInfoIndustry => "PROPERTY_BASIC_INFO_INDUSTRY",
980        }
981    }
982    /// Creates an enum from field names used in the ProtoBuf definition.
983    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
984        match value {
985            "PROPERTY_BASIC_UNKNOWN" => Some(Self::PropertyBasicUnknown),
986            "PROPERTY_BASIC_INFO_CODE" => Some(Self::PropertyBasicInfoCode),
987            "PROPERTY_BASIC_INFO_NAME" => Some(Self::PropertyBasicInfoName),
988            "PROPERTY_BASIC_INFO_INDUSTRY" => Some(Self::PropertyBasicInfoIndustry),
989            _ => None,
990        }
991    }
992}
993#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
994#[repr(i32)]
995pub enum PropertyNameSimple {
996    /// 未知
997    PropertySimpleUnknown = 0,
998    /// 是否允许融资 (0 = 不允许,1 = 允许)
999    PropertySimpleBusinessLongMarginAllowed = 2101,
1000    /// 融资抵押率 (单位:0.001% 倍率:100000)
1001    PropertySimpleBusinessLongMarginMortgageRate = 2102,
1002    /// 是否允许融券 (0 = 不允许,1 = 允许)
1003    PropertySimpleBusinessShortMarginAllowed = 2103,
1004    /// 融券利息率 (单位:0.0001% 倍率:1000000)
1005    PropertySimpleBusinessShortMarginInterestRate = 2104,
1006    /// 融资保证金率 (单位:0.001% 倍率:100000)
1007    PropertySimpleBusinessLongMarginBailRate = 2105,
1008    /// 融券保证金率 (单位:0.001% 倍率:100000)
1009    PropertySimpleBusinessShortMarginBailRate = 2106,
1010    /// 最新价格 (单位:0.001元 倍率:1000)
1011    PropertySimpleQuotePrice = 2201,
1012    /// 今开价 (单位:0.001元 倍率:1000)
1013    PropertySimpleQuotePriceTodayOpen = 2202,
1014    /// 昨收价 (单位:0.001元 倍率:1000)
1015    PropertySimpleQuotePriceLastClose = 2203,
1016    /// 今最高价 (单位:0.001元 倍率:1000)
1017    PropertySimpleQuotePriceTodayHigh = 2204,
1018    /// 今最低价 (单位:0.001元 倍率:1000)
1019    PropertySimpleQuotePriceTodayLow = 2205,
1020    /// 涨跌速率 (单位:0.001% 倍率:100000)
1021    PropertySimpleQuotePriceChangeRate = 2206,
1022    /// 买入价 (单位:0.001元 倍率:1000)
1023    PropertySimpleQuotePriceBid = 2207,
1024    /// 卖出价 (单位:0.001元 倍率:1000)
1025    PropertySimpleQuotePriceAsk = 2208,
1026    /// (现价 - 52周最高)/52周最高 (单位:0.001% 倍率:100000)
1027    PropertySimpleQuotePriceTo52weekHighRatio = 2209,
1028    /// (现价 - 52周最低)/52周最低 (单位:0.001% 倍率:100000)
1029    PropertySimpleQuotePriceTo52weekLowRatio = 2210,
1030    /// (今日最高 - 52周最高)/52周最高 (单位:0.001% 倍率:100000)
1031    PropertySimpleQuotePriceTodayHighTo52weekHighRatio = 2211,
1032    /// (今日最低 - 52周最低)/52周最低 (单位:0.001% 倍率:100000)
1033    PropertySimpleQuotePriceTodayLowTo52weekLowRatio = 2212,
1034    /// 五分钟价格涨跌幅 (单位:0.001% 倍率:100000)
1035    PropertySimpleQuotePriceChangeIn5min = 2213,
1036    /// 年初至今价格涨跌幅 (单位:0.001% 倍率:100000)
1037    PropertySimpleQuotePriceChangeFromBeginningOfThisYear = 2214,
1038    /// 买入量 (单位:1股 倍率:1)
1039    PropertySimpleQuoteVolumeBid = 2215,
1040    /// 买入量 (单位:1股 倍率:1)
1041    PropertySimpleQuoteVolumeAsk = 2216,
1042    /// 量比 (单位:0.001% 倍率:100000)
1043    PropertySimpleQuoteVolumeRatio = 2217,
1044    /// 委比 (单位:0.001% 倍率:10000000)
1045    PropertySimpleQuoteBidAskRatio = 2218,
1046    /// 每手价格 (单位:0.001元 倍率:1000)
1047    PropertySimpleQuoteLotPrice = 2219,
1048    /// 市值 (单位:0.001元 倍率:1000)
1049    PropertySimpleInfoMarketCapital = 2301,
1050    /// 年化(静态)市盈率 (单位:0.001% 倍率:100000)
1051    PropertySimpleInfoPeAnnual = 2302,
1052    /// TTM市盈率 (单位:0.001% 倍率:100000)
1053    PropertySimpleInfoPeTtm = 2303,
1054    /// 市净率 (单位:0.001% 倍率:100000)
1055    PropertySimpleInfoPb = 2304,
1056    /// 股息率 (单位:0.001% 倍率:100000)
1057    PropertySimpleInfoDividendRatio = 2305,
1058    /// 上市时间(时间戳)
1059    PropertySimpleInfoListedDate = 2306,
1060    /// 上市天数(单位:1,倍率: 1)
1061    PropertySimpleInfoListedDays = 2307,
1062    /// 盘前盘后数据
1063    ///
1064    /// 盘前价格(单位:0.001元 倍率:1000)
1065    PropertySimpleQuoteBeforePrice = 2401,
1066    /// 盘前涨跌额(单位:0.001元 倍率:1000)
1067    PropertySimpleQuoteBeforePriceChange = 2402,
1068    /// 盘前涨跌幅(单位:0.001% 倍率:100000)
1069    PropertySimpleQuoteBeforePriceChangePercentage = 2403,
1070    /// 盘前成交量(单位:1股 倍率:1)
1071    PropertySimpleQuoteBeforeVolume = 2404,
1072    /// 盘前成交额(单位:0.001元 倍率:1000)
1073    PropertySimpleQuoteBeforeTurnover = 2405,
1074    /// 盘后价格(单位:0.001元 倍率:1000)
1075    PropertySimpleQuoteAfterPrice = 2406,
1076    /// 盘后涨跌额(单位:0.001元 倍率:1000)
1077    PropertySimpleQuoteAfterPriceChange = 2407,
1078    /// 盘后涨跌幅(单位:0.001% 倍率:100000)
1079    PropertySimpleQuoteAfterPriceChangePercentage = 2408,
1080    /// 盘后成交量(单位:1股 倍率:1)
1081    PropertySimpleQuoteAfterVolume = 2409,
1082    /// 盘后成交额(单位:0.001元 倍率:1000)
1083    PropertySimpleQuoteAfterTurnover = 2410,
1084}
1085impl PropertyNameSimple {
1086    /// String value of the enum field names used in the ProtoBuf definition.
1087    ///
1088    /// The values are not transformed in any way and thus are considered stable
1089    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1090    pub fn as_str_name(&self) -> &'static str {
1091        match self {
1092            Self::PropertySimpleUnknown => "PROPERTY_SIMPLE_UNKNOWN",
1093            Self::PropertySimpleBusinessLongMarginAllowed => {
1094                "PROPERTY_SIMPLE_BUSINESS_LONG_MARGIN_ALLOWED"
1095            }
1096            Self::PropertySimpleBusinessLongMarginMortgageRate => {
1097                "PROPERTY_SIMPLE_BUSINESS_LONG_MARGIN_MORTGAGE_RATE"
1098            }
1099            Self::PropertySimpleBusinessShortMarginAllowed => {
1100                "PROPERTY_SIMPLE_BUSINESS_SHORT_MARGIN_ALLOWED"
1101            }
1102            Self::PropertySimpleBusinessShortMarginInterestRate => {
1103                "PROPERTY_SIMPLE_BUSINESS_SHORT_MARGIN_INTEREST_RATE"
1104            }
1105            Self::PropertySimpleBusinessLongMarginBailRate => {
1106                "PROPERTY_SIMPLE_BUSINESS_LONG_MARGIN_BAIL_RATE"
1107            }
1108            Self::PropertySimpleBusinessShortMarginBailRate => {
1109                "PROPERTY_SIMPLE_BUSINESS_SHORT_MARGIN_BAIL_RATE"
1110            }
1111            Self::PropertySimpleQuotePrice => "PROPERTY_SIMPLE_QUOTE_PRICE",
1112            Self::PropertySimpleQuotePriceTodayOpen => {
1113                "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_OPEN"
1114            }
1115            Self::PropertySimpleQuotePriceLastClose => {
1116                "PROPERTY_SIMPLE_QUOTE_PRICE_LAST_CLOSE"
1117            }
1118            Self::PropertySimpleQuotePriceTodayHigh => {
1119                "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_HIGH"
1120            }
1121            Self::PropertySimpleQuotePriceTodayLow => {
1122                "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_LOW"
1123            }
1124            Self::PropertySimpleQuotePriceChangeRate => {
1125                "PROPERTY_SIMPLE_QUOTE_PRICE_CHANGE_RATE"
1126            }
1127            Self::PropertySimpleQuotePriceBid => "PROPERTY_SIMPLE_QUOTE_PRICE_BID",
1128            Self::PropertySimpleQuotePriceAsk => "PROPERTY_SIMPLE_QUOTE_PRICE_ASK",
1129            Self::PropertySimpleQuotePriceTo52weekHighRatio => {
1130                "PROPERTY_SIMPLE_QUOTE_PRICE_TO_52WEEK_HIGH_RATIO"
1131            }
1132            Self::PropertySimpleQuotePriceTo52weekLowRatio => {
1133                "PROPERTY_SIMPLE_QUOTE_PRICE_TO_52WEEK_LOW_RATIO"
1134            }
1135            Self::PropertySimpleQuotePriceTodayHighTo52weekHighRatio => {
1136                "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_HIGH_TO_52WEEK_HIGH_RATIO"
1137            }
1138            Self::PropertySimpleQuotePriceTodayLowTo52weekLowRatio => {
1139                "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_LOW_TO_52WEEK_LOW_RATIO"
1140            }
1141            Self::PropertySimpleQuotePriceChangeIn5min => {
1142                "PROPERTY_SIMPLE_QUOTE_PRICE_CHANGE_IN_5MIN"
1143            }
1144            Self::PropertySimpleQuotePriceChangeFromBeginningOfThisYear => {
1145                "PROPERTY_SIMPLE_QUOTE_PRICE_CHANGE_FROM_BEGINNING_OF_THIS_YEAR"
1146            }
1147            Self::PropertySimpleQuoteVolumeBid => "PROPERTY_SIMPLE_QUOTE_VOLUME_BID",
1148            Self::PropertySimpleQuoteVolumeAsk => "PROPERTY_SIMPLE_QUOTE_VOLUME_ASK",
1149            Self::PropertySimpleQuoteVolumeRatio => "PROPERTY_SIMPLE_QUOTE_VOLUME_RATIO",
1150            Self::PropertySimpleQuoteBidAskRatio => "PROPERTY_SIMPLE_QUOTE_BID_ASK_RATIO",
1151            Self::PropertySimpleQuoteLotPrice => "PROPERTY_SIMPLE_QUOTE_LOT_PRICE",
1152            Self::PropertySimpleInfoMarketCapital => {
1153                "PROPERTY_SIMPLE_INFO_MARKET_CAPITAL"
1154            }
1155            Self::PropertySimpleInfoPeAnnual => "PROPERTY_SIMPLE_INFO_PE_ANNUAL",
1156            Self::PropertySimpleInfoPeTtm => "PROPERTY_SIMPLE_INFO_PE_TTM",
1157            Self::PropertySimpleInfoPb => "PROPERTY_SIMPLE_INFO_PB",
1158            Self::PropertySimpleInfoDividendRatio => {
1159                "PROPERTY_SIMPLE_INFO_DIVIDEND_RATIO"
1160            }
1161            Self::PropertySimpleInfoListedDate => "PROPERTY_SIMPLE_INFO_LISTED_DATE",
1162            Self::PropertySimpleInfoListedDays => "PROPERTY_SIMPLE_INFO_LISTED_DAYS",
1163            Self::PropertySimpleQuoteBeforePrice => "PROPERTY_SIMPLE_QUOTE_BEFORE_PRICE",
1164            Self::PropertySimpleQuoteBeforePriceChange => {
1165                "PROPERTY_SIMPLE_QUOTE_BEFORE_PRICE_CHANGE"
1166            }
1167            Self::PropertySimpleQuoteBeforePriceChangePercentage => {
1168                "PROPERTY_SIMPLE_QUOTE_BEFORE_PRICE_CHANGE_PERCENTAGE"
1169            }
1170            Self::PropertySimpleQuoteBeforeVolume => {
1171                "PROPERTY_SIMPLE_QUOTE_BEFORE_VOLUME"
1172            }
1173            Self::PropertySimpleQuoteBeforeTurnover => {
1174                "PROPERTY_SIMPLE_QUOTE_BEFORE_TURNOVER"
1175            }
1176            Self::PropertySimpleQuoteAfterPrice => "PROPERTY_SIMPLE_QUOTE_AFTER_PRICE",
1177            Self::PropertySimpleQuoteAfterPriceChange => {
1178                "PROPERTY_SIMPLE_QUOTE_AFTER_PRICE_CHANGE"
1179            }
1180            Self::PropertySimpleQuoteAfterPriceChangePercentage => {
1181                "PROPERTY_SIMPLE_QUOTE_AFTER_PRICE_CHANGE_PERCENTAGE"
1182            }
1183            Self::PropertySimpleQuoteAfterVolume => "PROPERTY_SIMPLE_QUOTE_AFTER_VOLUME",
1184            Self::PropertySimpleQuoteAfterTurnover => {
1185                "PROPERTY_SIMPLE_QUOTE_AFTER_TURNOVER"
1186            }
1187        }
1188    }
1189    /// Creates an enum from field names used in the ProtoBuf definition.
1190    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1191        match value {
1192            "PROPERTY_SIMPLE_UNKNOWN" => Some(Self::PropertySimpleUnknown),
1193            "PROPERTY_SIMPLE_BUSINESS_LONG_MARGIN_ALLOWED" => {
1194                Some(Self::PropertySimpleBusinessLongMarginAllowed)
1195            }
1196            "PROPERTY_SIMPLE_BUSINESS_LONG_MARGIN_MORTGAGE_RATE" => {
1197                Some(Self::PropertySimpleBusinessLongMarginMortgageRate)
1198            }
1199            "PROPERTY_SIMPLE_BUSINESS_SHORT_MARGIN_ALLOWED" => {
1200                Some(Self::PropertySimpleBusinessShortMarginAllowed)
1201            }
1202            "PROPERTY_SIMPLE_BUSINESS_SHORT_MARGIN_INTEREST_RATE" => {
1203                Some(Self::PropertySimpleBusinessShortMarginInterestRate)
1204            }
1205            "PROPERTY_SIMPLE_BUSINESS_LONG_MARGIN_BAIL_RATE" => {
1206                Some(Self::PropertySimpleBusinessLongMarginBailRate)
1207            }
1208            "PROPERTY_SIMPLE_BUSINESS_SHORT_MARGIN_BAIL_RATE" => {
1209                Some(Self::PropertySimpleBusinessShortMarginBailRate)
1210            }
1211            "PROPERTY_SIMPLE_QUOTE_PRICE" => Some(Self::PropertySimpleQuotePrice),
1212            "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_OPEN" => {
1213                Some(Self::PropertySimpleQuotePriceTodayOpen)
1214            }
1215            "PROPERTY_SIMPLE_QUOTE_PRICE_LAST_CLOSE" => {
1216                Some(Self::PropertySimpleQuotePriceLastClose)
1217            }
1218            "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_HIGH" => {
1219                Some(Self::PropertySimpleQuotePriceTodayHigh)
1220            }
1221            "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_LOW" => {
1222                Some(Self::PropertySimpleQuotePriceTodayLow)
1223            }
1224            "PROPERTY_SIMPLE_QUOTE_PRICE_CHANGE_RATE" => {
1225                Some(Self::PropertySimpleQuotePriceChangeRate)
1226            }
1227            "PROPERTY_SIMPLE_QUOTE_PRICE_BID" => Some(Self::PropertySimpleQuotePriceBid),
1228            "PROPERTY_SIMPLE_QUOTE_PRICE_ASK" => Some(Self::PropertySimpleQuotePriceAsk),
1229            "PROPERTY_SIMPLE_QUOTE_PRICE_TO_52WEEK_HIGH_RATIO" => {
1230                Some(Self::PropertySimpleQuotePriceTo52weekHighRatio)
1231            }
1232            "PROPERTY_SIMPLE_QUOTE_PRICE_TO_52WEEK_LOW_RATIO" => {
1233                Some(Self::PropertySimpleQuotePriceTo52weekLowRatio)
1234            }
1235            "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_HIGH_TO_52WEEK_HIGH_RATIO" => {
1236                Some(Self::PropertySimpleQuotePriceTodayHighTo52weekHighRatio)
1237            }
1238            "PROPERTY_SIMPLE_QUOTE_PRICE_TODAY_LOW_TO_52WEEK_LOW_RATIO" => {
1239                Some(Self::PropertySimpleQuotePriceTodayLowTo52weekLowRatio)
1240            }
1241            "PROPERTY_SIMPLE_QUOTE_PRICE_CHANGE_IN_5MIN" => {
1242                Some(Self::PropertySimpleQuotePriceChangeIn5min)
1243            }
1244            "PROPERTY_SIMPLE_QUOTE_PRICE_CHANGE_FROM_BEGINNING_OF_THIS_YEAR" => {
1245                Some(Self::PropertySimpleQuotePriceChangeFromBeginningOfThisYear)
1246            }
1247            "PROPERTY_SIMPLE_QUOTE_VOLUME_BID" => {
1248                Some(Self::PropertySimpleQuoteVolumeBid)
1249            }
1250            "PROPERTY_SIMPLE_QUOTE_VOLUME_ASK" => {
1251                Some(Self::PropertySimpleQuoteVolumeAsk)
1252            }
1253            "PROPERTY_SIMPLE_QUOTE_VOLUME_RATIO" => {
1254                Some(Self::PropertySimpleQuoteVolumeRatio)
1255            }
1256            "PROPERTY_SIMPLE_QUOTE_BID_ASK_RATIO" => {
1257                Some(Self::PropertySimpleQuoteBidAskRatio)
1258            }
1259            "PROPERTY_SIMPLE_QUOTE_LOT_PRICE" => Some(Self::PropertySimpleQuoteLotPrice),
1260            "PROPERTY_SIMPLE_INFO_MARKET_CAPITAL" => {
1261                Some(Self::PropertySimpleInfoMarketCapital)
1262            }
1263            "PROPERTY_SIMPLE_INFO_PE_ANNUAL" => Some(Self::PropertySimpleInfoPeAnnual),
1264            "PROPERTY_SIMPLE_INFO_PE_TTM" => Some(Self::PropertySimpleInfoPeTtm),
1265            "PROPERTY_SIMPLE_INFO_PB" => Some(Self::PropertySimpleInfoPb),
1266            "PROPERTY_SIMPLE_INFO_DIVIDEND_RATIO" => {
1267                Some(Self::PropertySimpleInfoDividendRatio)
1268            }
1269            "PROPERTY_SIMPLE_INFO_LISTED_DATE" => {
1270                Some(Self::PropertySimpleInfoListedDate)
1271            }
1272            "PROPERTY_SIMPLE_INFO_LISTED_DAYS" => {
1273                Some(Self::PropertySimpleInfoListedDays)
1274            }
1275            "PROPERTY_SIMPLE_QUOTE_BEFORE_PRICE" => {
1276                Some(Self::PropertySimpleQuoteBeforePrice)
1277            }
1278            "PROPERTY_SIMPLE_QUOTE_BEFORE_PRICE_CHANGE" => {
1279                Some(Self::PropertySimpleQuoteBeforePriceChange)
1280            }
1281            "PROPERTY_SIMPLE_QUOTE_BEFORE_PRICE_CHANGE_PERCENTAGE" => {
1282                Some(Self::PropertySimpleQuoteBeforePriceChangePercentage)
1283            }
1284            "PROPERTY_SIMPLE_QUOTE_BEFORE_VOLUME" => {
1285                Some(Self::PropertySimpleQuoteBeforeVolume)
1286            }
1287            "PROPERTY_SIMPLE_QUOTE_BEFORE_TURNOVER" => {
1288                Some(Self::PropertySimpleQuoteBeforeTurnover)
1289            }
1290            "PROPERTY_SIMPLE_QUOTE_AFTER_PRICE" => {
1291                Some(Self::PropertySimpleQuoteAfterPrice)
1292            }
1293            "PROPERTY_SIMPLE_QUOTE_AFTER_PRICE_CHANGE" => {
1294                Some(Self::PropertySimpleQuoteAfterPriceChange)
1295            }
1296            "PROPERTY_SIMPLE_QUOTE_AFTER_PRICE_CHANGE_PERCENTAGE" => {
1297                Some(Self::PropertySimpleQuoteAfterPriceChangePercentage)
1298            }
1299            "PROPERTY_SIMPLE_QUOTE_AFTER_VOLUME" => {
1300                Some(Self::PropertySimpleQuoteAfterVolume)
1301            }
1302            "PROPERTY_SIMPLE_QUOTE_AFTER_TURNOVER" => {
1303                Some(Self::PropertySimpleQuoteAfterTurnover)
1304            }
1305            _ => None,
1306        }
1307    }
1308}
1309#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1310#[repr(i32)]
1311pub enum PropertyNameCumulative {
1312    /// 未知
1313    PropertyCumulativeUnknown = 0,
1314    /// 价格涨跌额 (单位:0.001元 倍率:1000)
1315    PropertyCumulativeQuotePriceChange = 3101,
1316    /// 价格涨跌幅 (单位:0.001% 倍率:100000)
1317    PropertyCumulativeQuotePriceChangePercentage = 3102,
1318    /// 价格振幅 (单位:0.001% 倍率:100000)
1319    PropertyCumulativeQuotePriceAmplitude = 3103,
1320    /// 平均成交量 (单位:1股 倍率:1)
1321    PropertyCumulativeQuoteAverageVolume = 3104,
1322    /// 平均成交额 (单位:0.001元 倍率:1000)
1323    PropertyCumulativeQuoteAverageTurnover = 3105,
1324    /// 换手率 (单位:0.001% 倍率:100000)
1325    PropertyCumulativeQuoteTurnoverRatio = 3106,
1326    /// (今日最高 - n日最高)/n日最高 (单位:0.001% 倍率:100000)
1327    PropertyCumulativeQuotePriceTodayHighToNDaysHighRatio = 3107,
1328    /// (今日最低 - n日最低)/n日最低 (单位:0.001% 倍率:100000)
1329    PropertyCumulativeQuotePriceTodayLowToNDaysLowRatio = 3108,
1330}
1331impl PropertyNameCumulative {
1332    /// String value of the enum field names used in the ProtoBuf definition.
1333    ///
1334    /// The values are not transformed in any way and thus are considered stable
1335    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1336    pub fn as_str_name(&self) -> &'static str {
1337        match self {
1338            Self::PropertyCumulativeUnknown => "PROPERTY_CUMULATIVE_UNKNOWN",
1339            Self::PropertyCumulativeQuotePriceChange => {
1340                "PROPERTY_CUMULATIVE_QUOTE_PRICE_CHANGE"
1341            }
1342            Self::PropertyCumulativeQuotePriceChangePercentage => {
1343                "PROPERTY_CUMULATIVE_QUOTE_PRICE_CHANGE_PERCENTAGE"
1344            }
1345            Self::PropertyCumulativeQuotePriceAmplitude => {
1346                "PROPERTY_CUMULATIVE_QUOTE_PRICE_AMPLITUDE"
1347            }
1348            Self::PropertyCumulativeQuoteAverageVolume => {
1349                "PROPERTY_CUMULATIVE_QUOTE_AVERAGE_VOLUME"
1350            }
1351            Self::PropertyCumulativeQuoteAverageTurnover => {
1352                "PROPERTY_CUMULATIVE_QUOTE_AVERAGE_TURNOVER"
1353            }
1354            Self::PropertyCumulativeQuoteTurnoverRatio => {
1355                "PROPERTY_CUMULATIVE_QUOTE_TURNOVER_RATIO"
1356            }
1357            Self::PropertyCumulativeQuotePriceTodayHighToNDaysHighRatio => {
1358                "PROPERTY_CUMULATIVE_QUOTE_PRICE_TODAY_HIGH_TO_N_DAYS_HIGH_RATIO"
1359            }
1360            Self::PropertyCumulativeQuotePriceTodayLowToNDaysLowRatio => {
1361                "PROPERTY_CUMULATIVE_QUOTE_PRICE_TODAY_LOW_TO_N_DAYS_LOW_RATIO"
1362            }
1363        }
1364    }
1365    /// Creates an enum from field names used in the ProtoBuf definition.
1366    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1367        match value {
1368            "PROPERTY_CUMULATIVE_UNKNOWN" => Some(Self::PropertyCumulativeUnknown),
1369            "PROPERTY_CUMULATIVE_QUOTE_PRICE_CHANGE" => {
1370                Some(Self::PropertyCumulativeQuotePriceChange)
1371            }
1372            "PROPERTY_CUMULATIVE_QUOTE_PRICE_CHANGE_PERCENTAGE" => {
1373                Some(Self::PropertyCumulativeQuotePriceChangePercentage)
1374            }
1375            "PROPERTY_CUMULATIVE_QUOTE_PRICE_AMPLITUDE" => {
1376                Some(Self::PropertyCumulativeQuotePriceAmplitude)
1377            }
1378            "PROPERTY_CUMULATIVE_QUOTE_AVERAGE_VOLUME" => {
1379                Some(Self::PropertyCumulativeQuoteAverageVolume)
1380            }
1381            "PROPERTY_CUMULATIVE_QUOTE_AVERAGE_TURNOVER" => {
1382                Some(Self::PropertyCumulativeQuoteAverageTurnover)
1383            }
1384            "PROPERTY_CUMULATIVE_QUOTE_TURNOVER_RATIO" => {
1385                Some(Self::PropertyCumulativeQuoteTurnoverRatio)
1386            }
1387            "PROPERTY_CUMULATIVE_QUOTE_PRICE_TODAY_HIGH_TO_N_DAYS_HIGH_RATIO" => {
1388                Some(Self::PropertyCumulativeQuotePriceTodayHighToNDaysHighRatio)
1389            }
1390            "PROPERTY_CUMULATIVE_QUOTE_PRICE_TODAY_LOW_TO_N_DAYS_LOW_RATIO" => {
1391                Some(Self::PropertyCumulativeQuotePriceTodayLowToNDaysLowRatio)
1392            }
1393            _ => None,
1394        }
1395    }
1396}
1397#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1398#[repr(i32)]
1399pub enum PropertyNameFinancial {
1400    /// 基本财务因子
1401    ///
1402    /// 未知
1403    PropertyFinancialUnknown = 0,
1404    /// 净利润 (单位:0.001元 倍率:1000)
1405    PropertyFinancialNetProfit = 4101,
1406    /// 净利润增长率 (单位:0.001% 倍率:100000)
1407    PropertyFinancialNetProfitGrowth = 4102,
1408    /// 毛利润 (单位:0.001元 倍率:1000)
1409    PropertyFinancialGrossProfit = 4103,
1410    /// 毛利润增长率 (单位:0.001% 倍率:100000)
1411    PropertyFinancialGrossProfitGrowth = 4104,
1412    /// 营业额 (单位:0.001元 倍率:1000)
1413    PropertyFinancialRevenue = 4105,
1414    /// 营业额增长率 (单位:0.001% 倍率:100000)
1415    PropertyFinancialRevenueGrowth = 4106,
1416    /// 净利率 (单位:0.001% 倍率:100000)
1417    PropertyFinancialNetProfitRatio = 4107,
1418    /// 毛利率 (单位:0.001% 倍率:100000)
1419    PropertyFinancialGrossProfitRatio = 4108,
1420    /// 资产负债率 (单位:0.001% 倍率:100000)
1421    PropertyFinancialDebtToAssetsRatio = 4109,
1422    /// 净资产收益率 (单位:0.001% 倍率:100000)
1423    PropertyFinancialReturnToNetAssetsRatio = 4110,
1424    /// 盈利能力因子
1425    ///
1426    /// 税息折旧及摊销前利润 (单位:0.001元 倍率:1000)
1427    PropertyFinancialEbitda = 4201,
1428    /// 投入资本回报率 (单位:0.001% 倍率:100000)
1429    PropertyFinancialRoic = 4202,
1430    /// EBIT利润率 (单位:0.001% 倍率:100000)
1431    PropertyFinancialEbitMargin = 4203,
1432    /// EBITDA利润率 (单位:0.001% 倍率:100000)
1433    PropertyFinancialEbitdaMargin = 4204,
1434    /// 财务成本率 (单位:0.001% 倍率:100000)
1435    PropertyFinancialFinancialCostRate = 4205,
1436    /// 息税前利润(TTM) (单位:0.001元 倍率:1000)
1437    PropertyFinancialEbitTtm = 4206,
1438    /// 营业利润(TTM) (单位:0.001元 倍率:1000)
1439    PropertyFinancialOperatingProfitTtm = 4207,
1440    /// 归属于母公司的净利润(TTM) (单位:0.001元 倍率:1000)
1441    PropertyFinancialShareholdersProfitTtm = 4208,
1442    /// 资产回报率(TTM) (单位:0.001% 倍率:100000)
1443    PropertyFinancialRoaTtm = 4209,
1444    /// 营业利润率(TTM) (单位:0.001% 倍率:100000)
1445    PropertyFinancialOperatingMarginTtm = 4210,
1446    /// 盈利中的现金收入比例(TTM) (单位:0.001% 倍率:100000)
1447    PropertyFinancialNetProfitCashCoverTtm = 4211,
1448    /// 研发费用率(单位:0.001% 倍率:100000)
1449    PropertyFinancialRdExpenseRatio = 4212,
1450    /// 销售费用率(单位:0.001% 倍率:100000)
1451    PropertyFinancialSellingExpenseRatio = 4213,
1452    /// 管理费用率(单位:0.001% 倍率:100000)
1453    PropertyFinancialManageExpenseRatio = 4214,
1454    /// 经营利润率(单位:0.001% 倍率:100000)
1455    PropertyFinancialOperatingProfitRate = 4215,
1456    /// 税前利润率(单位:0.001% 倍率:100000)
1457    PropertyFinancialProfitBeforeTaxRate = 4216,
1458    /// 股息TTM(单位:0.001 倍率:1000)
1459    PropertyFinancialDividendsTtm = 4217,
1460    /// 股息LFY(单位:0.001 倍率:1000)
1461    PropertyFinancialDividendsLfy = 4218,
1462    /// 股息率TTM(单位:0.001% 倍率:100000)
1463    PropertyFinancialDividendsTtmRatio = 4219,
1464    /// 股息率LFY(单位:0.001% 倍率:100000)
1465    PropertyFinancialDividendsLfyRatio = 4220,
1466    /// 偿债能力因子
1467    ///
1468    /// 流动比率 (单位:0.001% 倍率:100000)
1469    PropertyFinancialCurrentRatio = 4301,
1470    /// 速动比率 (单位:0.001% 倍率:100000)
1471    PropertyFinancialQuickRatio = 4302,
1472    /// 长期负债股东权益比率(单位:0.001% 倍率:100000)
1473    PropertyFinancialLongTermDebtShareholdersRatio = 4303,
1474    /// 财务杠杆(单位:0.001% 倍率:100000)
1475    PropertyFinancialFinancialLeverage = 4304,
1476    /// 有息负债率(单位:0.001% 倍率:100000)
1477    PropertyFinancialInterestBearingDebtRatio = 4305,
1478    /// 清债能力因子
1479    ///
1480    /// 现金和现金等价 (单位:0.001元 倍率:1000)
1481    PropertyFinancialCashAndCashEquivalents = 4401,
1482    /// 流动资产率 (单位:0.001% 倍率:100000)
1483    PropertyFinancialCurrentAssetRatio = 4402,
1484    /// 流动负债率 (单位:0.001% 倍率:100000)
1485    PropertyFinancialCurrentDebtRatio = 4403,
1486    /// 权益乘数 (单位:0.001% 倍率:100000)
1487    PropertyFinancialEquityMultiplier = 4404,
1488    /// 产权比率 (单位:0.001% 倍率:100000)
1489    PropertyFinancialPropertyRatio = 4405,
1490    /// 运营能力因子
1491    ///
1492    /// 应收帐款净额 (单位:0.001元 倍率:1000)
1493    PropertyFinancialAccountsReceviable = 4501,
1494    /// 总资产周转率 (单位:0.001% 倍率:100000)
1495    PropertyFinancialTotalAssetTurnover = 4502,
1496    /// 固定资产周转率 (单位:0.001% 倍率:100000)
1497    PropertyFinancialFixedAssetTurnover = 4503,
1498    /// 存货周转率 (单位:0.001% 倍率:100000)
1499    PropertyFinancialInventoryTurnover = 4504,
1500    /// 经营活动现金流(TTM) (单位:0.001元 倍率:1000)
1501    PropertyFinancialOperatingCashFlowTtm = 4505,
1502    /// 资金周转周期(天)(单位:0.001,倍率:1000)
1503    PropertyFinancialMoneyTurnoverCycle = 4506,
1504    /// 应收帐款周转率(次)(单位:0.001,倍率:1000)
1505    PropertyFinancialAccountsReceivableRate = 4507,
1506    /// 自由现金流与收入比率(单位:0.001% 倍率:100000)
1507    PropertyFinancialFreeCashFlowIncomeRatio = 4508,
1508    /// 自由现金流与母公司净利润比率(单位:0.001% 倍率:100000)
1509    PropertyFinancialFreeCashFlowParentCompanyNetProfitRatio = 4509,
1510    /// 流动资产周转率(次)(单位:0.001,倍率:1000)
1511    PropertyFinancialTurnoverRateCurrentAssetsRatio = 4510,
1512    /// 成长能力
1513    ///
1514    /// EBIT同比增长率 (单位:0.001% 倍率:100000)
1515    PropertyFinancialEbitGrowthRate = 4601,
1516    /// 营业利润同比增长率 (单位:0.001% 倍率:100000)
1517    PropertyFinancialOperatingProfitGrowthRate = 4602,
1518    /// 总资产同比增长率 (单位:0.001% 倍率:100000)
1519    PropertyFinancialTotalAssetsGrowthRate = 4603,
1520    /// 归母净利润同比增长率 (单位:0.001% 倍率:100000)
1521    PropertyFinancialProfitToShareholdersGrowthRate = 4604,
1522    /// 总利润同比增长率 (单位:0.001% 倍率:100000)
1523    PropertyFinancialProfitBeforeTaxGrowthRate = 4605,
1524    /// EPS同比增长率 (单位:0.001% 倍率:100000)
1525    PropertyFinancialEpsGrowthRate = 4606,
1526    /// ROE同比增长率 (单位:0.001% 倍率:100000)
1527    PropertyFinancialRoeGrowthRate = 4607,
1528    /// ROIC同比增长率 (单位:0.001% 倍率:100000)
1529    PropertyFinancialRoicGrowthRate = 4608,
1530    /// 经营现金流同比增长率 (单位:0.001% 倍率:100000)
1531    PropertyFinancialNocfGrowthRate = 4609,
1532    /// 每股经营现金流同比增长率 (单位:0.001% 倍率:100000)
1533    PropertyFinancialNocfPerShareGrowthRate = 4610,
1534    /// 现金流
1535    ///
1536    /// 经营现金收入比 (单位:0.001% 倍率:100000)
1537    PropertyFinancialOperatingRevenueCashCover = 4701,
1538    /// 营业利润占比 (单位:0.001% 倍率:100000)
1539    PropertyFinancialOperatingProfitToTotalProfit = 4702,
1540    /// 市场表现
1541    ///
1542    /// 基本每股收益 (单位:0.001元 倍率:1000)
1543    PropertyFinancialBasicEps = 4801,
1544    /// 稀释每股收益 (单位:0.001元 倍率:1000)
1545    PropertyFinancialDilutedEps = 4802,
1546    /// 每股经营现金净流量 (单位:0.001元 倍率:1000)
1547    PropertyFinancialNocfPerShare = 4803,
1548    /// 基础量价因子
1549    ///
1550    /// 总股数 (单位:1股 倍率:1)
1551    PropertyFinancialTotalShare = 4901,
1552    /// 流通股数 (单位:1股 倍率:1)
1553    PropertyFinancialFloatShare = 4902,
1554    /// 流通市值 (单位:0.001元 倍率:1000)
1555    PropertyFinancialFloatMarketCap = 4903,
1556    /// 市销率(TTM) (单位:0.001% 倍率:100000)
1557    PropertyFinancialPsTtm = 4904,
1558    /// 市现率(TTM) (单位:0.001% 倍率:100000)
1559    PropertyFinancialPriceCashFlowRatioTtm = 4905,
1560}
1561impl PropertyNameFinancial {
1562    /// String value of the enum field names used in the ProtoBuf definition.
1563    ///
1564    /// The values are not transformed in any way and thus are considered stable
1565    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1566    pub fn as_str_name(&self) -> &'static str {
1567        match self {
1568            Self::PropertyFinancialUnknown => "PROPERTY_FINANCIAL_UNKNOWN",
1569            Self::PropertyFinancialNetProfit => "PROPERTY_FINANCIAL_NET_PROFIT",
1570            Self::PropertyFinancialNetProfitGrowth => {
1571                "PROPERTY_FINANCIAL_NET_PROFIT_GROWTH"
1572            }
1573            Self::PropertyFinancialGrossProfit => "PROPERTY_FINANCIAL_GROSS_PROFIT",
1574            Self::PropertyFinancialGrossProfitGrowth => {
1575                "PROPERTY_FINANCIAL_GROSS_PROFIT_GROWTH"
1576            }
1577            Self::PropertyFinancialRevenue => "PROPERTY_FINANCIAL_REVENUE",
1578            Self::PropertyFinancialRevenueGrowth => "PROPERTY_FINANCIAL_REVENUE_GROWTH",
1579            Self::PropertyFinancialNetProfitRatio => {
1580                "PROPERTY_FINANCIAL_NET_PROFIT_RATIO"
1581            }
1582            Self::PropertyFinancialGrossProfitRatio => {
1583                "PROPERTY_FINANCIAL_GROSS_PROFIT_RATIO"
1584            }
1585            Self::PropertyFinancialDebtToAssetsRatio => {
1586                "PROPERTY_FINANCIAL_DEBT_TO_ASSETS_RATIO"
1587            }
1588            Self::PropertyFinancialReturnToNetAssetsRatio => {
1589                "PROPERTY_FINANCIAL_RETURN_TO_NET_ASSETS_RATIO"
1590            }
1591            Self::PropertyFinancialEbitda => "PROPERTY_FINANCIAL_EBITDA",
1592            Self::PropertyFinancialRoic => "PROPERTY_FINANCIAL_ROIC",
1593            Self::PropertyFinancialEbitMargin => "PROPERTY_FINANCIAL_EBIT_MARGIN",
1594            Self::PropertyFinancialEbitdaMargin => "PROPERTY_FINANCIAL_EBITDA_MARGIN",
1595            Self::PropertyFinancialFinancialCostRate => {
1596                "PROPERTY_FINANCIAL_FINANCIAL_COST_RATE"
1597            }
1598            Self::PropertyFinancialEbitTtm => "PROPERTY_FINANCIAL_EBIT_TTM",
1599            Self::PropertyFinancialOperatingProfitTtm => {
1600                "PROPERTY_FINANCIAL_OPERATING_PROFIT_TTM"
1601            }
1602            Self::PropertyFinancialShareholdersProfitTtm => {
1603                "PROPERTY_FINANCIAL_SHAREHOLDERS_PROFIT_TTM"
1604            }
1605            Self::PropertyFinancialRoaTtm => "PROPERTY_FINANCIAL_ROA_TTM",
1606            Self::PropertyFinancialOperatingMarginTtm => {
1607                "PROPERTY_FINANCIAL_OPERATING_MARGIN_TTM"
1608            }
1609            Self::PropertyFinancialNetProfitCashCoverTtm => {
1610                "PROPERTY_FINANCIAL_NET_PROFIT_CASH_COVER_TTM"
1611            }
1612            Self::PropertyFinancialRdExpenseRatio => {
1613                "PROPERTY_FINANCIAL_RD_EXPENSE_RATIO"
1614            }
1615            Self::PropertyFinancialSellingExpenseRatio => {
1616                "PROPERTY_FINANCIAL_SELLING_EXPENSE_RATIO"
1617            }
1618            Self::PropertyFinancialManageExpenseRatio => {
1619                "PROPERTY_FINANCIAL_MANAGE_EXPENSE_RATIO"
1620            }
1621            Self::PropertyFinancialOperatingProfitRate => {
1622                "PROPERTY_FINANCIAL_OPERATING_PROFIT_RATE"
1623            }
1624            Self::PropertyFinancialProfitBeforeTaxRate => {
1625                "PROPERTY_FINANCIAL_PROFIT_BEFORE_TAX_RATE"
1626            }
1627            Self::PropertyFinancialDividendsTtm => "PROPERTY_FINANCIAL_DIVIDENDS_TTM",
1628            Self::PropertyFinancialDividendsLfy => "PROPERTY_FINANCIAL_DIVIDENDS_LFY",
1629            Self::PropertyFinancialDividendsTtmRatio => {
1630                "PROPERTY_FINANCIAL_DIVIDENDS_TTM_RATIO"
1631            }
1632            Self::PropertyFinancialDividendsLfyRatio => {
1633                "PROPERTY_FINANCIAL_DIVIDENDS_LFY_RATIO"
1634            }
1635            Self::PropertyFinancialCurrentRatio => "PROPERTY_FINANCIAL_CURRENT_RATIO",
1636            Self::PropertyFinancialQuickRatio => "PROPERTY_FINANCIAL_QUICK_RATIO",
1637            Self::PropertyFinancialLongTermDebtShareholdersRatio => {
1638                "PROPERTY_FINANCIAL_LONG_TERM_DEBT_SHAREHOLDERS_RATIO"
1639            }
1640            Self::PropertyFinancialFinancialLeverage => {
1641                "PROPERTY_FINANCIAL_FINANCIAL_LEVERAGE"
1642            }
1643            Self::PropertyFinancialInterestBearingDebtRatio => {
1644                "PROPERTY_FINANCIAL_INTEREST_BEARING_DEBT_RATIO"
1645            }
1646            Self::PropertyFinancialCashAndCashEquivalents => {
1647                "PROPERTY_FINANCIAL_CASH_AND_CASH_EQUIVALENTS"
1648            }
1649            Self::PropertyFinancialCurrentAssetRatio => {
1650                "PROPERTY_FINANCIAL_CURRENT_ASSET_RATIO"
1651            }
1652            Self::PropertyFinancialCurrentDebtRatio => {
1653                "PROPERTY_FINANCIAL_CURRENT_DEBT_RATIO"
1654            }
1655            Self::PropertyFinancialEquityMultiplier => {
1656                "PROPERTY_FINANCIAL_EQUITY_MULTIPLIER"
1657            }
1658            Self::PropertyFinancialPropertyRatio => "PROPERTY_FINANCIAL_PROPERTY_RATIO",
1659            Self::PropertyFinancialAccountsReceviable => {
1660                "PROPERTY_FINANCIAL_ACCOUNTS_RECEVIABLE"
1661            }
1662            Self::PropertyFinancialTotalAssetTurnover => {
1663                "PROPERTY_FINANCIAL_TOTAL_ASSET_TURNOVER"
1664            }
1665            Self::PropertyFinancialFixedAssetTurnover => {
1666                "PROPERTY_FINANCIAL_FIXED_ASSET_TURNOVER"
1667            }
1668            Self::PropertyFinancialInventoryTurnover => {
1669                "PROPERTY_FINANCIAL_INVENTORY_TURNOVER"
1670            }
1671            Self::PropertyFinancialOperatingCashFlowTtm => {
1672                "PROPERTY_FINANCIAL_OPERATING_CASH_FLOW_TTM"
1673            }
1674            Self::PropertyFinancialMoneyTurnoverCycle => {
1675                "PROPERTY_FINANCIAL_MONEY_TURNOVER_CYCLE"
1676            }
1677            Self::PropertyFinancialAccountsReceivableRate => {
1678                "PROPERTY_FINANCIAL_ACCOUNTS_RECEIVABLE_RATE"
1679            }
1680            Self::PropertyFinancialFreeCashFlowIncomeRatio => {
1681                "PROPERTY_FINANCIAL_FREE_CASH_FLOW_INCOME_RATIO"
1682            }
1683            Self::PropertyFinancialFreeCashFlowParentCompanyNetProfitRatio => {
1684                "PROPERTY_FINANCIAL_FREE_CASH_FLOW_PARENT_COMPANY_NET_PROFIT_RATIO"
1685            }
1686            Self::PropertyFinancialTurnoverRateCurrentAssetsRatio => {
1687                "PROPERTY_FINANCIAL_TURNOVER_RATE_CURRENT_ASSETS_RATIO"
1688            }
1689            Self::PropertyFinancialEbitGrowthRate => {
1690                "PROPERTY_FINANCIAL_EBIT_GROWTH_RATE"
1691            }
1692            Self::PropertyFinancialOperatingProfitGrowthRate => {
1693                "PROPERTY_FINANCIAL_OPERATING_PROFIT_GROWTH_RATE"
1694            }
1695            Self::PropertyFinancialTotalAssetsGrowthRate => {
1696                "PROPERTY_FINANCIAL_TOTAL_ASSETS_GROWTH_RATE"
1697            }
1698            Self::PropertyFinancialProfitToShareholdersGrowthRate => {
1699                "PROPERTY_FINANCIAL_PROFIT_TO_SHAREHOLDERS_GROWTH_RATE"
1700            }
1701            Self::PropertyFinancialProfitBeforeTaxGrowthRate => {
1702                "PROPERTY_FINANCIAL_PROFIT_BEFORE_TAX_GROWTH_RATE"
1703            }
1704            Self::PropertyFinancialEpsGrowthRate => "PROPERTY_FINANCIAL_EPS_GROWTH_RATE",
1705            Self::PropertyFinancialRoeGrowthRate => "PROPERTY_FINANCIAL_ROE_GROWTH_RATE",
1706            Self::PropertyFinancialRoicGrowthRate => {
1707                "PROPERTY_FINANCIAL_ROIC_GROWTH_RATE"
1708            }
1709            Self::PropertyFinancialNocfGrowthRate => {
1710                "PROPERTY_FINANCIAL_NOCF_GROWTH_RATE"
1711            }
1712            Self::PropertyFinancialNocfPerShareGrowthRate => {
1713                "PROPERTY_FINANCIAL_NOCF_PER_SHARE_GROWTH_RATE"
1714            }
1715            Self::PropertyFinancialOperatingRevenueCashCover => {
1716                "PROPERTY_FINANCIAL_OPERATING_REVENUE_CASH_COVER"
1717            }
1718            Self::PropertyFinancialOperatingProfitToTotalProfit => {
1719                "PROPERTY_FINANCIAL_OPERATING_PROFIT_TO_TOTAL_PROFIT"
1720            }
1721            Self::PropertyFinancialBasicEps => "PROPERTY_FINANCIAL_BASIC_EPS",
1722            Self::PropertyFinancialDilutedEps => "PROPERTY_FINANCIAL_DILUTED_EPS",
1723            Self::PropertyFinancialNocfPerShare => "PROPERTY_FINANCIAL_NOCF_PER_SHARE",
1724            Self::PropertyFinancialTotalShare => "PROPERTY_FINANCIAL_TOTAL_SHARE",
1725            Self::PropertyFinancialFloatShare => "PROPERTY_FINANCIAL_FLOAT_SHARE",
1726            Self::PropertyFinancialFloatMarketCap => {
1727                "PROPERTY_FINANCIAL_FLOAT_MARKET_CAP"
1728            }
1729            Self::PropertyFinancialPsTtm => "PROPERTY_FINANCIAL_PS_TTM",
1730            Self::PropertyFinancialPriceCashFlowRatioTtm => {
1731                "PROPERTY_FINANCIAL_PRICE_CASH_FLOW_RATIO_TTM"
1732            }
1733        }
1734    }
1735    /// Creates an enum from field names used in the ProtoBuf definition.
1736    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1737        match value {
1738            "PROPERTY_FINANCIAL_UNKNOWN" => Some(Self::PropertyFinancialUnknown),
1739            "PROPERTY_FINANCIAL_NET_PROFIT" => Some(Self::PropertyFinancialNetProfit),
1740            "PROPERTY_FINANCIAL_NET_PROFIT_GROWTH" => {
1741                Some(Self::PropertyFinancialNetProfitGrowth)
1742            }
1743            "PROPERTY_FINANCIAL_GROSS_PROFIT" => Some(Self::PropertyFinancialGrossProfit),
1744            "PROPERTY_FINANCIAL_GROSS_PROFIT_GROWTH" => {
1745                Some(Self::PropertyFinancialGrossProfitGrowth)
1746            }
1747            "PROPERTY_FINANCIAL_REVENUE" => Some(Self::PropertyFinancialRevenue),
1748            "PROPERTY_FINANCIAL_REVENUE_GROWTH" => {
1749                Some(Self::PropertyFinancialRevenueGrowth)
1750            }
1751            "PROPERTY_FINANCIAL_NET_PROFIT_RATIO" => {
1752                Some(Self::PropertyFinancialNetProfitRatio)
1753            }
1754            "PROPERTY_FINANCIAL_GROSS_PROFIT_RATIO" => {
1755                Some(Self::PropertyFinancialGrossProfitRatio)
1756            }
1757            "PROPERTY_FINANCIAL_DEBT_TO_ASSETS_RATIO" => {
1758                Some(Self::PropertyFinancialDebtToAssetsRatio)
1759            }
1760            "PROPERTY_FINANCIAL_RETURN_TO_NET_ASSETS_RATIO" => {
1761                Some(Self::PropertyFinancialReturnToNetAssetsRatio)
1762            }
1763            "PROPERTY_FINANCIAL_EBITDA" => Some(Self::PropertyFinancialEbitda),
1764            "PROPERTY_FINANCIAL_ROIC" => Some(Self::PropertyFinancialRoic),
1765            "PROPERTY_FINANCIAL_EBIT_MARGIN" => Some(Self::PropertyFinancialEbitMargin),
1766            "PROPERTY_FINANCIAL_EBITDA_MARGIN" => {
1767                Some(Self::PropertyFinancialEbitdaMargin)
1768            }
1769            "PROPERTY_FINANCIAL_FINANCIAL_COST_RATE" => {
1770                Some(Self::PropertyFinancialFinancialCostRate)
1771            }
1772            "PROPERTY_FINANCIAL_EBIT_TTM" => Some(Self::PropertyFinancialEbitTtm),
1773            "PROPERTY_FINANCIAL_OPERATING_PROFIT_TTM" => {
1774                Some(Self::PropertyFinancialOperatingProfitTtm)
1775            }
1776            "PROPERTY_FINANCIAL_SHAREHOLDERS_PROFIT_TTM" => {
1777                Some(Self::PropertyFinancialShareholdersProfitTtm)
1778            }
1779            "PROPERTY_FINANCIAL_ROA_TTM" => Some(Self::PropertyFinancialRoaTtm),
1780            "PROPERTY_FINANCIAL_OPERATING_MARGIN_TTM" => {
1781                Some(Self::PropertyFinancialOperatingMarginTtm)
1782            }
1783            "PROPERTY_FINANCIAL_NET_PROFIT_CASH_COVER_TTM" => {
1784                Some(Self::PropertyFinancialNetProfitCashCoverTtm)
1785            }
1786            "PROPERTY_FINANCIAL_RD_EXPENSE_RATIO" => {
1787                Some(Self::PropertyFinancialRdExpenseRatio)
1788            }
1789            "PROPERTY_FINANCIAL_SELLING_EXPENSE_RATIO" => {
1790                Some(Self::PropertyFinancialSellingExpenseRatio)
1791            }
1792            "PROPERTY_FINANCIAL_MANAGE_EXPENSE_RATIO" => {
1793                Some(Self::PropertyFinancialManageExpenseRatio)
1794            }
1795            "PROPERTY_FINANCIAL_OPERATING_PROFIT_RATE" => {
1796                Some(Self::PropertyFinancialOperatingProfitRate)
1797            }
1798            "PROPERTY_FINANCIAL_PROFIT_BEFORE_TAX_RATE" => {
1799                Some(Self::PropertyFinancialProfitBeforeTaxRate)
1800            }
1801            "PROPERTY_FINANCIAL_DIVIDENDS_TTM" => {
1802                Some(Self::PropertyFinancialDividendsTtm)
1803            }
1804            "PROPERTY_FINANCIAL_DIVIDENDS_LFY" => {
1805                Some(Self::PropertyFinancialDividendsLfy)
1806            }
1807            "PROPERTY_FINANCIAL_DIVIDENDS_TTM_RATIO" => {
1808                Some(Self::PropertyFinancialDividendsTtmRatio)
1809            }
1810            "PROPERTY_FINANCIAL_DIVIDENDS_LFY_RATIO" => {
1811                Some(Self::PropertyFinancialDividendsLfyRatio)
1812            }
1813            "PROPERTY_FINANCIAL_CURRENT_RATIO" => {
1814                Some(Self::PropertyFinancialCurrentRatio)
1815            }
1816            "PROPERTY_FINANCIAL_QUICK_RATIO" => Some(Self::PropertyFinancialQuickRatio),
1817            "PROPERTY_FINANCIAL_LONG_TERM_DEBT_SHAREHOLDERS_RATIO" => {
1818                Some(Self::PropertyFinancialLongTermDebtShareholdersRatio)
1819            }
1820            "PROPERTY_FINANCIAL_FINANCIAL_LEVERAGE" => {
1821                Some(Self::PropertyFinancialFinancialLeverage)
1822            }
1823            "PROPERTY_FINANCIAL_INTEREST_BEARING_DEBT_RATIO" => {
1824                Some(Self::PropertyFinancialInterestBearingDebtRatio)
1825            }
1826            "PROPERTY_FINANCIAL_CASH_AND_CASH_EQUIVALENTS" => {
1827                Some(Self::PropertyFinancialCashAndCashEquivalents)
1828            }
1829            "PROPERTY_FINANCIAL_CURRENT_ASSET_RATIO" => {
1830                Some(Self::PropertyFinancialCurrentAssetRatio)
1831            }
1832            "PROPERTY_FINANCIAL_CURRENT_DEBT_RATIO" => {
1833                Some(Self::PropertyFinancialCurrentDebtRatio)
1834            }
1835            "PROPERTY_FINANCIAL_EQUITY_MULTIPLIER" => {
1836                Some(Self::PropertyFinancialEquityMultiplier)
1837            }
1838            "PROPERTY_FINANCIAL_PROPERTY_RATIO" => {
1839                Some(Self::PropertyFinancialPropertyRatio)
1840            }
1841            "PROPERTY_FINANCIAL_ACCOUNTS_RECEVIABLE" => {
1842                Some(Self::PropertyFinancialAccountsReceviable)
1843            }
1844            "PROPERTY_FINANCIAL_TOTAL_ASSET_TURNOVER" => {
1845                Some(Self::PropertyFinancialTotalAssetTurnover)
1846            }
1847            "PROPERTY_FINANCIAL_FIXED_ASSET_TURNOVER" => {
1848                Some(Self::PropertyFinancialFixedAssetTurnover)
1849            }
1850            "PROPERTY_FINANCIAL_INVENTORY_TURNOVER" => {
1851                Some(Self::PropertyFinancialInventoryTurnover)
1852            }
1853            "PROPERTY_FINANCIAL_OPERATING_CASH_FLOW_TTM" => {
1854                Some(Self::PropertyFinancialOperatingCashFlowTtm)
1855            }
1856            "PROPERTY_FINANCIAL_MONEY_TURNOVER_CYCLE" => {
1857                Some(Self::PropertyFinancialMoneyTurnoverCycle)
1858            }
1859            "PROPERTY_FINANCIAL_ACCOUNTS_RECEIVABLE_RATE" => {
1860                Some(Self::PropertyFinancialAccountsReceivableRate)
1861            }
1862            "PROPERTY_FINANCIAL_FREE_CASH_FLOW_INCOME_RATIO" => {
1863                Some(Self::PropertyFinancialFreeCashFlowIncomeRatio)
1864            }
1865            "PROPERTY_FINANCIAL_FREE_CASH_FLOW_PARENT_COMPANY_NET_PROFIT_RATIO" => {
1866                Some(Self::PropertyFinancialFreeCashFlowParentCompanyNetProfitRatio)
1867            }
1868            "PROPERTY_FINANCIAL_TURNOVER_RATE_CURRENT_ASSETS_RATIO" => {
1869                Some(Self::PropertyFinancialTurnoverRateCurrentAssetsRatio)
1870            }
1871            "PROPERTY_FINANCIAL_EBIT_GROWTH_RATE" => {
1872                Some(Self::PropertyFinancialEbitGrowthRate)
1873            }
1874            "PROPERTY_FINANCIAL_OPERATING_PROFIT_GROWTH_RATE" => {
1875                Some(Self::PropertyFinancialOperatingProfitGrowthRate)
1876            }
1877            "PROPERTY_FINANCIAL_TOTAL_ASSETS_GROWTH_RATE" => {
1878                Some(Self::PropertyFinancialTotalAssetsGrowthRate)
1879            }
1880            "PROPERTY_FINANCIAL_PROFIT_TO_SHAREHOLDERS_GROWTH_RATE" => {
1881                Some(Self::PropertyFinancialProfitToShareholdersGrowthRate)
1882            }
1883            "PROPERTY_FINANCIAL_PROFIT_BEFORE_TAX_GROWTH_RATE" => {
1884                Some(Self::PropertyFinancialProfitBeforeTaxGrowthRate)
1885            }
1886            "PROPERTY_FINANCIAL_EPS_GROWTH_RATE" => {
1887                Some(Self::PropertyFinancialEpsGrowthRate)
1888            }
1889            "PROPERTY_FINANCIAL_ROE_GROWTH_RATE" => {
1890                Some(Self::PropertyFinancialRoeGrowthRate)
1891            }
1892            "PROPERTY_FINANCIAL_ROIC_GROWTH_RATE" => {
1893                Some(Self::PropertyFinancialRoicGrowthRate)
1894            }
1895            "PROPERTY_FINANCIAL_NOCF_GROWTH_RATE" => {
1896                Some(Self::PropertyFinancialNocfGrowthRate)
1897            }
1898            "PROPERTY_FINANCIAL_NOCF_PER_SHARE_GROWTH_RATE" => {
1899                Some(Self::PropertyFinancialNocfPerShareGrowthRate)
1900            }
1901            "PROPERTY_FINANCIAL_OPERATING_REVENUE_CASH_COVER" => {
1902                Some(Self::PropertyFinancialOperatingRevenueCashCover)
1903            }
1904            "PROPERTY_FINANCIAL_OPERATING_PROFIT_TO_TOTAL_PROFIT" => {
1905                Some(Self::PropertyFinancialOperatingProfitToTotalProfit)
1906            }
1907            "PROPERTY_FINANCIAL_BASIC_EPS" => Some(Self::PropertyFinancialBasicEps),
1908            "PROPERTY_FINANCIAL_DILUTED_EPS" => Some(Self::PropertyFinancialDilutedEps),
1909            "PROPERTY_FINANCIAL_NOCF_PER_SHARE" => {
1910                Some(Self::PropertyFinancialNocfPerShare)
1911            }
1912            "PROPERTY_FINANCIAL_TOTAL_SHARE" => Some(Self::PropertyFinancialTotalShare),
1913            "PROPERTY_FINANCIAL_FLOAT_SHARE" => Some(Self::PropertyFinancialFloatShare),
1914            "PROPERTY_FINANCIAL_FLOAT_MARKET_CAP" => {
1915                Some(Self::PropertyFinancialFloatMarketCap)
1916            }
1917            "PROPERTY_FINANCIAL_PS_TTM" => Some(Self::PropertyFinancialPsTtm),
1918            "PROPERTY_FINANCIAL_PRICE_CASH_FLOW_RATIO_TTM" => {
1919                Some(Self::PropertyFinancialPriceCashFlowRatioTtm)
1920            }
1921            _ => None,
1922        }
1923    }
1924}
1925#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1926#[repr(i32)]
1927pub enum Indicator {
1928    /// 未知
1929    Unknown = 0,
1930    /// 最新价格 (单位:0.001元 倍率:1000)
1931    Price = 1,
1932    /// 5日简单均线 (单位:0.001元 倍率:1000)
1933    Ma5 = 11,
1934    /// 10日简单均线 (单位:0.001元 倍率:1000)
1935    Ma10 = 12,
1936    /// 20日简单均线 (单位:0.001元 倍率:1000)
1937    Ma20 = 13,
1938    /// 30日简单均线 (单位:0.001元 倍率:1000)
1939    Ma30 = 14,
1940    /// 60日简单均线 (单位:0.001元 倍率:1000)
1941    Ma60 = 15,
1942    /// 120日简单均线 (单位:0.001元 倍率:1000)
1943    Ma120 = 16,
1944    /// 250日简单均线 (单位:0.001元 倍率:1000)
1945    Ma250 = 17,
1946    /// 动态简单均线 (单位:0.001元 倍率:1000)
1947    Ma = 18,
1948    /// 5日指数移动均线 (单位:0.001元 倍率:1000)
1949    Ema5 = 21,
1950    /// 10日指数移动均线 (单位:0.001元 倍率:1000)
1951    Ema10 = 22,
1952    /// 20日指数移动均线 (单位:0.001元 倍率:1000)
1953    Ema20 = 23,
1954    /// 30日指数移动均线 (单位:0.001元 倍率:1000)
1955    Ema30 = 24,
1956    /// 60日指数移动均线 (单位:0.001元 倍率:1000)
1957    Ema60 = 25,
1958    /// 120日指数移动均线 (单位:0.001元 倍率:1000)
1959    Ema120 = 26,
1960    /// 250日指数移动均线 (单位:0.001元 倍率:1000)
1961    Ema250 = 27,
1962    /// 动态指数移动均线 (单位:0.001元 倍率:1000)
1963    Ema = 28,
1964    /// KDJ(9,3,3)的K值 (单位:0.001% 倍率:100000)
1965    Kdj933K = 31,
1966    /// KDJ(9,3,3)的D值 (单位:0.001% 倍率:100000)
1967    Kdj933D = 32,
1968    /// KDJ(9,3,3)的J值 (单位:0.001% 倍率:100000)
1969    Kdj933J = 33,
1970    /// 动态KDJ的K值 (单位:0.001% 倍率:100000)
1971    KdjK = 34,
1972    /// 动态KDJ的D值 (单位:0.001% 倍率:100000)
1973    KdjD = 35,
1974    /// 动态KDJ的J值  (单位:0.001% 倍率:100000)
1975    KdjJ = 36,
1976    /// MACD(12,26,9)的DIF值 (单位:0.001元 倍率:1000)
1977    Macd12269Dif = 41,
1978    /// MACD(12,26,9)的DEA值 (单位:0.001元 倍率:1000)
1979    Macd12269Dea = 42,
1980    /// MACD(12,26,9)的MACD值 (单位:0.001元 倍率:1000)
1981    Macd12269Macd = 43,
1982    /// 动态MACD的DIF值 (单位:0.001元 倍率:1000)
1983    MacdDif = 44,
1984    /// 动态MACD的DEA值 (单位:0.001元 倍率:1000)
1985    MacdDea = 45,
1986    /// 动态MACD的MACD值 (单位:0.001元 倍率:1000)
1987    MacdMacd = 46,
1988    /// RSI(12) (单位:0.001% 倍率:100000)
1989    Rsi12 = 51,
1990    /// 动态RSI (单位:0.001% 倍率:100000)
1991    Rsi = 52,
1992    /// BOLL(20,2)的UPPER值 (单位:0.001元 倍率:1000)
1993    Boll202Upper = 61,
1994    /// BOLL(20,2)的MIDDLER值 (单位:0.001元 倍率:1000)
1995    Boll202Middle = 62,
1996    /// BOLL(20,2)的LOWER值 (单位:0.001元 倍率:1000)
1997    Boll202Lower = 63,
1998    /// 动态BOLL的UPPER值 (单位:0.001元 倍率:1000)
1999    BollUpper = 64,
2000    /// 动态BOLL的MIDDLE值 (单位:0.001元 倍率:1000)
2001    BollMiddle = 65,
2002    /// 动态BOLL的LOWER值 (单位:0.001元 倍率:1000)
2003    BollLower = 66,
2004}
2005impl Indicator {
2006    /// String value of the enum field names used in the ProtoBuf definition.
2007    ///
2008    /// The values are not transformed in any way and thus are considered stable
2009    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2010    pub fn as_str_name(&self) -> &'static str {
2011        match self {
2012            Self::Unknown => "INDICATOR_UNKNOWN",
2013            Self::Price => "INDICATOR_PRICE",
2014            Self::Ma5 => "INDICATOR_MA5",
2015            Self::Ma10 => "INDICATOR_MA10",
2016            Self::Ma20 => "INDICATOR_MA20",
2017            Self::Ma30 => "INDICATOR_MA30",
2018            Self::Ma60 => "INDICATOR_MA60",
2019            Self::Ma120 => "INDICATOR_MA120",
2020            Self::Ma250 => "INDICATOR_MA250",
2021            Self::Ma => "INDICATOR_MA",
2022            Self::Ema5 => "INDICATOR_EMA5",
2023            Self::Ema10 => "INDICATOR_EMA10",
2024            Self::Ema20 => "INDICATOR_EMA20",
2025            Self::Ema30 => "INDICATOR_EMA30",
2026            Self::Ema60 => "INDICATOR_EMA60",
2027            Self::Ema120 => "INDICATOR_EMA120",
2028            Self::Ema250 => "INDICATOR_EMA250",
2029            Self::Ema => "INDICATOR_EMA",
2030            Self::Kdj933K => "INDICATOR_KDJ_9_3_3_K",
2031            Self::Kdj933D => "INDICATOR_KDJ_9_3_3_D",
2032            Self::Kdj933J => "INDICATOR_KDJ_9_3_3_J",
2033            Self::KdjK => "INDICATOR_KDJ_K",
2034            Self::KdjD => "INDICATOR_KDJ_D",
2035            Self::KdjJ => "INDICATOR_KDJ_J",
2036            Self::Macd12269Dif => "INDICATOR_MACD_12_26_9_DIF",
2037            Self::Macd12269Dea => "INDICATOR_MACD_12_26_9_DEA",
2038            Self::Macd12269Macd => "INDICATOR_MACD_12_26_9_MACD",
2039            Self::MacdDif => "INDICATOR_MACD_DIF",
2040            Self::MacdDea => "INDICATOR_MACD_DEA",
2041            Self::MacdMacd => "INDICATOR_MACD_MACD",
2042            Self::Rsi12 => "INDICATOR_RSI_12",
2043            Self::Rsi => "INDICATOR_RSI",
2044            Self::Boll202Upper => "INDICATOR_BOLL_20_2_UPPER",
2045            Self::Boll202Middle => "INDICATOR_BOLL_20_2_MIDDLE",
2046            Self::Boll202Lower => "INDICATOR_BOLL_20_2_LOWER",
2047            Self::BollUpper => "INDICATOR_BOLL_UPPER",
2048            Self::BollMiddle => "INDICATOR_BOLL_MIDDLE",
2049            Self::BollLower => "INDICATOR_BOLL_LOWER",
2050        }
2051    }
2052    /// Creates an enum from field names used in the ProtoBuf definition.
2053    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2054        match value {
2055            "INDICATOR_UNKNOWN" => Some(Self::Unknown),
2056            "INDICATOR_PRICE" => Some(Self::Price),
2057            "INDICATOR_MA5" => Some(Self::Ma5),
2058            "INDICATOR_MA10" => Some(Self::Ma10),
2059            "INDICATOR_MA20" => Some(Self::Ma20),
2060            "INDICATOR_MA30" => Some(Self::Ma30),
2061            "INDICATOR_MA60" => Some(Self::Ma60),
2062            "INDICATOR_MA120" => Some(Self::Ma120),
2063            "INDICATOR_MA250" => Some(Self::Ma250),
2064            "INDICATOR_MA" => Some(Self::Ma),
2065            "INDICATOR_EMA5" => Some(Self::Ema5),
2066            "INDICATOR_EMA10" => Some(Self::Ema10),
2067            "INDICATOR_EMA20" => Some(Self::Ema20),
2068            "INDICATOR_EMA30" => Some(Self::Ema30),
2069            "INDICATOR_EMA60" => Some(Self::Ema60),
2070            "INDICATOR_EMA120" => Some(Self::Ema120),
2071            "INDICATOR_EMA250" => Some(Self::Ema250),
2072            "INDICATOR_EMA" => Some(Self::Ema),
2073            "INDICATOR_KDJ_9_3_3_K" => Some(Self::Kdj933K),
2074            "INDICATOR_KDJ_9_3_3_D" => Some(Self::Kdj933D),
2075            "INDICATOR_KDJ_9_3_3_J" => Some(Self::Kdj933J),
2076            "INDICATOR_KDJ_K" => Some(Self::KdjK),
2077            "INDICATOR_KDJ_D" => Some(Self::KdjD),
2078            "INDICATOR_KDJ_J" => Some(Self::KdjJ),
2079            "INDICATOR_MACD_12_26_9_DIF" => Some(Self::Macd12269Dif),
2080            "INDICATOR_MACD_12_26_9_DEA" => Some(Self::Macd12269Dea),
2081            "INDICATOR_MACD_12_26_9_MACD" => Some(Self::Macd12269Macd),
2082            "INDICATOR_MACD_DIF" => Some(Self::MacdDif),
2083            "INDICATOR_MACD_DEA" => Some(Self::MacdDea),
2084            "INDICATOR_MACD_MACD" => Some(Self::MacdMacd),
2085            "INDICATOR_RSI_12" => Some(Self::Rsi12),
2086            "INDICATOR_RSI" => Some(Self::Rsi),
2087            "INDICATOR_BOLL_20_2_UPPER" => Some(Self::Boll202Upper),
2088            "INDICATOR_BOLL_20_2_MIDDLE" => Some(Self::Boll202Middle),
2089            "INDICATOR_BOLL_20_2_LOWER" => Some(Self::Boll202Lower),
2090            "INDICATOR_BOLL_UPPER" => Some(Self::BollUpper),
2091            "INDICATOR_BOLL_MIDDLE" => Some(Self::BollMiddle),
2092            "INDICATOR_BOLL_LOWER" => Some(Self::BollLower),
2093            _ => None,
2094        }
2095    }
2096}
2097#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2098#[repr(i32)]
2099pub enum Pattern {
2100    /// 未知
2101    Unknown = 0,
2102    /// MA多头排列
2103    MaAlignmentLong = 1,
2104    /// MA空头排列
2105    MaAlignmentShort = 2,
2106    /// EMA多头排列
2107    EmaAlignmentLong = 3,
2108    /// EMA空头排列
2109    EmaAlignmentShort = 4,
2110    /// KDJ低位金叉
2111    KdjGoldCrossLow = 11,
2112    /// KDJ高位死叉
2113    KdjDeathCrossHigh = 12,
2114    /// KDJ顶背离
2115    KdjTopDivergence = 13,
2116    /// KDJ底背离
2117    KdjBottomDivergence = 14,
2118    /// MACD低位金叉
2119    MacdGoldCrossLow = 21,
2120    /// MACD高位死叉
2121    MacdDeathCrossHigh = 22,
2122    /// MACD顶背离
2123    MacdTopDivergence = 23,
2124    /// MACD底背离
2125    MacdBottomDivergence = 24,
2126    /// RSI低位金叉
2127    RsiGoldCrossLow = 31,
2128    /// RSI高位死叉
2129    RsiDeathCrossHigh = 32,
2130    /// RSI顶背离
2131    RsiTopDivergence = 33,
2132    /// RSI底背离
2133    RsiBottomDivergence = 34,
2134    /// BOLL突破上轨
2135    BollBreakUpper = 41,
2136    /// BOLL突破下轨
2137    BollBreakLower = 42,
2138    /// BOLL向上破中轨
2139    BollCrossMiddleUp = 43,
2140    /// BOLL向下破中轨
2141    BollCrossMiddleDown = 44,
2142}
2143impl Pattern {
2144    /// String value of the enum field names used in the ProtoBuf definition.
2145    ///
2146    /// The values are not transformed in any way and thus are considered stable
2147    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2148    pub fn as_str_name(&self) -> &'static str {
2149        match self {
2150            Self::Unknown => "PATTERN_UNKNOWN",
2151            Self::MaAlignmentLong => "PATTERN_MA_ALIGNMENT_LONG",
2152            Self::MaAlignmentShort => "PATTERN_MA_ALIGNMENT_SHORT",
2153            Self::EmaAlignmentLong => "PATTERN_EMA_ALIGNMENT_LONG",
2154            Self::EmaAlignmentShort => "PATTERN_EMA_ALIGNMENT_SHORT",
2155            Self::KdjGoldCrossLow => "PATTERN_KDJ_GOLD_CROSS_LOW",
2156            Self::KdjDeathCrossHigh => "PATTERN_KDJ_DEATH_CROSS_HIGH",
2157            Self::KdjTopDivergence => "PATTERN_KDJ_TOP_DIVERGENCE",
2158            Self::KdjBottomDivergence => "PATTERN_KDJ_BOTTOM_DIVERGENCE",
2159            Self::MacdGoldCrossLow => "PATTERN_MACD_GOLD_CROSS_LOW",
2160            Self::MacdDeathCrossHigh => "PATTERN_MACD_DEATH_CROSS_HIGH",
2161            Self::MacdTopDivergence => "PATTERN_MACD_TOP_DIVERGENCE",
2162            Self::MacdBottomDivergence => "PATTERN_MACD_BOTTOM_DIVERGENCE",
2163            Self::RsiGoldCrossLow => "PATTERN_RSI_GOLD_CROSS_LOW",
2164            Self::RsiDeathCrossHigh => "PATTERN_RSI_DEATH_CROSS_HIGH",
2165            Self::RsiTopDivergence => "PATTERN_RSI_TOP_DIVERGENCE",
2166            Self::RsiBottomDivergence => "PATTERN_RSI_BOTTOM_DIVERGENCE",
2167            Self::BollBreakUpper => "PATTERN_BOLL_BREAK_UPPER",
2168            Self::BollBreakLower => "PATTERN_BOLL_BREAK_LOWER",
2169            Self::BollCrossMiddleUp => "PATTERN_BOLL_CROSS_MIDDLE_UP",
2170            Self::BollCrossMiddleDown => "PATTERN_BOLL_CROSS_MIDDLE_DOWN",
2171        }
2172    }
2173    /// Creates an enum from field names used in the ProtoBuf definition.
2174    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2175        match value {
2176            "PATTERN_UNKNOWN" => Some(Self::Unknown),
2177            "PATTERN_MA_ALIGNMENT_LONG" => Some(Self::MaAlignmentLong),
2178            "PATTERN_MA_ALIGNMENT_SHORT" => Some(Self::MaAlignmentShort),
2179            "PATTERN_EMA_ALIGNMENT_LONG" => Some(Self::EmaAlignmentLong),
2180            "PATTERN_EMA_ALIGNMENT_SHORT" => Some(Self::EmaAlignmentShort),
2181            "PATTERN_KDJ_GOLD_CROSS_LOW" => Some(Self::KdjGoldCrossLow),
2182            "PATTERN_KDJ_DEATH_CROSS_HIGH" => Some(Self::KdjDeathCrossHigh),
2183            "PATTERN_KDJ_TOP_DIVERGENCE" => Some(Self::KdjTopDivergence),
2184            "PATTERN_KDJ_BOTTOM_DIVERGENCE" => Some(Self::KdjBottomDivergence),
2185            "PATTERN_MACD_GOLD_CROSS_LOW" => Some(Self::MacdGoldCrossLow),
2186            "PATTERN_MACD_DEATH_CROSS_HIGH" => Some(Self::MacdDeathCrossHigh),
2187            "PATTERN_MACD_TOP_DIVERGENCE" => Some(Self::MacdTopDivergence),
2188            "PATTERN_MACD_BOTTOM_DIVERGENCE" => Some(Self::MacdBottomDivergence),
2189            "PATTERN_RSI_GOLD_CROSS_LOW" => Some(Self::RsiGoldCrossLow),
2190            "PATTERN_RSI_DEATH_CROSS_HIGH" => Some(Self::RsiDeathCrossHigh),
2191            "PATTERN_RSI_TOP_DIVERGENCE" => Some(Self::RsiTopDivergence),
2192            "PATTERN_RSI_BOTTOM_DIVERGENCE" => Some(Self::RsiBottomDivergence),
2193            "PATTERN_BOLL_BREAK_UPPER" => Some(Self::BollBreakUpper),
2194            "PATTERN_BOLL_BREAK_LOWER" => Some(Self::BollBreakLower),
2195            "PATTERN_BOLL_CROSS_MIDDLE_UP" => Some(Self::BollCrossMiddleUp),
2196            "PATTERN_BOLL_CROSS_MIDDLE_DOWN" => Some(Self::BollCrossMiddleDown),
2197            _ => None,
2198        }
2199    }
2200}
2201/// 特色指标
2202#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2203#[repr(i32)]
2204pub enum Featured {
2205    /// 筹码
2206    ///
2207    /// 筹码获利比例 (单位:0.001% 倍率:100000)
2208    ChipsProfitRatio = 5101,
2209    /// 筹码区间重合度 (单位:0.001% 倍率:100000)
2210    ChipsIntervalCoincidence = 5102,
2211    /// 指标解读
2212    ///
2213    /// 指标解读状态(单位:0.001 倍率:1000)
2214    IndicatorAnalysisStatus = 5201,
2215    /// 舆情指数
2216    ///
2217    /// 舆情指数状态(单位:0.001 倍率:1000)
2218    PublicOpinionIndexStatus = 5301,
2219    /// 分析师评级
2220    ///
2221    /// 分析师评级状态(单位:0.001 倍率:1000)
2222    AnalysisLevelStatus = 5401,
2223    /// 公司估值
2224    ///
2225    /// PB高于历史百分位 (单位:0.001% 倍率:100000)
2226    CompanyValuationOverHistPercentilePb = 5501,
2227    /// PE高于历史百分位 (单位:0.001% 倍率:100000)
2228    CompanyValuationOverHistPercentilePe = 5502,
2229    /// PS高于历史百分位 (单位:0.001% 倍率:100000)
2230    CompanyValuationOverHistPercentilePs = 5503,
2231    /// PB估值行业排行(单位:1 倍率:1)
2232    CompanyValuationIndustryRankPb = 5504,
2233    /// PE估值行业排行(单位:1 倍率:1)
2234    CompanyValuetionIndustryRankPe = 5505,
2235    /// PS估值行业排行(单位:1 倍率:1)
2236    CompanyValuetionIndustryRankPs = 5506,
2237    /// PB估值市场排行(单位:1 倍率:1)
2238    CompanyValuationMarketRankPb = 5507,
2239    /// PE估值市场排行(单位:1 倍率:1)
2240    CompanyValuationMarketRankPe = 5508,
2241    /// PS估值市场排行(单位:1 倍率:1)
2242    CompanyValuationMarketRankPs = 5509,
2243}
2244impl Featured {
2245    /// String value of the enum field names used in the ProtoBuf definition.
2246    ///
2247    /// The values are not transformed in any way and thus are considered stable
2248    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2249    pub fn as_str_name(&self) -> &'static str {
2250        match self {
2251            Self::ChipsProfitRatio => "FEATURED_CHIPS_PROFIT_RATIO",
2252            Self::ChipsIntervalCoincidence => "FEATURED_CHIPS_INTERVAL_COINCIDENCE",
2253            Self::IndicatorAnalysisStatus => "FEATURED_INDICATOR_ANALYSIS_STATUS",
2254            Self::PublicOpinionIndexStatus => "FEATURED_PUBLIC_OPINION_INDEX_STATUS",
2255            Self::AnalysisLevelStatus => "FEATURED_ANALYSIS_LEVEL_STATUS",
2256            Self::CompanyValuationOverHistPercentilePb => {
2257                "FEATURED_COMPANY_VALUATION_OVER_HIST_PERCENTILE_PB"
2258            }
2259            Self::CompanyValuationOverHistPercentilePe => {
2260                "FEATURED_COMPANY_VALUATION_OVER_HIST_PERCENTILE_PE"
2261            }
2262            Self::CompanyValuationOverHistPercentilePs => {
2263                "FEATURED_COMPANY_VALUATION_OVER_HIST_PERCENTILE_PS"
2264            }
2265            Self::CompanyValuationIndustryRankPb => {
2266                "FEATURED_COMPANY_VALUATION_INDUSTRY_RANK_PB"
2267            }
2268            Self::CompanyValuetionIndustryRankPe => {
2269                "FEATURED_COMPANY_VALUETION_INDUSTRY_RANK_PE"
2270            }
2271            Self::CompanyValuetionIndustryRankPs => {
2272                "FEATURED_COMPANY_VALUETION_INDUSTRY_RANK_PS"
2273            }
2274            Self::CompanyValuationMarketRankPb => {
2275                "FEATURED_COMPANY_VALUATION_MARKET_RANK_PB"
2276            }
2277            Self::CompanyValuationMarketRankPe => {
2278                "FEATURED_COMPANY_VALUATION_MARKET_RANK_PE"
2279            }
2280            Self::CompanyValuationMarketRankPs => {
2281                "FEATURED_COMPANY_VALUATION_MARKET_RANK_PS"
2282            }
2283        }
2284    }
2285    /// Creates an enum from field names used in the ProtoBuf definition.
2286    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2287        match value {
2288            "FEATURED_CHIPS_PROFIT_RATIO" => Some(Self::ChipsProfitRatio),
2289            "FEATURED_CHIPS_INTERVAL_COINCIDENCE" => Some(Self::ChipsIntervalCoincidence),
2290            "FEATURED_INDICATOR_ANALYSIS_STATUS" => Some(Self::IndicatorAnalysisStatus),
2291            "FEATURED_PUBLIC_OPINION_INDEX_STATUS" => {
2292                Some(Self::PublicOpinionIndexStatus)
2293            }
2294            "FEATURED_ANALYSIS_LEVEL_STATUS" => Some(Self::AnalysisLevelStatus),
2295            "FEATURED_COMPANY_VALUATION_OVER_HIST_PERCENTILE_PB" => {
2296                Some(Self::CompanyValuationOverHistPercentilePb)
2297            }
2298            "FEATURED_COMPANY_VALUATION_OVER_HIST_PERCENTILE_PE" => {
2299                Some(Self::CompanyValuationOverHistPercentilePe)
2300            }
2301            "FEATURED_COMPANY_VALUATION_OVER_HIST_PERCENTILE_PS" => {
2302                Some(Self::CompanyValuationOverHistPercentilePs)
2303            }
2304            "FEATURED_COMPANY_VALUATION_INDUSTRY_RANK_PB" => {
2305                Some(Self::CompanyValuationIndustryRankPb)
2306            }
2307            "FEATURED_COMPANY_VALUETION_INDUSTRY_RANK_PE" => {
2308                Some(Self::CompanyValuetionIndustryRankPe)
2309            }
2310            "FEATURED_COMPANY_VALUETION_INDUSTRY_RANK_PS" => {
2311                Some(Self::CompanyValuetionIndustryRankPs)
2312            }
2313            "FEATURED_COMPANY_VALUATION_MARKET_RANK_PB" => {
2314                Some(Self::CompanyValuationMarketRankPb)
2315            }
2316            "FEATURED_COMPANY_VALUATION_MARKET_RANK_PE" => {
2317                Some(Self::CompanyValuationMarketRankPe)
2318            }
2319            "FEATURED_COMPANY_VALUATION_MARKET_RANK_PS" => {
2320                Some(Self::CompanyValuationMarketRankPs)
2321            }
2322            _ => None,
2323        }
2324    }
2325}
2326/// 经纪商持股
2327#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2328#[repr(i32)]
2329pub enum Broker {
2330    /// 持仓分布集中度 (其中的百分比单位:0.001% 倍率:100000)
2331    ConcentratedDistributionHoldings = 6101,
2332    /// 持仓经纪商变动 (其中的百分比单位:0.001% 倍率:100000)
2333    HoldingsChange = 6102,
2334    /// 持仓经纪商数量(单位:1 倍率:1)
2335    Num = 6103,
2336    /// 经纪商排行(单位:1 倍率:1)
2337    Rank = 6104,
2338    /// 经纪商持仓量占比(单位:0.001% 倍率:100000)
2339    HoldingsNum = 6105,
2340    /// 中央结算持股占比(单位:0.001% 倍率:100000)
2341    CentralTradeHoldingsRatio = 6106,
2342    /// 中央结算持股变动(单位:0.001% 倍率:100000)
2343    CentralTradeHoldingsChange = 6107,
2344}
2345impl Broker {
2346    /// String value of the enum field names used in the ProtoBuf definition.
2347    ///
2348    /// The values are not transformed in any way and thus are considered stable
2349    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2350    pub fn as_str_name(&self) -> &'static str {
2351        match self {
2352            Self::ConcentratedDistributionHoldings => {
2353                "BROKER_CONCENTRATED_DISTRIBUTION_HOLDINGS"
2354            }
2355            Self::HoldingsChange => "BROKER_HOLDINGS_CHANGE",
2356            Self::Num => "BROKER_NUM",
2357            Self::Rank => "BROKER_RANK",
2358            Self::HoldingsNum => "BROKER_HOLDINGS_NUM",
2359            Self::CentralTradeHoldingsRatio => "BROKER_CENTRAL_TRADE_HOLDINGS_RATIO",
2360            Self::CentralTradeHoldingsChange => "BROKER_CENTRAL_TRADE_HOLDINGS_CHANGE",
2361        }
2362    }
2363    /// Creates an enum from field names used in the ProtoBuf definition.
2364    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2365        match value {
2366            "BROKER_CONCENTRATED_DISTRIBUTION_HOLDINGS" => {
2367                Some(Self::ConcentratedDistributionHoldings)
2368            }
2369            "BROKER_HOLDINGS_CHANGE" => Some(Self::HoldingsChange),
2370            "BROKER_NUM" => Some(Self::Num),
2371            "BROKER_RANK" => Some(Self::Rank),
2372            "BROKER_HOLDINGS_NUM" => Some(Self::HoldingsNum),
2373            "BROKER_CENTRAL_TRADE_HOLDINGS_RATIO" => {
2374                Some(Self::CentralTradeHoldingsRatio)
2375            }
2376            "BROKER_CENTRAL_TRADE_HOLDINGS_CHANGE" => {
2377                Some(Self::CentralTradeHoldingsChange)
2378            }
2379            _ => None,
2380        }
2381    }
2382}
2383/// K线形态
2384#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2385#[repr(i32)]
2386pub enum KlinePattern {
2387    /// 三重底
2388    TripleBottom = 7101,
2389    /// 喇叭底
2390    HornBottom = 7102,
2391    /// W型底
2392    DoubleBottom = 7103,
2393    /// 头肩底
2394    HeadAndSholdersBottom = 7104,
2395    /// 看涨对称三角形
2396    BullishSymmetricalTriangle = 7105,
2397    /// 看涨旗形
2398    BullishFlag = 7106,
2399    /// 看涨持续菱形
2400    BullishContinuousDiamond = 7107,
2401    /// 圆弧底
2402    ArcBottom = 7108,
2403    /// 看涨持续楔形
2404    BullishSustainedWedge = 7109,
2405    /// 看涨持续三角形
2406    BullishContinuousTriangle = 7110,
2407    /// 喇叭顶
2408    HornTop = 7201,
2409    /// 看跌持续楔形
2410    BearishSustainedWedge = 7202,
2411    /// 看跌持续三角形
2412    BearishContinuousTriangle = 7203,
2413    /// M型顶
2414    DoubleTop = 7204,
2415    /// 看跌对称三角形
2416    BearishSymmetricalTriangle = 7205,
2417    /// 看跌旗形
2418    BearishFlag = 7206,
2419    /// 头肩顶
2420    HeadAndShouldersTop = 7207,
2421    /// 三重顶
2422    TripleTop = 7208,
2423    /// 看跌持续菱形
2424    BearishContinuousDiamond = 7209,
2425    /// 圆弧顶
2426    ArcTop = 7210,
2427}
2428impl KlinePattern {
2429    /// String value of the enum field names used in the ProtoBuf definition.
2430    ///
2431    /// The values are not transformed in any way and thus are considered stable
2432    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2433    pub fn as_str_name(&self) -> &'static str {
2434        match self {
2435            Self::TripleBottom => "KLINE_PATTERN_TRIPLE_BOTTOM",
2436            Self::HornBottom => "KLINE_PATTERN_HORN_BOTTOM",
2437            Self::DoubleBottom => "KLINE_PATTERN_DOUBLE_BOTTOM",
2438            Self::HeadAndSholdersBottom => "KLINE_PATTERN_HEAD_AND_SHOLDERS_BOTTOM",
2439            Self::BullishSymmetricalTriangle => {
2440                "KLINE_PATTERN_BULLISH_SYMMETRICAL_TRIANGLE"
2441            }
2442            Self::BullishFlag => "KLINE_PATTERN_BULLISH_FLAG",
2443            Self::BullishContinuousDiamond => "KLINE_PATTERN_BULLISH_CONTINUOUS_DIAMOND",
2444            Self::ArcBottom => "KLINE_PATTERN_ARC_BOTTOM",
2445            Self::BullishSustainedWedge => "KLINE_PATTERN_BULLISH_SUSTAINED_WEDGE",
2446            Self::BullishContinuousTriangle => {
2447                "KLINE_PATTERN_BULLISH_CONTINUOUS_TRIANGLE"
2448            }
2449            Self::HornTop => "KLINE_PATTERN_HORN_TOP",
2450            Self::BearishSustainedWedge => "KLINE_PATTERN_BEARISH_SUSTAINED_WEDGE",
2451            Self::BearishContinuousTriangle => {
2452                "KLINE_PATTERN_BEARISH_CONTINUOUS_TRIANGLE"
2453            }
2454            Self::DoubleTop => "KLINE_PATTERN_DOUBLE_TOP",
2455            Self::BearishSymmetricalTriangle => {
2456                "KLINE_PATTERN_BEARISH_SYMMETRICAL_TRIANGLE"
2457            }
2458            Self::BearishFlag => "KLINE_PATTERN_BEARISH_FLAG",
2459            Self::HeadAndShouldersTop => "KLINE_PATTERN_HEAD_AND_SHOULDERS_TOP",
2460            Self::TripleTop => "KLINE_PATTERN_TRIPLE_TOP",
2461            Self::BearishContinuousDiamond => "KLINE_PATTERN_BEARISH_CONTINUOUS_DIAMOND",
2462            Self::ArcTop => "KLINE_PATTERN_ARC_TOP",
2463        }
2464    }
2465    /// Creates an enum from field names used in the ProtoBuf definition.
2466    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2467        match value {
2468            "KLINE_PATTERN_TRIPLE_BOTTOM" => Some(Self::TripleBottom),
2469            "KLINE_PATTERN_HORN_BOTTOM" => Some(Self::HornBottom),
2470            "KLINE_PATTERN_DOUBLE_BOTTOM" => Some(Self::DoubleBottom),
2471            "KLINE_PATTERN_HEAD_AND_SHOLDERS_BOTTOM" => Some(Self::HeadAndSholdersBottom),
2472            "KLINE_PATTERN_BULLISH_SYMMETRICAL_TRIANGLE" => {
2473                Some(Self::BullishSymmetricalTriangle)
2474            }
2475            "KLINE_PATTERN_BULLISH_FLAG" => Some(Self::BullishFlag),
2476            "KLINE_PATTERN_BULLISH_CONTINUOUS_DIAMOND" => {
2477                Some(Self::BullishContinuousDiamond)
2478            }
2479            "KLINE_PATTERN_ARC_BOTTOM" => Some(Self::ArcBottom),
2480            "KLINE_PATTERN_BULLISH_SUSTAINED_WEDGE" => Some(Self::BullishSustainedWedge),
2481            "KLINE_PATTERN_BULLISH_CONTINUOUS_TRIANGLE" => {
2482                Some(Self::BullishContinuousTriangle)
2483            }
2484            "KLINE_PATTERN_HORN_TOP" => Some(Self::HornTop),
2485            "KLINE_PATTERN_BEARISH_SUSTAINED_WEDGE" => Some(Self::BearishSustainedWedge),
2486            "KLINE_PATTERN_BEARISH_CONTINUOUS_TRIANGLE" => {
2487                Some(Self::BearishContinuousTriangle)
2488            }
2489            "KLINE_PATTERN_DOUBLE_TOP" => Some(Self::DoubleTop),
2490            "KLINE_PATTERN_BEARISH_SYMMETRICAL_TRIANGLE" => {
2491                Some(Self::BearishSymmetricalTriangle)
2492            }
2493            "KLINE_PATTERN_BEARISH_FLAG" => Some(Self::BearishFlag),
2494            "KLINE_PATTERN_HEAD_AND_SHOULDERS_TOP" => Some(Self::HeadAndShouldersTop),
2495            "KLINE_PATTERN_TRIPLE_TOP" => Some(Self::TripleTop),
2496            "KLINE_PATTERN_BEARISH_CONTINUOUS_DIAMOND" => {
2497                Some(Self::BearishContinuousDiamond)
2498            }
2499            "KLINE_PATTERN_ARC_TOP" => Some(Self::ArcTop),
2500            _ => None,
2501        }
2502    }
2503}
2504#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2505#[repr(i32)]
2506pub enum Position {
2507    /// 未知
2508    Unknown = 0,
2509    /// first位于second的上方
2510    Over = 1,
2511    /// first位于second的下方
2512    Below = 2,
2513    /// first从下往上穿second
2514    CrossUp = 3,
2515    /// first从上往下穿second
2516    CrossDown = 4,
2517}
2518impl Position {
2519    /// String value of the enum field names used in the ProtoBuf definition.
2520    ///
2521    /// The values are not transformed in any way and thus are considered stable
2522    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2523    pub fn as_str_name(&self) -> &'static str {
2524        match self {
2525            Self::Unknown => "POSITION_UNKNOWN",
2526            Self::Over => "POSITION_OVER",
2527            Self::Below => "POSITION_BELOW",
2528            Self::CrossUp => "POSITION_CROSS_UP",
2529            Self::CrossDown => "POSITION_CROSS_DOWN",
2530        }
2531    }
2532    /// Creates an enum from field names used in the ProtoBuf definition.
2533    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2534        match value {
2535            "POSITION_UNKNOWN" => Some(Self::Unknown),
2536            "POSITION_OVER" => Some(Self::Over),
2537            "POSITION_BELOW" => Some(Self::Below),
2538            "POSITION_CROSS_UP" => Some(Self::CrossUp),
2539            "POSITION_CROSS_DOWN" => Some(Self::CrossDown),
2540            _ => None,
2541        }
2542    }
2543}
2544/// -----------------Sort Definitions-----------------
2545#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2546#[repr(i32)]
2547pub enum SortDirection {
2548    Ascending = 1,
2549    Descending = 2,
2550}
2551impl SortDirection {
2552    /// String value of the enum field names used in the ProtoBuf definition.
2553    ///
2554    /// The values are not transformed in any way and thus are considered stable
2555    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2556    pub fn as_str_name(&self) -> &'static str {
2557        match self {
2558            Self::Ascending => "SORT_DIRECTION_ASCENDING",
2559            Self::Descending => "SORT_DIRECTION_DESCENDING",
2560        }
2561    }
2562    /// Creates an enum from field names used in the ProtoBuf definition.
2563    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2564        match value {
2565            "SORT_DIRECTION_ASCENDING" => Some(Self::Ascending),
2566            "SORT_DIRECTION_DESCENDING" => Some(Self::Descending),
2567            _ => None,
2568        }
2569    }
2570}