Skip to main content

futu_core/
trade_broker.rs

1//! Trade-side broker identity tables shared by domain, gateway, and surfaces.
2//!
3//! Ref: `FutuOpenD/Src/NNBase/NNBase_Define_Enum.h:134-143` and C++
4//! `FutuOpenD/Src/APIServer/Business/Trade/_APIServer_Trd_Comm.cpp:3282-3336`.
5
6/// C++ `NN_BrokerID` values used by trade-side broker TCP routing.
7pub mod broker_id {
8    pub const FUTU_HK: u32 = 1001;
9    pub const FUTU_US: u32 = 1007;
10    pub const FUTU_SG: u32 = 1008;
11    pub const FUTU_AU: u32 = 1009;
12    pub const FUTU_JP: u32 = 1012;
13    pub const FUTU_MY: u32 = 1017;
14    pub const FUTU_CA: u32 = 1019;
15}
16
17/// `Trd_Common.SecurityFirm` values projected by C++ OpenD.
18pub mod security_firm_id {
19    pub const FUTU_HK: i32 = 1;
20    pub const FUTU_US: i32 = 2;
21    pub const FUTU_SG: i32 = 3;
22    pub const FUTU_AU: i32 = 4;
23    pub const FUTU_CA: i32 = 5;
24    pub const FUTU_MY: i32 = 6;
25    pub const FUTU_JP: i32 = 7;
26}
27
28/// Trade-side `SecurityFirm` -> C++ `NN_BrokerID`.
29#[must_use]
30pub fn broker_id_for_security_firm_like_cpp(security_firm: i32) -> Option<u32> {
31    match security_firm {
32        security_firm_id::FUTU_HK => Some(broker_id::FUTU_HK),
33        security_firm_id::FUTU_US => Some(broker_id::FUTU_US),
34        security_firm_id::FUTU_SG => Some(broker_id::FUTU_SG),
35        security_firm_id::FUTU_AU => Some(broker_id::FUTU_AU),
36        security_firm_id::FUTU_CA => Some(broker_id::FUTU_CA),
37        security_firm_id::FUTU_MY => Some(broker_id::FUTU_MY),
38        security_firm_id::FUTU_JP => Some(broker_id::FUTU_JP),
39        _ => None,
40    }
41}
42
43/// C++ broker id -> public `SecurityFirm`.
44#[must_use]
45pub fn security_firm_for_broker_id_like_cpp(broker_id: u32) -> i32 {
46    match broker_id {
47        broker_id::FUTU_HK => security_firm_id::FUTU_HK,
48        broker_id::FUTU_US => security_firm_id::FUTU_US,
49        broker_id::FUTU_SG => security_firm_id::FUTU_SG,
50        broker_id::FUTU_AU => security_firm_id::FUTU_AU,
51        broker_id::FUTU_CA => security_firm_id::FUTU_CA,
52        broker_id::FUTU_MY => security_firm_id::FUTU_MY,
53        broker_id::FUTU_JP => security_firm_id::FUTU_JP,
54        _ => 0,
55    }
56}
57
58#[must_use]
59pub fn is_futu_us_broker_id(broker_id: u32) -> bool {
60    broker_id == broker_id::FUTU_US
61}
62
63#[must_use]
64pub fn is_futu_jp_broker_id(broker_id: u32) -> bool {
65    broker_id == broker_id::FUTU_JP
66}