以下方法属于 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 默认注入;segment、market_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_key。exercise_type wire 字段名为 type,值为 Exercise 或 Expire。先检查再提交;提交和撤销不应自动重试。
| 方法与方法签名 | 条件必填与限制 | 返回 |
|---|
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<bool>, 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<bool>, 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、账户请求、账户响应。