下单

下单

签名

pub async fn place_order(&self, order: OrderRequest) -> Result<Option<PlaceOrderResult>, TigerError>

说明

提交真实订单。需要交易权限和足够购买力。建议先使用 preview_order 验证。

参数

参数Rust 类型必填性/条件SDK 默认值
order.accountOption<String>无需设置;SDK 始终覆盖为 TradeClient 账户TradeClient 账户
order.idOption<i64>下单时无需设置;全局订单 ID 仅在下单成功后由服务端返回None(不序列化)
order.order_idOption<i64>下单时无需设置;账户内递增订单号仅在下单成功后由服务端返回None(不序列化)
order.actionOption<String>服务端必填;合法值为 BUYSELL;SDK 不预校验None(不序列化)
order.order_typeOption<String>服务端必填;合法值为 MKTLMTSTPSTP_LMTVWAPTWAPTRAILICEBERG;SDK 不预校验None(不序列化)
order.total_quantityOption<i64>服务端必填;SDK 不预校验None(不序列化)
order.limit_priceOption<f64>LMT/STP_LMT 条件必填None(不序列化)
order.aux_priceOption<f64>STP/STP_LMT 条件必填;TRAIL 时表示跟踪金额,建议与 trailing_percent 二选一None(不序列化)
order.trailing_percentOption<f64>TRAIL 建议与 aux_price 二选一;如提供,范围为 0 到 100(不含端点)None(不序列化)
order.time_in_forceOption<String>可选;合法值为 DAYGTCGTDNone(不序列化)
order.outside_rthOption<bool>可选;是否允许盘前盘后交易None(不序列化)
order.order_legsOption<Vec<OrderLegRequest>>可选;附加止盈/止损订单None(不序列化)
order.algo_paramsOption<AlgoParamsRequest>可选;算法订单参数None(不序列化)
order.symbolOption<String>服务端必填;SDK 不预校验None(不序列化)
order.sec_typeOption<String>服务端必填;合法值为 STKOPTFUTWARIOPTFUNDFOREXMLEGCC;SDK 不预校验None(不序列化)
order.marketOption<String>可选None(不序列化)
order.currencyOption<String>可选None(不序列化)
order.expiryOption<String>可选;期权到期日,如 2024-01-19None(不序列化)
order.strikeOption<String>可选None(不序列化)
order.rightOption<String>OPT 条件必填;合法值为 CALLPUTNone(不序列化)
order.identifierOption<String>可选None(不序列化)
order.remarkOption<String>可选None(不序列化)
order.user_markOption<String>可选;用户备注None(不序列化)
order.display_sizeOption<i64>可选None(不序列化)
order.min_display_sizeOption<i64>可选None(不序列化)
order.check_intervalsOption<i64>可选None(不序列化)
order.price_typeOption<String>ICEBERG 可选;合法值为 LIMIT_PRICEASK_PRICEBID_PRICELATEST_PRICENone(不序列化)
order.start_timeOption<i64>可选;冰山单生效开始时间,Unix 毫秒时间戳None(不序列化)
order.end_timeOption<i64>可选;冰山单生效结束时间,Unix 毫秒时间戳None(不序列化)
order.secret_keyOption<String>可选;机构账户交易密钥配置存在时由客户端注入,否则不序列化
order.adjust_limitOption<f64>可选;用于 STP 等场景的限价偏移None(不序列化)
order.expire_timeOption<i64>GTD 条件必填;Unix 毫秒时间戳None(不序列化)
order.trading_session_typeOption<String>可选None(不序列化)
order.exchangeOption<String>可选None(不序列化)
order.multiplierOption<String>可选None(不序列化)
order.local_symbolOption<String>可选None(不序列化)
order.alloc_accountsOption<Vec<String>>可选None(不序列化)
order.alloc_sharesOption<Vec<f64>>可选None(不序列化)
order.total_quantity_scaleOption<i32>可选None(不序列化)
order.attach_typeOption<String>可选;合法值为 PROFITLOSSBRACKETSNone(不序列化)
order.profit_taker_order_idOption<i64>可选None(不序列化)
order.profit_taker_priceOption<f64>可选None(不序列化)
order.profit_taker_tifOption<String>可选None(不序列化)
order.profit_taker_rthOption<bool>可选None(不序列化)
order.stop_loss_order_typeOption<String>止损附加单可选;常用值为 STPSTP_LMTTRAILNone(不序列化)
order.stop_loss_order_idOption<i64>可选None(不序列化)
order.stop_loss_priceOption<f64>可选None(不序列化)
order.stop_loss_limit_priceOption<f64>可选None(不序列化)
order.stop_loss_tifOption<String>可选None(不序列化)
order.stop_loss_trailing_percentOption<f64>TRAIL 止损附加单建议与 stop_loss_trailing_amount 二选一;如提供,范围为 0 到 100(不含端点)None(不序列化)
order.stop_loss_trailing_amountOption<f64>TRAIL 止损附加单建议与 stop_loss_trailing_percent 二选一;如提供,应非零None(不序列化)
order.combo_typeOption<String>可选None(不序列化)
order.contract_legsOption<Vec<ContractLegRequest>>可选None(不序列化)
order.oca_ordersOption<Vec<Box<OrderRequest>>>可选None(不序列化)
order.cash_amountOption<f64>可选None(不序列化)

返回

Result<Option<PlaceOrderResult>, TigerError>

字段类型说明
idi64全局订单 ID
order_idi64账户内递增订单号
sub_idsVec<i64>子订单 ID 列表
ordersVec<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.accountOption<String>无需设置;SDK 始终覆盖为 TradeClient 账户TradeClient 账户
order.idOption<i64>预览不需要订单标识;保持 NoneNone(不序列化)
order.order_idOption<i64>预览不需要订单标识;保持 NoneNone(不序列化)
order.actionOption<String>服务端必填;合法值为 BUYSELL;SDK 不预校验None(不序列化)
order.order_typeOption<String>服务端必填;合法值为 MKTLMTSTPSTP_LMTVWAPTWAPTRAILICEBERG;SDK 不预校验None(不序列化)
order.total_quantityOption<i64>服务端必填;SDK 不预校验None(不序列化)
order.limit_priceOption<f64>LMT/STP_LMT 条件必填None(不序列化)
order.aux_priceOption<f64>STP/STP_LMT 条件必填;TRAIL 时表示跟踪金额,建议与 trailing_percent 二选一None(不序列化)
order.trailing_percentOption<f64>TRAIL 建议与 aux_price 二选一;如提供,范围为 0 到 100(不含端点)None(不序列化)
order.time_in_forceOption<String>可选;合法值为 DAYGTCGTDNone(不序列化)
order.outside_rthOption<bool>可选;是否允许盘前盘后交易None(不序列化)
order.order_legsOption<Vec<OrderLegRequest>>可选;附加止盈/止损订单None(不序列化)
order.algo_paramsOption<AlgoParamsRequest>可选;算法订单参数None(不序列化)
order.symbolOption<String>服务端必填;SDK 不预校验None(不序列化)
order.sec_typeOption<String>服务端必填;合法值为 STKOPTFUTWARIOPTFUNDFOREXMLEGCC;SDK 不预校验None(不序列化)
order.marketOption<String>可选None(不序列化)
order.currencyOption<String>可选None(不序列化)
order.expiryOption<String>可选;期权到期日,如 2024-01-19None(不序列化)
order.strikeOption<String>可选None(不序列化)
order.rightOption<String>OPT 条件必填;合法值为 CALLPUTNone(不序列化)
order.identifierOption<String>可选None(不序列化)
order.remarkOption<String>可选None(不序列化)
order.user_markOption<String>可选;用户备注None(不序列化)
order.display_sizeOption<i64>可选None(不序列化)
order.min_display_sizeOption<i64>可选None(不序列化)
order.check_intervalsOption<i64>可选None(不序列化)
order.price_typeOption<String>ICEBERG 可选;合法值为 LIMIT_PRICEASK_PRICEBID_PRICELATEST_PRICENone(不序列化)
order.start_timeOption<i64>可选;冰山单生效开始时间,Unix 毫秒时间戳None(不序列化)
order.end_timeOption<i64>可选;冰山单生效结束时间,Unix 毫秒时间戳None(不序列化)
order.secret_keyOption<String>可选;机构账户交易密钥配置存在时由客户端注入,否则不序列化
order.adjust_limitOption<f64>可选;用于 STP 等场景的限价偏移None(不序列化)
order.expire_timeOption<i64>GTD 条件必填;Unix 毫秒时间戳None(不序列化)
order.trading_session_typeOption<String>可选None(不序列化)
order.exchangeOption<String>可选None(不序列化)
order.multiplierOption<String>可选None(不序列化)
order.local_symbolOption<String>可选None(不序列化)
order.alloc_accountsOption<Vec<String>>可选None(不序列化)
order.alloc_sharesOption<Vec<f64>>可选None(不序列化)
order.total_quantity_scaleOption<i32>可选None(不序列化)
order.attach_typeOption<String>可选;合法值为 PROFITLOSSBRACKETSNone(不序列化)
order.profit_taker_order_idOption<i64>可选None(不序列化)
order.profit_taker_priceOption<f64>可选None(不序列化)
order.profit_taker_tifOption<String>可选None(不序列化)
order.profit_taker_rthOption<bool>可选None(不序列化)
order.stop_loss_order_typeOption<String>止损附加单可选;常用值为 STPSTP_LMTTRAILNone(不序列化)
order.stop_loss_order_idOption<i64>可选None(不序列化)
order.stop_loss_priceOption<f64>可选None(不序列化)
order.stop_loss_limit_priceOption<f64>可选None(不序列化)
order.stop_loss_tifOption<String>可选None(不序列化)
order.stop_loss_trailing_percentOption<f64>TRAIL 止损附加单建议与 stop_loss_trailing_amount 二选一;如提供,范围为 0 到 100(不含端点)None(不序列化)
order.stop_loss_trailing_amountOption<f64>TRAIL 止损附加单建议与 stop_loss_trailing_percent 二选一;如提供,应非零None(不序列化)
order.combo_typeOption<String>可选None(不序列化)
order.contract_legsOption<Vec<ContractLegRequest>>可选None(不序列化)
order.oca_ordersOption<Vec<Box<OrderRequest>>>可选None(不序列化)
order.cash_amountOption<f64>可选None(不序列化)

返回

Result<Option<PreviewResult>, TigerError>

字段类型说明
is_passbool是否通过
accountString账户
commissionf64预估佣金
commission_currencyString佣金币种
margin_currencyString保证金币种
init_marginf64初始保证金
init_margin_beforef64预览前初始保证金
maint_marginf64维持保证金
maint_margin_beforef64预览前维持保证金
equity_with_loanf64含贷权益
equity_with_loan_beforef64预览前含贷权益
available_eef64假设订单成交后的可用剩余资产,币种见 margin_currency
excess_liquidityf64假设订单成交后的剩余流动性,币种见 margin_currency
overnight_liquidationf64假设订单成交后的隔夜剩余流动性,币种见 margin_currency
gstf64商品及服务税
messageString提示信息

上述三个资产字段在不适用的账户或场景下可能不返回。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": ""
}

Did this page help you?