These are TradeClient methods. The client normally injects a missing account. Asset queries require account read permission; FX, funding, position transfer, and exercise change account state and require the applicable account type, permission, and institutional secret. Times are Unix milliseconds unless explicitly documented as date strings.
Method Parameters, defaults, permissions Return and key fields get_positions(&self, req: PositionsRequest) -> Result<Vec<Position>, TigerError>Account injected; filter by type/currency/market/symbol/subaccounts/option attributes. Account, contract, quantity, cost, value, P&L, identifier, latest price. get_assets(&self, req: AssetsRequest) -> Result<Vec<Asset>, TigerError>Account injected; segment and market value omitted by default. capability/currency/buying power/cash/net liquidation/P&L/segments. get_prime_assets(&self, req: AssetsRequest) -> Result<Option<PrimeAsset>, TigerError>Prime accounts; same request. account/timestamp/segments with margin, buying power, currencies. get_managed_accounts(&self, req: ManagedAccountsRequest) -> Result<Vec<ManagedAccount>, TigerError>Institutional master account. account/type/capability/status. get_derivative_contracts(&self, req: DerivativeContractsRequest) -> Result<Vec<Contract>, TigerError>Symbols/type required; expiry optional. Derivative contracts. get_analytics_asset(&self, req: AnalyticsAssetRequest) -> Result<Vec<AnalyticsAsset>, TigerError>Dates are YYYY-MM-DD; segment optional. date/holding/cash/P&L/rate/index/currency/segment. get_aggregate_assets(&self, req: AggregateAssetsRequest) -> Result<Option<AggregateAssets>, TigerError>Base currency/segment optional; supported aggregate/institutional accounts only. account/net liquidation/position/cash/base/currency assets. get_estimate_tradable_quantity(&self, req: EstimateTradableQuantityRequest) -> Result<Option<EstimateTradableQuantity>, TigerError>Symbol/type/action required; limit price conditional; derivative fields conditional. Tradable, cash/margin buy, short, position sell quantities, buying power.
Method Parameters and constraints Return get_fund_details(&self, req: FundDetailsRequest) -> Result<Vec<FundDetails>, TigerError>Filter segments/type/currency/millisecond range/limit/token. String id, segment/type/currency/amount/balance/time/remark. get_funding_history(&self, req: FundingHistoryRequest) -> Result<Vec<FundingHistoryItem>, TigerError>Segment/currency/range/limit optional. id/ref/type/amount/date/status/times. place_forex_order(&self, req: ForexOrderRequest) -> Result<Option<ForexOrderResult>, TigerError>Source/target currencies required; choose source or target amount according to server rules; submits conversion. String id/status/currencies/amounts/rate/time. get_segment_fund_available(&self, req: SegmentFundRequest) -> Result<Vec<SegmentFundAvailableItem>, TigerError>Segments/currency according to account. from segment/currency/amount. get_segment_fund_history(&self, req: SegmentFundRequest) -> Result<Vec<SegmentFundHistoryItem>, TigerError>Segment/currency/limit optional. id/from/to/currency/amount/status/times. transfer_segment_fund(&self, req: SegmentFundRequest) -> Result<Option<SegmentFund>, TigerError>From/to/currency/positive amount required; changes funds. serde_json::Value id, status, times.cancel_segment_fund(&self, req: SegmentFundRequest) -> Result<Option<SegmentFund>, TigerError>String id required; pending requests only. Transfer result.
Method Parameters and constraints Return transfer_position(&self, req: PositionTransferRequest) -> Result<Option<PositionTransferRecord>, TigerError>From/to account, market, transfers required; each has symbol/quantity/type and option attributes when applicable. Account must permit internal transfer. No account injection. String id/from/to/market/status/time/items. get_position_transfer_records(&self, req: PositionTransferRecordsRequest) -> Result<Vec<PositionTransferRecord>, TigerError>account_id injected; dates YYYY-MM-DD; market/limit optional. Records. get_position_transfer_detail(&self, req: PositionTransferDetailRequest) -> Result<Option<PositionTransferDetail>, TigerError>String id required; account_id injected. Detail, update time, items, remark. get_position_transfer_external_records(&self, req: PositionTransferExternalRecordsRequest) -> Result<Vec<PositionTransferExternalRecord>, TigerError>account_id injected; dates/market/limit optional. id/market/symbol/quantity/direction/status/times.
Provide secret_key through configuration or TradeClient::with_secret_key for institutional high-risk operations. exercise_type maps to wire type: Exercise or Expire. Check before submission; do not automatically retry submit/cancel.
Method Conditional requirements Return option_exercise_check(&self, req: OptionExerciseCheckRequest) -> Result<Option<OptionExerciseCheckResult>, TigerError>Contract/type/quantity required; date and force recommended for Exercise; Expire rate 0..10. Available quantity and option/stock positions/change. get_option_exercise_positions(&self, req: OptionExercisePositionRequest) -> Result<Option<OptionExercisePositionPageResult>, TigerError>Type optional; secret/account injected. Page metadata and items. submit_option_exercise(&self, req: OptionExerciseSubmitRequest) -> Result<Option<bool>, TigerError>Exercise requires date/force; Expire rate optional 0..10; exercisable position required. Some(true) means accepted.get_option_exercise_records(&self, req: OptionExerciseRecordsRequest) -> Result<Option<OptionExerciseRecordPageResult>, TigerError>SDK fields optional; server defaults page 1/size 20, size 1..100; statuses New/Cancel/Success/Fail. Page and exercise records. cancel_option_exercise(&self, req: OptionExerciseCancelRequest) -> Result<Option<bool>, TigerError>Record id required; cancellable state only. Accepted flag.
Rust
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(())
}
JSON
[{"account":"***","currency":"USD","buyingPower":100000.0,"cashValue":50000.0,"netLiquidation":120000.0,"segments":[]}]
Empty data becomes None or an empty Vec; follow account-specific paging and rate rules. Source: TradeClient , requests , responses .