账户与持仓
获取管理的账户
签名
pub async fn get_managed_accounts( &self, req: ManagedAccountsRequest, ) -> Result<Vec<ManagedAccount>, TigerError>
说明
机构主账户;account 默认注入。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| req.account | Option<String> | 可选;多数 TradeClient 方法在 None 时注入默认账户 | None(不序列化) |
| req.lang | Option<String> | 可选 | None(不序列化) |
返回
TradeClient:Result<Vec<ManagedAccount>, TigerError>. account: String, account_type: String, capability: String, status: String.
account/account_type/capability/status。
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_managed_accounts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = trade.get_managed_accounts(ManagedAccountsRequest { ..Default::default() }).await?;
Ok(())
}
返回示例
[
{
"account": "402901",
"account_type": "GLOBAL",
"capability": "RegTMargin",
"status": "TRADING"
}
]获取环球账户资产
签名
pub async fn get_assets(&self, req: AssetsRequest) -> Result<Vec<Asset>, TigerError>
说明
account 默认注入;segment、market_value 默认不发送。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| req.account | Option<String> | 可选;多数 TradeClient 方法在 None 时注入默认账户 | None(不序列化) |
| req.sub_accounts | Option<Vec<String>> | 可选 | None(不序列化) |
| req.segment | Option<bool> | 可选 | None(不序列化) |
| req.market_value | Option<bool> | 可选 | None(不序列化) |
| req.lang | Option<String> | 可选 | None(不序列化) |
返回
TradeClient:Result<Vec<Asset>, TigerError>. account: String, capability: String, currency: String, buying_power: f64, cash_value: f64, net_liquidation: f64, realized_pnl: f64, unrealized_pnl: f64, segments: Vec
account/capability/currency/buying_power/cash/net_liquidation/P&L/segments。
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_assets(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = trade.get_assets(AssetsRequest { ..Default::default() }).await?;
Ok(())
}
返回示例
[
{
"account": "402901",
"capability": "RegTMargin",
"currency": "USD",
"buying_power": 150000.0,
"cash_value": 85000.0,
"net_liquidation": 250000.0,
"realized_pnl": 3200.5,
"unrealized_pnl": 1850.75
}
]获取综合/模拟账户资产
签名
pub async fn get_prime_assets( &self, req: AssetsRequest, ) -> Result<Option<PrimeAsset>, TigerError>
说明
综合账户;请求同资产。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| req.account | Option<String> | 可选;多数 TradeClient 方法在 None 时注入默认账户 | None(不序列化) |
| req.sub_accounts | Option<Vec<String>> | 可选 | None(不序列化) |
| req.segment | Option<bool> | 可选 | None(不序列化) |
| req.market_value | Option<bool> | 可选 | None(不序列化) |
| req.lang | Option<String> | 可选 | None(不序列化) |
返回
TradeClient:Result<Option<PrimeAsset>, TigerError>. account_id: String, update_timestamp: i64, segments: Vec
account_id/update_timestamp/segments,含保证金、购买力和币种明细。
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_prime_assets(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = trade.get_prime_assets(AssetsRequest { ..Default::default() }).await?;
Ok(())
}
返回示例
{
"account_id": "402901",
"update_timestamp": 1738180800000,
"segments": [
{
"category": "S",
"currency": "USD",
"buying_power": 150000.0,
"cash": 85000.0,
"gross_position_value": 165000.0
}
]
}获取聚合资产
签名
pub async fn get_aggregate_assets( &self, req: AggregateAssetsRequest, ) -> Result<Option<AggregateAssets>, TigerError>
说明
base_currency/分段可选;仅支持相应综合/机构账户。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| req.account | Option<String> | 可选;多数 TradeClient 方法在 None 时注入默认账户 | None(不序列化) |
| req.base_currency | Option<String> | 可选 | None(不序列化) |
| req.seg_type | Option<String> | 可选 | None(不序列化) |
| req.lang | Option<String> | 可选 | None(不序列化) |
返回
TradeClient:Result<Option<AggregateAssets>, TigerError>. account_id: String, net_liquidation: f64, gross_position_value: f64, cash_balance: f64, base_currency: String, currency_assets: Vec
account_id/net_liquidation/gross_position_value/cash/base_currency/currency_assets。
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_aggregate_assets(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = trade.get_aggregate_assets(AggregateAssetsRequest { ..Default::default() }).await?;
Ok(())
}
返回示例
{
"account_id": "402901",
"net_liquidation": 250000.0,
"gross_position_value": 165000.0,
"cash_balance": 85000.0,
"base_currency": "USD",
"currency_assets": [
{
"currency": "USD",
"cash_balance": 85000.0,
"net_liquidation": 250000.0
}
]
}获取历史资产分析
签名
pub async fn get_analytics_asset( &self, req: AnalyticsAssetRequest, ) -> Result<Vec<AnalyticsAsset>, TigerError>
说明
起止为 YYYY-MM-DD;分段可选。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| req.account | Option<String> | 可选;多数 TradeClient 方法在 None 时注入默认账户 | None(不序列化) |
| req.seg_type | Option<String> | 可选 | None(不序列化) |
| req.start_date | Option<String> | 可选 | None(不序列化) |
| req.end_date | Option<String> | 可选 | None(不序列化) |
| req.lang | Option<String> | 可选 | None(不序列化) |
返回
TradeClient:Result<Vec<AnalyticsAsset>, TigerError>. date: String, holding_value: f64, cash_balance: f64, pnl: f64, pnl_rate: f64, net_value_index: f64, currency: String, seg_type: String.
date/holding_value/cash_balance/pnl/pnl_rate/net_value_index/currency/seg_type。
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_analytics_asset(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = trade.get_analytics_asset(AnalyticsAssetRequest { ..Default::default() }).await?;
Ok(())
}
返回示例
[
{
"date": "2025-01-29",
"holding_value": 165000.0,
"cash_balance": 85000.0,
"pnl": 2350.8,
"pnl_rate": 0.0142,
"net_value_index": 1.0142,
"currency": "USD",
"seg_type": "SEC"
}
]获取持仓
签名
pub async fn get_positions(&self, req: PositionsRequest) -> Result<Vec<Position>, TigerError>
说明
account 默认注入;可按类型、币种、市场、symbol、子账户、期权属性过滤。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| req.account | Option<String> | 可选;多数 TradeClient 方法在 None 时注入默认账户 | None(不序列化) |
| req.sec_type | Option<String> | 可选 | None(不序列化) |
| req.currency | Option<String> | 可选 | None(不序列化) |
| req.market | Option<String> | 可选 | None(不序列化) |
| req.symbol | Option<String> | 可选 | None(不序列化) |
| req.sub_accounts | Option<Vec<String>> | 可选 | None(不序列化) |
| req.expiry | Option<String> | 可选 | None(不序列化) |
| req.strike | Option<String> | 可选 | None(不序列化) |
| req.right | Option<String> | 可选 | None(不序列化) |
| req.asset_quote_type | Option<String> | 可选 | None(不序列化) |
| req.lang | Option<String> | 可选 | None(不序列化) |
返回
TradeClient:Result<Vec<Position>, TigerError>. account: Option
account/symbol/type/market/currency/position/cost/value/realized/unrealized P&L/identifier/latest_price。
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_positions(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = trade.get_positions(PositionsRequest { ..Default::default() }).await?;
Ok(())
}
返回示例
[
{
"account": "402901",
"symbol": "AAPL",
"sec_type": "STK",
"market": "US",
"currency": "USD",
"position": 100,
"average_cost": 178.35,
"market_value": 19550.0
}
]预估可交易数量
签名
pub async fn get_estimate_tradable_quantity( &self, req: EstimateTradableQuantityRequest, ) -> Result<Option<EstimateTradableQuantity>, TigerError>
说明
symbol/sec_type/action 必填;限价类型需 limit_price;衍生品字段条件必填。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| req.account | Option<String> | 可选;多数 TradeClient 方法在 None 时注入默认账户 | None(不序列化) |
| req.symbol | Option<String> | 服务端必填;SDK 不预校验 | None(不序列化) |
| req.sec_type | Option<String> | 服务端必填;SDK 不预校验 | None(不序列化) |
| req.action | Option<String> | 服务端必填;SDK 不预校验 | None(不序列化) |
| req.order_type | Option<String> | 可选 | None(不序列化) |
| req.limit_price | Option<f64> | 可选 | None(不序列化) |
| req.market | Option<String> | 可选 | None(不序列化) |
| req.currency | Option<String> | 可选 | None(不序列化) |
| req.expiry | Option<String> | 可选 | None(不序列化) |
| req.strike | Option<String> | 可选 | None(不序列化) |
| req.right | Option<String> | 可选 | None(不序列化) |
| req.lang | Option<String> | 可选 | None(不序列化) |
返回
TradeClient:Result<Option<EstimateTradableQuantity>, TigerError>. tradable_quantity: f64, max_cash_buy_quantity: f64, max_margin_buy_quantity: f64, max_short_sell_quantity: f64, max_position_sell_quantity: f64, cash_buying_power: f64, currency: String.
可交易、现金买、融资买、卖空、持仓卖数量及购买力。
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_estimate_tradable_quantity(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = trade.get_estimate_tradable_quantity(EstimateTradableQuantityRequest { symbol: Some("AAPL".into()), sec_type: Some("STK".into()), action: Some("BUY".into()), ..Default::default() }).await?;
Ok(())
}
返回示例
{
"tradable_quantity": 500,
"max_cash_buy_quantity": 430,
"max_margin_buy_quantity": 760,
"max_short_sell_quantity": 300,
"max_position_sell_quantity": 100,
"cash_buying_power": 85000.0,
"currency": "USD"
}获取衍生品合约
签名
pub async fn get_derivative_contracts( &self, req: DerivativeContractsRequest, ) -> Result<Vec<Contract>, TigerError>
说明
symbols/sec_type 必填;expiry 可选;账户默认注入。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| req.account | Option<String> | 可选;多数 TradeClient 方法在 None 时注入默认账户 | None(不序列化) |
| req.symbols | Option<Vec<String>> | 可选 | None(不序列化) |
| req.sec_type | Option<String> | 可选 | None(不序列化) |
| req.expiry | Option<String> | 可选 | None(不序列化) |
| req.lang | Option<String> | 可选 | None(不序列化) |
返回
TradeClient:Result<Vec<Contract>, TigerError>. contract_id: Option, symbol: String, sec_type: String, currency: Option
衍生品合约。
示例
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_derivative_contracts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = trade.get_derivative_contracts(DerivativeContractsRequest { ..Default::default() }).await?;
Ok(())
}
返回示例
[
{
"contract_id": 265598,
"symbol": "AAPL",
"sec_type": "OPT",
"currency": "USD",
"exchange": "CBOE",
"primary_exchange": "CBOE",
"expiry": "2025-02-21",
"strike": 195.0
}
]Updated 8 days ago
