Accounts and Positions

get_managed_accounts

Signature


pub async fn get_managed_accounts( &self, req: ManagedAccountsRequest, ) -> Result<Vec<ManagedAccount>, TigerError>

Description

Institutional master account.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Vec<ManagedAccount>, TigerError>. account: String, account_type: String, capability: String, status: String.

account/type/capability/status.

Example


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(())

}

Response example

[
  {
    "account": "402901",
    "account_type": "GLOBAL",
    "capability": "RegTMargin",
    "status": "TRADING"
  }
]

get_assets

Signature


pub async fn get_assets(&self, req: AssetsRequest) -> Result<Vec<Asset>, TigerError>

Description

Account injected; segment and market value omitted by default.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.sub_accountsOption<Vec<String>>OptionalNone (omitted)
req.segmentOption<bool>OptionalNone (omitted)
req.market_valueOption<bool>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • 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

capability/currency/buying power/cash/net liquidation/P&L/segments.

Example


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(())

}

Response example

[
  {
    "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
  }
]

get_prime_assets

Signature


pub async fn get_prime_assets( &self, req: AssetsRequest, ) -> Result<Option<PrimeAsset>, TigerError>

Description

Prime accounts; same request.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.sub_accountsOption<Vec<String>>OptionalNone (omitted)
req.segmentOption<bool>OptionalNone (omitted)
req.market_valueOption<bool>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Option<PrimeAsset>, TigerError>. account_id: String, update_timestamp: i64, segments: Vec

account/timestamp/segments with margin, buying power, currencies.

Example


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(())

}

Response example

{
  "account_id": "402901",
  "update_timestamp": 1738180800000,
  "segments": [
    {
      "category": "S",
      "currency": "USD",
      "buying_power": 150000.0,
      "cash": 85000.0,
      "gross_position_value": 165000.0
    }
  ]
}

get_aggregate_assets

Signature


pub async fn get_aggregate_assets( &self, req: AggregateAssetsRequest, ) -> Result<Option<AggregateAssets>, TigerError>

Description

Base currency/segment optional; supported aggregate/institutional accounts only.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.base_currencyOption<String>OptionalNone (omitted)
req.seg_typeOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • 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/net liquidation/position/cash/base/currency assets.

Example


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(())

}

Response example

{
  "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
    }
  ]
}

get_analytics_asset

Signature


pub async fn get_analytics_asset( &self, req: AnalyticsAssetRequest, ) -> Result<Vec<AnalyticsAsset>, TigerError>

Description

Dates are YYYY-MM-DD; segment optional.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.seg_typeOption<String>OptionalNone (omitted)
req.start_dateOption<String>OptionalNone (omitted)
req.end_dateOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • 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/cash/P&L/rate/index/currency/segment.

Example


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(())

}

Response example

[
  {
    "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"
  }
]

get_positions

Signature


pub async fn get_positions(&self, req: PositionsRequest) -> Result<Vec<Position>, TigerError>

Description

Account injected; filter by type/currency/market/symbol/subaccounts/option attributes.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.sec_typeOption<String>OptionalNone (omitted)
req.currencyOption<String>OptionalNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.symbolOption<String>OptionalNone (omitted)
req.sub_accountsOption<Vec<String>>OptionalNone (omitted)
req.expiryOption<String>OptionalNone (omitted)
req.strikeOption<String>OptionalNone (omitted)
req.rightOption<String>OptionalNone (omitted)
req.asset_quote_typeOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Vec<Position>, TigerError>. account: Option

Account, contract, quantity, cost, value, P&L, identifier, latest price.

Example


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(())

}

Response example

[
  {
    "account": "402901",
    "symbol": "AAPL",
    "sec_type": "STK",
    "market": "US",
    "currency": "USD",
    "position": 100,
    "average_cost": 178.35,
    "market_value": 19550.0
  }
]

get_estimate_tradable_quantity

Signature


pub async fn get_estimate_tradable_quantity( &self, req: EstimateTradableQuantityRequest, ) -> Result<Option<EstimateTradableQuantity>, TigerError>

Description

Symbol/type/action required; limit price conditional; derivative fields conditional.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.symbolOption<String>Required by server; SDK does not pre-validateNone (omitted)
req.sec_typeOption<String>Required by server; SDK does not pre-validateNone (omitted)
req.actionOption<String>Required by server; SDK does not pre-validateNone (omitted)
req.order_typeOption<String>OptionalNone (omitted)
req.limit_priceOption<f64>OptionalNone (omitted)
req.marketOption<String>OptionalNone (omitted)
req.currencyOption<String>OptionalNone (omitted)
req.expiryOption<String>OptionalNone (omitted)
req.strikeOption<String>OptionalNone (omitted)
req.rightOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • 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.

Tradable, cash/margin buy, short, position sell quantities, buying power.

Example


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(())

}

Response example

{
  "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"
}

get_derivative_contracts

Signature


pub async fn get_derivative_contracts( &self, req: DerivativeContractsRequest, ) -> Result<Vec<Contract>, TigerError>

Description

Symbols/type required; expiry optional.

Parameters

ParameterRust typeRequirementSDK default
req.accountOption<String>Optional; most TradeClient methods inject the default account when NoneNone (omitted)
req.symbolsOption<Vec<String>>OptionalNone (omitted)
req.sec_typeOption<String>OptionalNone (omitted)
req.expiryOption<String>OptionalNone (omitted)
req.langOption<String>OptionalNone (omitted)

Return

  • TradeClient: Result<Vec<Contract>, TigerError>. contract_id: Option, symbol: String, sec_type: String, currency: Option

Derivative contracts.

Example


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(())

}

Response example

[
  {
    "contract_id": 265598,
    "symbol": "AAPL",
    "sec_type": "OPT",
    "currency": "USD",
    "exchange": "CBOE",
    "primary_exchange": "CBOE",
    "expiry": "2025-02-21",
    "strike": 195.0
  }
]


Did this page help you?