Skip to main content

first_valid_currency_for_account

Function first_valid_currency_for_account 

Source
pub fn first_valid_currency_for_account(
    security_firm: Option<i32>,
    trd_market: Option<i32>,
    uni_card_num: Option<&str>,
    trd_market_auth_list: &[i32],
) -> Option<i32>
Expand description

真实持仓刷新 CMD3020 使用的默认查询币种。

对齐 C++:

  • APIServer_Trd_GetPositionList.cpp:197,210INNProto_Trd_Acc::QueryPositionListNoLimit(...)
  • NNProto_Trd_Acc.cpp:787-801 内部调用 QueryAssetInner(false, INNData_Trd_CommonCurrency::GetAccountFirstValidCurrency(accItem), ...)
  • INNData_Trd_CommonCurrency.cpp:148-192 对 futures/universal 账户取 supported currency set 的 begin(),single-currency 账户走 GetTrdMarketCurrency.

注意这不是用户侧 GetFunds 默认币种策略。GetFunds 为 UX 会按券商本地 币种补齐未传 currency;GetPositionList 没有 currency 字段,只是在 C++ 内部用 first-valid currency 拉一次 AccountInfoReq 来刷新持仓 cache。

Hardcoded / Assumption Ledger:

  • supported currency set 来自本文件上方 C++ 对齐表,不按具体账号硬编码。
  • C++ 用 std::set<NN_TrdCurrency>::begin(),Rust 用数值最小 currency 等价表达;若 C++ 改为保持插入顺序,这里必须同步调整。