futu_backend/trade_query/orders/
helpers.rs1use futu_cache::trd_cache::TrdCache;
5
6use crate::trade_cmd::{TradeQueryEnvironment, trade_query_route};
7
8use super::super::*;
9
10pub fn derive_acc_query_context_with_broker(
19 trd_cache: &TrdCache,
20 acc_id: u64,
21) -> (i32, Option<i32>, Vec<i32>, Option<u32>) {
22 if let Some(entry) = trd_cache.accounts.get(&acc_id) {
23 let acc = entry.value();
24 let broker_id = acc
25 .security_firm
26 .and_then(futu_core::trade_broker::broker_id_for_security_firm_like_cpp);
27 return (
28 acc.trd_env,
29 acc.trd_market,
30 acc.trd_market_auth_list.clone(),
31 broker_id,
32 );
33 }
34 (0, None, Vec::new(), None)
35}
36
37pub fn derive_acc_query_context(trd_cache: &TrdCache, acc_id: u64) -> (i32, Option<i32>, Vec<i32>) {
38 let (trd_env, account_trd_market, enabled_markets, _) =
39 derive_acc_query_context_with_broker(trd_cache, acc_id);
40 (trd_env, account_trd_market, enabled_markets)
41}
42
43fn query_environment(trd_env: i32) -> TradeQueryEnvironment {
44 if trd_env == 1 {
45 TradeQueryEnvironment::Real
46 } else {
47 TradeQueryEnvironment::Sim
48 }
49}
50
51pub fn order_fill_list_cmd_for_env(trd_env: i32) -> Option<u16> {
52 trade_query_route(TradeQueryOperation::Fills, query_environment(trd_env))
53 .map(|route| route.cmd_id)
54}
55
56pub fn order_info_cmd_for_env(trd_env: i32) -> Option<u16> {
57 trade_query_route(TradeQueryOperation::OrderInfo, query_environment(trd_env))
58 .map(|route| route.cmd_id)
59}
60
61pub fn order_fill_info_cmd_for_env(trd_env: i32) -> Option<u16> {
62 trade_query_route(TradeQueryOperation::FillInfo, query_environment(trd_env))
63 .map(|route| route.cmd_id)
64}
65
66pub fn history_order_list_cmd_for_env(trd_env: i32) -> Option<u16> {
67 trade_query_route(
68 TradeQueryOperation::HistoryOrders,
69 query_environment(trd_env),
70 )
71 .map(|route| route.cmd_id)
72}
73
74pub fn history_order_fill_list_cmd_for_env(trd_env: i32) -> Option<u16> {
75 trade_query_route(
76 TradeQueryOperation::HistoryFills,
77 query_environment(trd_env),
78 )
79 .map(|route| route.cmd_id)
80}