下单
下单
签名
pub async fn place_order(&self, order: OrderRequest) -> Result<Option<PlaceOrderResult>, TigerError>说明
提交真实订单。需要交易权限和足够购买力。建议先使用 preview_order 验证。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| order.account | Option<String> | 无需设置;SDK 始终覆盖为 TradeClient 账户 | TradeClient 账户 |
| order.id | Option<i64> | 下单时无需设置;全局订单 ID 仅在下单成功后由服务端返回 | None(不序列化) |
| order.order_id | Option<i64> | 下单时无需设置;账户内递增订单号仅在下单成功后由服务端返回 | None(不序列化) |
| order.action | Option<String> | 服务端必填;合法值为 BUY、SELL;SDK 不预校验 | None(不序列化) |
| order.order_type | Option<String> | 服务端必填;合法值为 MKT、LMT、STP、STP_LMT、VWAP、TWAP、TRAIL、ICEBERG;SDK 不预校验 | None(不序列化) |
| order.total_quantity | Option<i64> | 服务端必填;SDK 不预校验 | None(不序列化) |
| order.limit_price | Option<f64> | LMT/STP_LMT 条件必填 | None(不序列化) |
| order.aux_price | Option<f64> | STP/STP_LMT 条件必填;TRAIL 时表示跟踪金额,建议与 trailing_percent 二选一 | None(不序列化) |
| order.trailing_percent | Option<f64> | TRAIL 建议与 aux_price 二选一;如提供,范围为 0 到 100(不含端点) | None(不序列化) |
| order.time_in_force | Option<String> | 可选;合法值为 DAY、GTC、GTD | None(不序列化) |
| order.outside_rth | Option<bool> | 可选;是否允许盘前盘后交易 | None(不序列化) |
| order.order_legs | Option<Vec<OrderLegRequest>> | 可选;附加止盈/止损订单 | None(不序列化) |
| order.algo_params | Option<AlgoParamsRequest> | 可选;算法订单参数 | None(不序列化) |
| order.symbol | Option<String> | 服务端必填;SDK 不预校验 | None(不序列化) |
| order.sec_type | Option<String> | 服务端必填;合法值为 STK、OPT、FUT、WAR、IOPT、FUND、FOREX、MLEG、CC;SDK 不预校验 | None(不序列化) |
| order.market | Option<String> | 可选 | None(不序列化) |
| order.currency | Option<String> | 可选 | None(不序列化) |
| order.expiry | Option<String> | 可选;期权到期日,如 2024-01-19 | None(不序列化) |
| order.strike | Option<String> | 可选 | None(不序列化) |
| order.right | Option<String> | OPT 条件必填;合法值为 CALL、PUT | None(不序列化) |
| order.identifier | Option<String> | 可选 | None(不序列化) |
| order.remark | Option<String> | 可选 | None(不序列化) |
| order.user_mark | Option<String> | 可选;用户备注 | None(不序列化) |
| order.display_size | Option<i64> | 可选 | None(不序列化) |
| order.min_display_size | Option<i64> | 可选 | None(不序列化) |
| order.check_intervals | Option<i64> | 可选 | None(不序列化) |
| order.price_type | Option<String> | ICEBERG 可选;合法值为 LIMIT_PRICE、ASK_PRICE、BID_PRICE、LATEST_PRICE | None(不序列化) |
| order.start_time | Option<i64> | 可选;冰山单生效开始时间,Unix 毫秒时间戳 | None(不序列化) |
| order.end_time | Option<i64> | 可选;冰山单生效结束时间,Unix 毫秒时间戳 | None(不序列化) |
| order.secret_key | Option<String> | 可选;机构账户交易密钥 | 配置存在时由客户端注入,否则不序列化 |
| order.adjust_limit | Option<f64> | 可选;用于 STP 等场景的限价偏移 | None(不序列化) |
| order.expire_time | Option<i64> | GTD 条件必填;Unix 毫秒时间戳 | None(不序列化) |
| order.trading_session_type | Option<String> | 可选 | None(不序列化) |
| order.exchange | Option<String> | 可选 | None(不序列化) |
| order.multiplier | Option<String> | 可选 | None(不序列化) |
| order.local_symbol | Option<String> | 可选 | None(不序列化) |
| order.alloc_accounts | Option<Vec<String>> | 可选 | None(不序列化) |
| order.alloc_shares | Option<Vec<f64>> | 可选 | None(不序列化) |
| order.total_quantity_scale | Option<i32> | 可选 | None(不序列化) |
| order.attach_type | Option<String> | 可选;合法值为 PROFIT、LOSS、BRACKETS | None(不序列化) |
| order.profit_taker_order_id | Option<i64> | 可选 | None(不序列化) |
| order.profit_taker_price | Option<f64> | 可选 | None(不序列化) |
| order.profit_taker_tif | Option<String> | 可选 | None(不序列化) |
| order.profit_taker_rth | Option<bool> | 可选 | None(不序列化) |
| order.stop_loss_order_type | Option<String> | 止损附加单可选;常用值为 STP、STP_LMT、TRAIL | None(不序列化) |
| order.stop_loss_order_id | Option<i64> | 可选 | None(不序列化) |
| order.stop_loss_price | Option<f64> | 可选 | None(不序列化) |
| order.stop_loss_limit_price | Option<f64> | 可选 | None(不序列化) |
| order.stop_loss_tif | Option<String> | 可选 | None(不序列化) |
| order.stop_loss_trailing_percent | Option<f64> | TRAIL 止损附加单建议与 stop_loss_trailing_amount 二选一;如提供,范围为 0 到 100(不含端点) | None(不序列化) |
| order.stop_loss_trailing_amount | Option<f64> | TRAIL 止损附加单建议与 stop_loss_trailing_percent 二选一;如提供,应非零 | None(不序列化) |
| order.combo_type | Option<String> | 可选 | None(不序列化) |
| order.contract_legs | Option<Vec<ContractLegRequest>> | 可选 | None(不序列化) |
| order.oca_orders | Option<Vec<Box<OrderRequest>>> | 可选 | None(不序列化) |
| order.cash_amount | Option<f64> | 可选 | None(不序列化) |
返回
Result<Option<PlaceOrderResult>, TigerError>
| 字段 | 类型 | 说明 |
|---|---|---|
| id | i64 | 全局订单 ID |
| order_id | i64 | 账户内递增订单号 |
| sub_ids | Vec<i64> | 子订单 ID 列表 |
| orders | Vec<Order> | 服务端同时返回的订单列表;无订单时为空列表 |
示例
use tigeropen::config::ClientConfig;
use tigeropen::model::order::limit_order;
use tigeropen::trade::TradeClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = ClientConfig::builder().build()?;
let account = config.account.clone();
let trade = TradeClient::from_config(config);
// 限价买入 100 股 AAPL
let order = limit_order(&account, "AAPL", "STK", "BUY", 100, 195.50);
let result = trade.place_order(order).await?;
if let Some(r) = result {
println!("下单成功, id={}, order_id={}", r.id, r.order_id);
}
Ok(())
}返回示例
{
"id": 31234567,
"order_id": 100234,
"subIds": []
}请求频率
基础限流为 120 次/分钟。
预览订单
签名
pub async fn preview_order(&self, order: OrderRequest) -> Result<Option<PreviewResult>, TigerError>说明
预览订单不实际提交,用于检查费用、保证金和可行性。
参数
| 参数 | Rust 类型 | 必填性/条件 | SDK 默认值 |
|---|---|---|---|
| order.account | Option<String> | 无需设置;SDK 始终覆盖为 TradeClient 账户 | TradeClient 账户 |
| order.id | Option<i64> | 预览不需要订单标识;保持 None | None(不序列化) |
| order.order_id | Option<i64> | 预览不需要订单标识;保持 None | None(不序列化) |
| order.action | Option<String> | 服务端必填;合法值为 BUY、SELL;SDK 不预校验 | None(不序列化) |
| order.order_type | Option<String> | 服务端必填;合法值为 MKT、LMT、STP、STP_LMT、VWAP、TWAP、TRAIL、ICEBERG;SDK 不预校验 | None(不序列化) |
| order.total_quantity | Option<i64> | 服务端必填;SDK 不预校验 | None(不序列化) |
| order.limit_price | Option<f64> | LMT/STP_LMT 条件必填 | None(不序列化) |
| order.aux_price | Option<f64> | STP/STP_LMT 条件必填;TRAIL 时表示跟踪金额,建议与 trailing_percent 二选一 | None(不序列化) |
| order.trailing_percent | Option<f64> | TRAIL 建议与 aux_price 二选一;如提供,范围为 0 到 100(不含端点) | None(不序列化) |
| order.time_in_force | Option<String> | 可选;合法值为 DAY、GTC、GTD | None(不序列化) |
| order.outside_rth | Option<bool> | 可选;是否允许盘前盘后交易 | None(不序列化) |
| order.order_legs | Option<Vec<OrderLegRequest>> | 可选;附加止盈/止损订单 | None(不序列化) |
| order.algo_params | Option<AlgoParamsRequest> | 可选;算法订单参数 | None(不序列化) |
| order.symbol | Option<String> | 服务端必填;SDK 不预校验 | None(不序列化) |
| order.sec_type | Option<String> | 服务端必填;合法值为 STK、OPT、FUT、WAR、IOPT、FUND、FOREX、MLEG、CC;SDK 不预校验 | None(不序列化) |
| order.market | Option<String> | 可选 | None(不序列化) |
| order.currency | Option<String> | 可选 | None(不序列化) |
| order.expiry | Option<String> | 可选;期权到期日,如 2024-01-19 | None(不序列化) |
| order.strike | Option<String> | 可选 | None(不序列化) |
| order.right | Option<String> | OPT 条件必填;合法值为 CALL、PUT | None(不序列化) |
| order.identifier | Option<String> | 可选 | None(不序列化) |
| order.remark | Option<String> | 可选 | None(不序列化) |
| order.user_mark | Option<String> | 可选;用户备注 | None(不序列化) |
| order.display_size | Option<i64> | 可选 | None(不序列化) |
| order.min_display_size | Option<i64> | 可选 | None(不序列化) |
| order.check_intervals | Option<i64> | 可选 | None(不序列化) |
| order.price_type | Option<String> | ICEBERG 可选;合法值为 LIMIT_PRICE、ASK_PRICE、BID_PRICE、LATEST_PRICE | None(不序列化) |
| order.start_time | Option<i64> | 可选;冰山单生效开始时间,Unix 毫秒时间戳 | None(不序列化) |
| order.end_time | Option<i64> | 可选;冰山单生效结束时间,Unix 毫秒时间戳 | None(不序列化) |
| order.secret_key | Option<String> | 可选;机构账户交易密钥 | 配置存在时由客户端注入,否则不序列化 |
| order.adjust_limit | Option<f64> | 可选;用于 STP 等场景的限价偏移 | None(不序列化) |
| order.expire_time | Option<i64> | GTD 条件必填;Unix 毫秒时间戳 | None(不序列化) |
| order.trading_session_type | Option<String> | 可选 | None(不序列化) |
| order.exchange | Option<String> | 可选 | None(不序列化) |
| order.multiplier | Option<String> | 可选 | None(不序列化) |
| order.local_symbol | Option<String> | 可选 | None(不序列化) |
| order.alloc_accounts | Option<Vec<String>> | 可选 | None(不序列化) |
| order.alloc_shares | Option<Vec<f64>> | 可选 | None(不序列化) |
| order.total_quantity_scale | Option<i32> | 可选 | None(不序列化) |
| order.attach_type | Option<String> | 可选;合法值为 PROFIT、LOSS、BRACKETS | None(不序列化) |
| order.profit_taker_order_id | Option<i64> | 可选 | None(不序列化) |
| order.profit_taker_price | Option<f64> | 可选 | None(不序列化) |
| order.profit_taker_tif | Option<String> | 可选 | None(不序列化) |
| order.profit_taker_rth | Option<bool> | 可选 | None(不序列化) |
| order.stop_loss_order_type | Option<String> | 止损附加单可选;常用值为 STP、STP_LMT、TRAIL | None(不序列化) |
| order.stop_loss_order_id | Option<i64> | 可选 | None(不序列化) |
| order.stop_loss_price | Option<f64> | 可选 | None(不序列化) |
| order.stop_loss_limit_price | Option<f64> | 可选 | None(不序列化) |
| order.stop_loss_tif | Option<String> | 可选 | None(不序列化) |
| order.stop_loss_trailing_percent | Option<f64> | TRAIL 止损附加单建议与 stop_loss_trailing_amount 二选一;如提供,范围为 0 到 100(不含端点) | None(不序列化) |
| order.stop_loss_trailing_amount | Option<f64> | TRAIL 止损附加单建议与 stop_loss_trailing_percent 二选一;如提供,应非零 | None(不序列化) |
| order.combo_type | Option<String> | 可选 | None(不序列化) |
| order.contract_legs | Option<Vec<ContractLegRequest>> | 可选 | None(不序列化) |
| order.oca_orders | Option<Vec<Box<OrderRequest>>> | 可选 | None(不序列化) |
| order.cash_amount | Option<f64> | 可选 | None(不序列化) |
返回
Result<Option<PreviewResult>, TigerError>
| 字段 | 类型 | 说明 |
|---|---|---|
| is_pass | bool | 是否通过 |
| account | String | 账户 |
| commission | f64 | 预估佣金 |
| commission_currency | String | 佣金币种 |
| margin_currency | String | 保证金币种 |
| init_margin | f64 | 初始保证金 |
| init_margin_before | f64 | 预览前初始保证金 |
| maint_margin | f64 | 维持保证金 |
| maint_margin_before | f64 | 预览前维持保证金 |
| equity_with_loan | f64 | 含贷权益 |
| equity_with_loan_before | f64 | 预览前含贷权益 |
| available_ee | f64 | 假设订单成交后的可用剩余资产,币种见 margin_currency |
| excess_liquidity | f64 | 假设订单成交后的剩余流动性,币种见 margin_currency |
| overnight_liquidation | f64 | 假设订单成交后的隔夜剩余流动性,币种见 margin_currency |
| gst | f64 | 商品及服务税 |
| message | String | 提示信息 |
上述三个资产字段在不适用的账户或场景下可能不返回。Rust 模型使用非可空 f64,因此缺失值与明确返回的 0 都表现为 0。
示例
let order = limit_order(&account, "AAPL", "STK", "BUY", 100, 195.50);
let preview = trade.preview_order(order).await?;
if let Some(p) = preview {
println!("通过={} 佣金={} 保证金={}", p.is_pass, p.commission, p.init_margin);
}返回示例
{
"isPass": true,
"commission": 1.99,
"commissionCurrency": "USD",
"initMargin": 9775.0,
"maintMargin": 9775.0,
"equityWithLoan": 50000.0,
"availableEE": 40225.0,
"message": ""
}Updated 5 days ago
Did this page help you?
