Futures
Return models
Response models serialize with camelCase; the tables use SDK Rust field names. Later endpoints reference these tables instead of repeating models.
FutureContractInfo
FutureContractInfo| Field | Rust type | Description |
|---|---|---|
| continuous | bool | Whether this is a continuous contract |
| trade | bool | Whether the contract is tradable |
| r#type | String | Contract type |
| contract_code | String | Contract code |
| ib_code | String | IB code |
| name | String | Contract name |
| contract_month | String | Contract month |
| last_trading_date | String | Last trading date |
| first_notice_date | String | First notice date |
| last_bidding_close_time | i64 | Last bidding close time |
| currency | String | Currency |
| exchange_code | String | Exchange code |
| multiplier | f64 | Contract multiplier |
| min_tick | f64 | Minimum price increment |
| display_multiplier | f64 | Display multiplier |
| exchange | String | Exchange |
| product_worth | String | Product worth |
| delivery_mode | String | Delivery mode |
| product_type | String | Product type |
| product_scale | String | Product scale |
| last_trading_timestamp | i64 | Last trading timestamp |
DepthLevel
DepthLevel| Field | Rust type | Description |
|---|---|---|
| price | f64 | Level price |
| count | i32 | Number of orders at the level |
| volume | i64 | Level volume |
FutureDepth
FutureDepth| Field | Rust type | Description |
|---|---|---|
| contract_code | String | Contract code |
| timestamp | i64 | Market-data timestamp |
| asks | Vec<DepthLevel> | Ask levels; see DepthLevel |
| bids | Vec<DepthLevel> | Bid levels; see DepthLevel |
FutureExchange
FutureExchange| Field | Rust type | Description |
|---|---|---|
| code | String | Exchange code |
| name | String | Exchange name |
| zone_id | String | Time-zone ID |
FutureMainContractHistory
FutureMainContractHistory| Field | Rust type | Description |
|---|---|---|
| contract_code | String | Contract code |
| symbol | String | Underlying symbol |
| begin_date | String | Effective start date |
| end_date | String | Effective end date |
FutureKlineItem
FutureKlineItem| Field | Rust type | Description |
|---|---|---|
| time | i64 | Bar start time |
| volume | i64 | Volume |
| open | f64 | Open price |
| close | f64 | Close price |
| high | f64 | High price |
| low | f64 | Low price |
| last_time | i64 | Last trade time |
| open_interest | i64 | Open interest |
| settlement | f64 | Settlement price |
FutureKline
FutureKline| Field | Rust type | Description |
|---|---|---|
| contract_code | String | Contract code |
| next_page_token | String | Next-page token |
| items | Vec<FutureKlineItem> | Bars; see FutureKlineItem |
FutureQuote
FutureQuote| Field | Rust type | Description |
|---|---|---|
| contract_code | String | Contract code |
| latest_price | f64 | Latest price |
| latest_size | i64 | Latest trade size |
| latest_time | i64 | Latest trade time |
| bid_price | f64 | Best bid price |
| ask_price | f64 | Best ask price |
| bid_size | i64 | Best bid size |
| ask_size | i64 | Best ask size |
| open_interest | i64 | Open interest |
| open_interest_change | i64 | Open-interest change |
| volume | i64 | Volume |
| open | f64 | Open price |
| high | f64 | High price |
| low | f64 | Low price |
| settlement | f64 | Settlement price |
| limit_up | f64 | Upper price limit |
| limit_down | f64 | Lower price limit |
| avg_price | f64 | Average price |
FutureTradeTickItem
FutureTradeTickItem| Field | Rust type | Description |
|---|---|---|
| contract_code | String | Contract code |
| index | i64 | Tick index |
| time | i64 | Trade time |
| price | f64 | Trade price |
| volume | i64 | Trade volume |
| direction | String | Trade direction |
FutureTradingSegment
FutureTradingSegment| Field | Rust type | Description |
|---|---|---|
| start | i64 | Segment start time |
| end | i64 | Segment end time |
| r#type | String | Segment type |
FutureTradingTime
FutureTradingTime| Field | Rust type | Description |
|---|---|---|
| contract_code | String | Contract code |
| biz_date | String | Business date |
| zone | String | Time zone |
| trading_times | Vec<FutureTradingSegment> | Trading segments; see FutureTradingSegment |
Get All Future Contracts
Signature
pub async fn get_all_future_contracts( &self, req: AllFutureContractsRequest, ) -> Result<Vec<FutureContractInfo>, TigerError>
Description
Filter by type/exchange.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_type | Option<String> | Conditional: at least one of contract_type / exchange | None (omitted) |
| req.exchange | Option<String> | Conditional: at least one of contract_type / exchange | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<FutureContractInfo>, TigerError>. SeeFutureContractInfofor fields.
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_all_future_contracts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_all_future_contracts(AllFutureContractsRequest { contract_type: Some("ES".into()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"continuous": false,
"trade": true,
"type": "FUT",
"contractCode": "ES2509",
"ibCode": "ES",
"name": "E-mini S&P 500",
"contractMonth": "202509",
"lastTradingDate": "2025-09-19"
}
]Get Current Future Contract
Signature
pub async fn get_current_future_contract( &self, req: FutureContractSingleRequest, ) -> Result<Option<FutureContractInfo>, TigerError>
Description
Current main contract, normally by type.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_code | Option<String> | Conditional: at least one of contract_code / contract_type | None (omitted) |
| req.contract_type | Option<String> | Conditional: at least one of contract_code / contract_type | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Option<FutureContractInfo>, TigerError>. SeeFutureContractInfofor fields.
Optional contract.
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_current_future_contract(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_current_future_contract(FutureContractSingleRequest { contract_code: Some("ES2609".into()), ..Default::default() }).await?;
Ok(())
}
Response example
{
"continuous": false,
"trade": true,
"type": "FUT",
"contractCode": "ES2509",
"ibCode": "ES",
"name": "E-mini S&P 500",
"contractMonth": "202509",
"lastTradingDate": "2025-09-19"
}Rate limit
The base rate limit is 120 requests/min.
Get Future Continuous Contracts
Signature
pub async fn get_future_continuous_contracts( &self, req: FutureContinuousContractsRequest, ) -> Result<Vec<FutureContractInfo>, TigerError>
Description
contract_type required.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_type | Option<String> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<FutureContractInfo>, TigerError>. SeeFutureContractInfofor fields.
Continuous 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_future_continuous_contracts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_continuous_contracts(FutureContinuousContractsRequest { contract_type: Some("ES".into()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"continuous": false,
"trade": true,
"type": "FUT",
"contractCode": "ES2509",
"ibCode": "ES",
"name": "E-mini S&P 500",
"contractMonth": "202509",
"lastTradingDate": "2025-09-19"
}
]Rate limit
The base rate limit is 120 requests/min.
Get Future Contract
Signature
pub async fn get_future_contract( &self, req: FutureContractSingleRequest, ) -> Result<Vec<FutureContractInfo>, TigerError>
Description
Query by contract code or type; normalizes object to Vec.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_code | Option<String> | Conditional: at least one of contract_code / contract_type | None (omitted) |
| req.contract_type | Option<String> | Conditional: at least one of contract_code / contract_type | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<FutureContractInfo>, TigerError>. SeeFutureContractInfofor fields.
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_future_contract(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_contract(FutureContractSingleRequest { contract_code: Some("ES2609".into()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"continuous": false,
"trade": true,
"type": "FUT",
"contractCode": "ES2509",
"ibCode": "ES",
"name": "E-mini S&P 500",
"contractMonth": "202509",
"lastTradingDate": "2025-09-19"
}
]Rate limit
The base rate limit is 120 requests/min.
Get Future Contracts
Signature
pub async fn get_future_contracts( &self, exchange_code: &str, ) -> Result<Vec<FutureContractInfo>, TigerError>
Description
Exchange code required.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| exchange_code | &str | Required | None |
Return
QuoteClient:Result<Vec<FutureContractInfo>, TigerError>. SeeFutureContractInfofor fields.
Contract code/month/dates/currency/multiplier/tick/exchange.
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_future_contracts(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_contracts("CME").await?;
Ok(())
}
Response example
[
{
"continuous": false,
"trade": true,
"type": "FUT",
"contractCode": "ES2509",
"ibCode": "ES",
"name": "E-mini S&P 500",
"contractMonth": "202509",
"lastTradingDate": "2025-09-19"
}
]Rate limit
The base rate limit is 120 requests/min.
Get Futures Market Depth
Signature
pub async fn get_future_depth( &self, req: FutureDepthRequest, ) -> Result<Vec<FutureDepth>, TigerError>
Description
contract_codes required.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_codes | Option<Vec<String>> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<FutureDepth>, TigerError>. SeeFutureDepthand nestedDepthLevel.
Contract and book levels.
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_future_depth(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_depth(FutureDepthRequest { contract_codes: Some(vec!["ES2609".into()]), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"contractCode": "ES2509",
"timestamp": 1738180800000,
"asks": [
{
"price": 5638.25,
"volume": 120
},
{
"price": 5638.5,
"volume": 85
}
],
"bids": [
{
"price": 5638.0,
"volume": 95
},
{
"price": 5637.75,
"volume": 110
}
]
}
]Get Future Exchange
Signature
pub async fn get_future_exchange(&self) -> Result<Vec<FutureExchange>, TigerError>
Description
Supported exchanges; no parameters.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| none | - | Required by Rust type | None |
Return
QuoteClient:Result<Vec<FutureExchange>, TigerError>. SeeFutureExchange.
code/name/zone_id.
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_future_exchange(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_exchange().await?;
Ok(())
}
Response example
[
{
"code": "CME",
"name": "Chicago Mercantile Exchange",
"zoneId": "America/Chicago"
}
]Rate limit
The base rate limit is 10 requests/min.
Get Future History Main Contract
Signature
pub async fn get_future_history_main_contract( &self, req: FutureHistoryMainContractRequest, ) -> Result<Vec<FutureMainContractHistory>, TigerError>
Description
Contract codes and optional millisecond range.
The Rust SDK wire method future_main_contract is not registered by the current server and is therefore unsupported.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_codes | Option<Vec<String>> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.begin_time | Option<i64> | Optional | None (omitted) |
| req.end_time | Option<i64> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<FutureMainContractHistory>, TigerError>. SeeFutureMainContractHistory.
contract/symbol/begin/end dates.
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_future_history_main_contract(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_history_main_contract(FutureHistoryMainContractRequest { contract_codes: Some(vec!["ES2609".into()]), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"contractCode": "ES2509",
"symbol": "ES",
"beginDate": "2025-06-20",
"endDate": "2025-09-19"
}
]Get Future Kline
Signature
pub async fn get_future_kline( &self, mut req: FutureKlineRequest, ) -> Result<Vec<FutureKline>, TigerError>
Description
Contract and period required; SDK changes Some(0) times to Some(-1).
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_codes | Option<Vec<String>> | Conditional: at least one of contract_code / contract_codes | None (omitted) |
| req.contract_code | Option<String> | Conditional: at least one of contract_code / contract_codes | None (omitted) |
| req.period | Option<String> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.begin_time | Option<i64> | Optional | SDK changes Some(0) to Some(-1) |
| req.end_time | Option<i64> | Optional | SDK changes Some(0) to Some(-1) |
| req.begin_index | Option<i32> | Optional | None (omitted) |
| req.end_index | Option<i32> | Optional | None (omitted) |
| req.limit | Option<i32> | Optional | None (omitted) |
| req.page_token | Option<String> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<FutureKline>, TigerError>. SeeFutureKlineand nestedFutureKlineItem.
contract/token/items.
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_future_kline(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_kline(FutureKlineRequest { contract_code: Some("ES2609".into()), period: Some("day".into()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"contractCode": "ES2509",
"nextPageToken": "eyJzIjoiMTczODE4MDgwMDAwMCJ9",
"items": [
{
"time": 1738094400000,
"volume": 1423500,
"open": 5610.25,
"close": 5638.0,
"high": 5645.75,
"low": 5605.25,
"lastTime": 1738180799000,
"openInterest": 2150000,
"settlement": 5635.5
}
]
}
]Rate limit
The base rate limit is 60 requests/min. Methods documented here that use future_kline share this quota.
Get Future Kline By Page
Signature
pub async fn get_future_kline_by_page( &self, req: FutureKlineByPageRequest, ) -> Result<Vec<FutureKlineItem>, TigerError>
Description
Client pagination defaults: page 200, total 1000; absent/zero times become -1.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_code | Option<String> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.period | Option<String> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.begin_time | Option<i64> | Optional | None (omitted) |
| req.end_time | Option<i64> | Optional | None (omitted) |
| req.total_size | Option<i32> | Optional | 1000 when None |
| req.page_size | Option<i32> | Optional | 200 when None |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<FutureKlineItem>, TigerError>. SeeFutureKlineItem.
Flattened items.
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_future_kline_by_page(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_kline_by_page(FutureKlineByPageRequest { contract_code: Some("ES2609".into()), period: Some("day".into()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"time": 1738180800000,
"volume": 1523847,
"open": 5620.5,
"close": 5638.0,
"high": 5645.75,
"low": 5605.25,
"lastTime": 1738180800000,
"openInterest": 2150000
}
]Rate limit
The base rate limit is 60 requests/min. Methods documented here that use future_kline share this quota.
Get Futures Real-Time Quotes
Signature
pub async fn get_future_real_time_quote( &self, req: FutureRealTimeQuoteRequest, ) -> Result<Vec<FutureQuote>, TigerError>
Description
contract_codes and futures market data access required.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_codes | Option<Vec<String>> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<FutureQuote>, TigerError>. SeeFutureQuote.
Price, BBO, volume, OI, OHLC, settlement, limits.
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_future_real_time_quote(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_real_time_quote(FutureRealTimeQuoteRequest { contract_codes: Some(vec!["ES2609".into()]), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"contractCode": "ES2509",
"latestPrice": 5638.0,
"latestSize": 15,
"latestTime": 1738180800000,
"bidPrice": 5638.0,
"askPrice": 5638.25,
"bidSize": 300,
"askSize": 300
}
]Rate limit
The base rate limit is 120 requests/min.
Get Future Trade Ticks
Signature
pub async fn get_future_trade_ticks( &self, req: FutureTradeTicksRequest, ) -> Result<Vec<FutureTradeTickItem>, TigerError>
Description
v3; contract required; SDK default end_index=30.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_code | Option<String> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.begin_index | Option<i32> | Optional | None (omitted) |
| req.end_index | Option<i32> | Optional | SDK changes None to 30 |
| req.limit | Option<i32> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<FutureTradeTickItem>, TigerError>. SeeFutureTradeTickItem.
contract/index/time/price/volume/direction.
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_future_trade_ticks(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_trade_ticks(FutureTradeTicksRequest { contract_code: Some("ES2609".into()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"contractCode": "ES2509",
"index": 1,
"time": 1738180800000,
"price": 5638.25,
"volume": 1523847,
"direction": "BUY"
}
]Rate limit
The base rate limit is 120 requests/min.
Get Future Trading Times
Signature
pub async fn get_future_trading_times( &self, req: FutureTradingTimesRequest, ) -> Result<Option<FutureTradingTime>, TigerError>
Description
Contract required; trading date optional.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contract_code | Option<String> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.trading_date | Option<String> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Option<FutureTradingTime>, TigerError>. SeeFutureTradingTimeand nestedFutureTradingSegment.
contract/biz_date/zone/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_future_trading_times(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_future_trading_times(FutureTradingTimesRequest { contract_code: Some("ES2609".into()), ..Default::default() }).await?;
Ok(())
}
Response example
{
"contractCode": "ES2509",
"bizDate": "2025-01-29",
"zone": "America/Chicago",
"tradingTimes": [
{
"start": 1738015800000,
"end": 1738094400000,
"type": "TRADING"
},
{
"start": 1738094400000,
"end": 1738101600000,
"type": "POST_MARKET"
}
]
}Rate limit
The base rate limit is 60 requests/min.
Updated about 1 month ago
