账户管理

以下方法属于 TradeClient,账户字段为空时通常由 client 注入。资产与查询需要账户读取权限;外汇、资金调拨、转股和行权会改变账户状态,需相应账户类型、交易权限和机构密钥。所有时间戳除明确日期字符串外均为 Unix 毫秒。

持仓与资产

方法与方法签名参数、默认值与权限返回与关键字段
get_positions(&self, req: PositionsRequest) -> Result<Vec<Position>, TigerError>account 默认注入;可按类型、币种、市场、symbol、子账户、期权属性过滤。account/symbol/type/market/currency/position/cost/value/realized/unrealized P&L/identifier/latest_price。
get_assets(&self, req: AssetsRequest) -> Result<Vec<Asset>, TigerError>account 默认注入;segmentmarket_value 默认不发送。account/capability/currency/buying_power/cash/net_liquidation/P&L/segments。
get_prime_assets(&self, req: AssetsRequest) -> Result<Option<PrimeAsset>, TigerError>综合账户;请求同资产。account_id/update_timestamp/segments,含保证金、购买力和币种明细。
get_managed_accounts(&self, req: ManagedAccountsRequest) -> Result<Vec<ManagedAccount>, TigerError>机构主账户;account 默认注入。account/account_type/capability/status。
get_derivative_contracts(&self, req: DerivativeContractsRequest) -> Result<Vec<Contract>, TigerError>symbols/sec_type 必填;expiry 可选;账户默认注入。衍生品合约。
get_analytics_asset(&self, req: AnalyticsAssetRequest) -> Result<Vec<AnalyticsAsset>, TigerError>起止为 YYYY-MM-DD;分段可选。date/holding_value/cash_balance/pnl/pnl_rate/net_value_index/currency/seg_type。
get_aggregate_assets(&self, req: AggregateAssetsRequest) -> Result<Option<AggregateAssets>, TigerError>base_currency/分段可选;仅支持相应综合/机构账户。account_id/net_liquidation/gross_position_value/cash/base_currency/currency_assets。
get_estimate_tradable_quantity(&self, req: EstimateTradableQuantityRequest) -> Result<Option<EstimateTradableQuantity>, TigerError>symbol/sec_type/action 必填;限价类型需 limit_price;衍生品字段条件必填。可交易、现金买、融资买、卖空、持仓卖数量及购买力。

资金与外汇

方法与方法签名参数与约束返回
get_fund_details(&self, req: FundDetailsRequest) -> Result<Vec<FundDetails>, TigerError>可按 seg_types/fund_type/currency/毫秒范围/limit/token;account 默认注入。String id、分段、类型、币种、金额、余额、发生时间、备注。
get_funding_history(&self, req: FundingHistoryRequest) -> Result<Vec<FundingHistoryItem>, TigerError>分段、币种、毫秒范围、limit 可选。id/ref_id/type/amount/business_date/status/times。
place_forex_order(&self, req: ForexOrderRequest) -> Result<Option<ForexOrderResult>, TigerError>source/target currency 必填;source_amount 与 target_amount 按服务端规则选择;会提交兑换。String id/status/币种/金额/rate/submit_time。
get_segment_fund_available(&self, req: SegmentFundRequest) -> Result<Vec<SegmentFundAvailableItem>, TigerError>分段与币种按账户要求;account 默认注入。from_segment/currency/amount。
get_segment_fund_history(&self, req: SegmentFundRequest) -> Result<Vec<SegmentFundHistoryItem>, TigerError>可用分段、币种、limit。id/from/to/currency/amount/status/times。
transfer_segment_fund(&self, req: SegmentFundRequest) -> Result<Option<SegmentFund>, TigerError>from_segment/to_segment/currency/正金额必填;会改变资金。id 为 serde_json::Value,另含状态与时间。
cancel_segment_fund(&self, req: SegmentFundRequest) -> Result<Option<SegmentFund>, TigerError>id: Option<String> 必填;仅未执行申请。调拨结果。

持仓转移

方法与方法签名参数、权限与约束返回
transfer_position(&self, req: PositionTransferRequest) -> Result<Option<PositionTransferRecord>, TigerError>from_account/to_account/market/transfers 必填;每项 symbol/quantity/type,期权还需 expiry/strike/right;账户须允许内部转股。此方法不会自动注入账户。String id、from/to、market、status、submit_time、transfers。
get_position_transfer_records(&self, req: PositionTransferRecordsRequest) -> Result<Vec<PositionTransferRecord>, TigerError>account_id 默认注入;日期为 YYYY-MM-DD;market/limit 可选。转股记录列表。
get_position_transfer_detail(&self, req: PositionTransferDetailRequest) -> Result<Option<PositionTransferDetail>, TigerError>String id 必填;account_id 默认注入。详情、更新时间、项目和备注。
get_position_transfer_external_records(&self, req: PositionTransferExternalRecordsRequest) -> Result<Vec<PositionTransferExternalRecord>, TigerError>account_id 默认注入;日期/market/limit 可选。id/market/symbol/quantity/direction/status/times。

期权行权

机构高风险操作应通过配置或 TradeClient::with_secret_key 提供 secret_keyexercise_type wire 字段名为 type,值为 ExerciseExpire。先检查再提交;提交和撤销不应自动重试。

方法与方法签名条件必填与限制返回
option_exercise_check(&self, req: OptionExerciseCheckRequest) -> Result<Option<OptionExerciseCheckResult>, TigerError>contract_id/type/quantity 必填;Exercise 建议日期与 is_force;Expire 的 itm_rate 为 0..10。可用数量、期权与正股持仓及变化。
get_option_exercise_positions(&self, req: OptionExercisePositionRequest) -> Result<Option<OptionExercisePositionPageResult>, TigerError>type 可选;密钥/account 自动注入。page_num/page_size/item_count/page_count/items。
submit_option_exercise(&self, req: OptionExerciseSubmitRequest) -> Result<Option&#60;bool&#62;, TigerError>Exercise: executing_date/is_force 必填;Expire: itm_rate 可选 0..10;需可行权持仓。Some(true) 表示受理。
get_option_exercise_records(&self, req: OptionExerciseRecordsRequest) -> Result<Option<OptionExerciseRecordPageResult>, TigerError>SDK 字段均可选;服务端默认 page=1、size=20,size 1..100;状态 New/Cancel/Success/Fail分页记录,含申请/实际数量、状态、日期和原因。
cancel_option_exercise(&self, req: OptionExerciseCancelRequest) -> Result<Option&#60;bool&#62;, TigerError>记录 id 必填;仅 New 等可撤状态。Some(true) 表示受理。

示例

use tigeropen::config::ClientConfig;
use tigeropen::model::trade_requests::{AssetsRequest, PositionTransferRecordsRequest};
use tigeropen::trade::TradeClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let trade = TradeClient::from_config(ClientConfig::builder().build()?);
    let assets = trade.get_assets(AssetsRequest::default()).await?;
    let transfers = trade.get_position_transfer_records(PositionTransferRecordsRequest {
        limit: Some(20),
        ..Default::default()
    }).await?;
    println!("assets={}, transfers={}", assets.len(), transfers.len());
    Ok(())
}
[{"account":"***","currency":"USD","buyingPower":100000.0,"cashValue":50000.0,"netLiquidation":120000.0,"segments":[]}]

空 data 返回 None 或空 Vec;分页和频率按账户 API 规则执行。源码:TradeClient账户请求账户响应

本节页面


Did this page help you?