订单查询

获取订单详情

签名

pub async fn get_order(&self, req: GetOrderRequest) -> Result<Option<Order>, TigerError>

说明

根据订单 ID 获取单个订单详情。idorder_id 至少传一个。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.idOption<i64>条件必填:id / order_id 至少一个None(不序列化)
req.order_idOption<i64>条件必填:id / order_id 至少一个None(不序列化)
req.is_briefOption<bool>可选None(不序列化)
req.show_chargesOption<bool>可选None(不序列化)
req.langOption<String>可选None(不序列化)

返回

Result<Option<Order>, TigerError>

字段类型说明
idi64全局订单 ID
order_idi64订单编号
accountString账户
symbolString股票代码
sec_typeString证券类型
actionString交易方向 BUY/SELL
order_typeString订单类型 MKT/LMT/STP/STP_LMT/TRAIL
total_quantityi64下单数量
filled_quantityi64已成交数量
limit_pricef64限价
aux_pricef64止损/跟踪价
avg_fill_pricef64按成交价格加权计算的成交均价,不含佣金和其他费用
statusString订单状态
time_in_forceString有效期 DAY/GTC/GTD
outside_rthbool是否允许盘前盘后
commissionf64佣金;模型使用非可空数值,字段缺失与明确返回 0 都表现为 0
realized_pnlf64已实现盈亏;佣金和 GST 通过独立字段返回。准确的计算口径和币种请以账户结单为准
open_timei64下单时间(毫秒)
update_timei64更新时间(毫秒)
latest_timei64最后状态变更时间
nameString股票名称
currencyString币种
marketString市场
user_markString用户备注
can_modifybool是否可改单
can_cancelbool是否可撤单

gstreplace_statuscancel_status 也由 Order 模型公开。gst 使用非可空数值,无法区分字段缺失和明确返回的 0replace_status/cancel_status 用于跟踪异步改单和撤单请求。

示例

use tigeropen::config::ClientConfig;
use tigeropen::model::trade_requests::GetOrderRequest;
use tigeropen::trade::TradeClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = ClientConfig::builder().build()?;
    let trade = TradeClient::from_config(config);
    let order = trade.get_order(GetOrderRequest { id: Some(31234567), ..Default::default() }).await?;
    if let Some(o) = order {
        println!("{} {} {} qty={} filled={} status={}", o.symbol, o.action, o.order_type, o.total_quantity, o.filled_quantity, o.status);
    }
    Ok(())
}

返回示例

{
  "id": 31234567,
  "orderId": 100234,
  "account": "402901",
  "symbol": "AAPL",
  "secType": "STK",
  "action": "BUY",
  "orderType": "LMT",
  "totalQuantity": 100,
  "filledQuantity": 100,
  "limitPrice": 195.50,
  "avgFillPrice": 195.48,
  "status": "Filled",
  "timeInForce": "DAY",
  "outsideRth": true,
  "commission": 1.99,
  "realizedPnl": 0.0,
  "openTime": 1719216000000,
  "currency": "USD",
  "market": "US",
  "canModify": false,
  "canCancel": false
}

请求频率

基础限流为 120 次/分钟


获取订单列表

签名

pub async fn get_orders(&self, req: OrdersRequest) -> Result<Vec<Order>, TigerError>

说明

获取账户所有订单,支持按状态、证券类型、时间等过滤。

start_dateend_date 均为可选;省略任一边界表示不应用对应方向的时间过滤。接口不限制最大查询跨度,但单次返回数量受 limit 限制。建议指定合理的有界时间范围。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.sec_typeOption<String>可选None(不序列化)
req.marketOption<String>可选None(不序列化)
req.symbolOption<String>可选None(不序列化)
req.start_dateOption<i64>可选;开始时间,Unix 毫秒时间戳None(不序列化)
req.end_dateOption<i64>可选;结束时间,Unix 毫秒时间戳None(不序列化)
req.limitOption<i32>可选;返回数量上限None(不序列化)
req.is_briefOption<bool>可选None(不序列化)
req.statesOption<Vec<String>>可选None(不序列化)
req.sort_byOption<String>可选None(不序列化)
req.seg_typeOption<String>可选None(不序列化)
req.langOption<String>可选None(不序列化)
req.page_tokenOption<String>可选;分页令牌None(不序列化)
req.parent_idOption<i64>可选None(不序列化)

返回

Result<Vec<Order>, TigerError>

返回字段同 获取订单详情

示例

let orders = trade.get_orders(OrdersRequest { limit: Some(20), ..Default::default() }).await?;
for o in &orders {
    println!("[{}] {} {} {} qty={} status={}", o.id, o.symbol, o.action, o.order_type, o.total_quantity, o.status);
}

返回示例

[
  {
    "id": 31234567,
    "orderId": 100234,
    "account": "402901",
    "symbol": "AAPL",
    "action": "BUY",
    "orderType": "LMT",
    "totalQuantity": 100,
    "filledQuantity": 100,
    "status": "Filled",
    "limitPrice": 195.50,
    "avgFillPrice": 195.48,
    "commission": 1.99,
    "openTime": 1719216000000
  }
]

请求频率

基础限流为 120 次/分钟


获取待成交订单

签名

pub async fn get_active_orders(&self, req: OrdersRequest) -> Result<Vec<Order>, TigerError>

说明

获取当前活跃(待成交)的订单。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.sec_typeOption<String>可选None(不序列化)
req.marketOption<String>可选None(不序列化)
req.symbolOption<String>可选None(不序列化)
req.start_dateOption<i64>可选;开始时间,Unix 毫秒时间戳None(不序列化)
req.end_dateOption<i64>可选;结束时间,Unix 毫秒时间戳None(不序列化)
req.limitOption<i32>可选;返回数量上限None(不序列化)
req.is_briefOption<bool>可选None(不序列化)
req.statesOption<Vec<String>>可选None(不序列化)
req.sort_byOption<String>可选None(不序列化)
req.seg_typeOption<String>可选None(不序列化)
req.langOption<String>可选None(不序列化)
req.page_tokenOption<String>可选;分页令牌None(不序列化)
req.parent_idOption<i64>可选None(不序列化)

返回

Result<Vec<Order>, TigerError>

返回字段同 获取订单详情

示例

let active = trade.get_active_orders(OrdersRequest::default()).await?;
println!("当前待成交订单 {} 笔", active.len());

返回示例

[{"id":31234567,"symbol":"AAPL","status":"Submitted"}]

请求频率

基础限流为 120 次/分钟


获取已撤销订单

签名

pub async fn get_inactive_orders(&self, req: OrdersRequest) -> Result<Vec<Order>, TigerError>

说明

获取已撤销或失效的订单。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.sec_typeOption<String>可选None(不序列化)
req.marketOption<String>可选None(不序列化)
req.symbolOption<String>可选None(不序列化)
req.start_dateOption<i64>可选;开始时间,Unix 毫秒时间戳None(不序列化)
req.end_dateOption<i64>可选;结束时间,Unix 毫秒时间戳None(不序列化)
req.limitOption<i32>可选;返回数量上限None(不序列化)
req.is_briefOption<bool>可选None(不序列化)
req.statesOption<Vec<String>>可选None(不序列化)
req.sort_byOption<String>可选None(不序列化)
req.seg_typeOption<String>可选None(不序列化)
req.langOption<String>可选None(不序列化)
req.page_tokenOption<String>可选;分页令牌None(不序列化)
req.parent_idOption<i64>可选None(不序列化)

返回

Result<Vec<Order>, TigerError>

返回字段同 获取订单详情

示例

let inactive = trade.get_inactive_orders(OrdersRequest::default()).await?;

返回示例

[{"id":31234567,"symbol":"AAPL","status":"Cancelled"}]

请求频率

基础限流为 120 次/分钟


获取已成交订单

签名

pub async fn get_filled_orders(&self, req: OrdersRequest) -> Result<Vec<Order>, TigerError>

说明

获取已成交的订单。可通过 start_date/end_date 过滤时间范围(13 位毫秒时间戳)。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.sec_typeOption<String>可选None(不序列化)
req.marketOption<String>可选None(不序列化)
req.symbolOption<String>可选None(不序列化)
req.start_dateOption<i64>可选;开始时间,Unix 毫秒时间戳None(不序列化)
req.end_dateOption<i64>可选;结束时间,Unix 毫秒时间戳None(不序列化)
req.limitOption<i32>可选;返回数量上限None(不序列化)
req.is_briefOption<bool>可选None(不序列化)
req.statesOption<Vec<String>>可选None(不序列化)
req.sort_byOption<String>可选None(不序列化)
req.seg_typeOption<String>可选None(不序列化)
req.langOption<String>可选None(不序列化)
req.page_tokenOption<String>可选;分页令牌None(不序列化)
req.parent_idOption<i64>可选None(不序列化)

返回

Result<Vec<Order>, TigerError>

返回字段同 获取订单详情

示例

let filled = trade.get_filled_orders(OrdersRequest::default()).await?;
for o in &filled {
    println!("{} {} 成交均价={} 佣金={}", o.symbol, o.action, o.avg_fill_price, o.commission);
}

返回示例

[{"id":31234567,"symbol":"AAPL","status":"Filled","filledQuantity":100,"avgFillPrice":195.48}]

请求频率

基础限流为 120 次/分钟


获取成交记录

签名

pub async fn get_order_transactions(&self, req: OrderTransactionsRequest) -> Result<Vec<Transaction>, TigerError>

说明

获取订单的成交明细记录。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.order_idOption<i64>可选;按订单 ID 过滤None(不序列化)
req.symbolOption<String>服务端必填;SDK 不预校验None(不序列化)
req.sec_typeOption<String>可选;按证券类型过滤None(不序列化)
req.start_dateOption<i64>可选;开始时间,Unix 毫秒时间戳None(不序列化)
req.end_dateOption<i64>可选;结束时间,Unix 毫秒时间戳None(不序列化)
req.limitOption<i32>可选;返回数量上限None(不序列化)
req.expiryOption<String>可选None(不序列化)
req.strikeOption<f64>可选None(不序列化)
req.put_callOption<String>可选None(不序列化)
req.langOption<String>可选None(不序列化)
req.page_tokenOption<String>可选;分页令牌None(不序列化)

返回

Result<Vec<Transaction>, TigerError>

字段类型说明
idi64成交 ID
order_idi64订单编号
accountString账户
symbolString股票代码
sec_typeString证券类型
actionString交易方向
filled_pricef64成交价格
filled_quantityi64成交数量
filled_amountf64成交金额
commissionf64佣金
transacted_atString成交时间
transaction_timei64成交时间戳(毫秒)
currencyString币种
marketString市场

示例

use tigeropen::model::trade_requests::OrderTransactionsRequest;

let txns = trade.get_order_transactions(OrderTransactionsRequest {
    symbol: Some("AAPL".into()),
    ..Default::default()
}).await?;
for t in &txns {
    println!("成交 {} {} 价格={} 数量={}", t.symbol, t.action, t.filled_price, t.filled_quantity);
}

返回示例

[
  {
    "id": 987654,
    "orderId": 100234,
    "account": "402901",
    "symbol": "AAPL",
    "secType": "STK",
    "action": "BUY",
    "filledPrice": 195.48,
    "filledQuantity": 100,
    "filledAmount": 19548.0,
    "commission": 1.99,
    "transactedAt": "2025-06-24T15:30:01Z",
    "transactionTime": 1719240601000,
    "currency": "USD",
    "market": "US"
  }
]

请求频率

基础限流为 60 次/分钟


Did this page help you?