期权行权

提交行权

签名

pub async fn submit_option_exercise(&self, mut req: OptionExerciseSubmitRequest) -> Result<Option<bool>, TigerError>

说明

提交期权行权或到期处理请求。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.secret_keyOption<String>可选None(不序列化)
req.contract_idOption<i64>服务端必填;SDK 不预校验None(不序列化)
req.exercise_typeOption<String>服务端必填;合法值为 ExerciseExpire;SDK 不预校验None(不序列化)
req.quantityOption<f64>服务端必填;SDK 不预校验None(不序列化)
req.executing_dateOption<String>Exercise 条件必填;格式 yyyy-MM-ddNone(不序列化)
req.is_forceOption<bool>Exercise 条件必填None(不序列化)
req.itm_rateOption<i32>Expire 条件必填,范围 0..10None(不序列化)
req.langOption<String>可选None(不序列化)

返回

Result<Option<bool>, TigerError>

返回 Some(true) 表示请求已受理。

示例

use tigeropen::model::trade_requests::OptionExerciseSubmitRequest;

let success = trade.submit_option_exercise(OptionExerciseSubmitRequest {
    contract_id: Some(55678),
    exercise_type: Some("Exercise".into()),
    quantity: Some(1.0),
    executing_date: Some("2026-09-19".into()),
    is_force: Some(false),
    ..Default::default()
}).await?;
println!("行权提交: {:?}", success);

返回示例

true

请求频率

基础限流为 60 次/分钟


取消行权

签名

pub async fn cancel_option_exercise(&self, mut req: OptionExerciseCancelRequest) -> Result<Option<bool>, TigerError>

说明

取消已提交的行权记录,仅 New 等可撤状态的行权记录可取消。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.secret_keyOption<String>可选None(不序列化)
req.idOption<i64>服务端必填;SDK 不预校验None(不序列化)
req.langOption<String>可选None(不序列化)

返回

Result<Option<bool>, TigerError>

返回 Some(true) 表示取消成功。

示例

use tigeropen::model::trade_requests::OptionExerciseCancelRequest;

let cancelled = trade.cancel_option_exercise(OptionExerciseCancelRequest {
    id: Some(12345),
    ..Default::default()
}).await?;
println!("取消行权: {:?}", cancelled);

返回示例

true

请求频率

基础限流为 60 次/分钟


行权检查

签名

pub async fn option_exercise_check(&self, mut req: OptionExerciseCheckRequest) -> Result<Option<OptionExerciseCheckResult>, TigerError>

说明

检查期权行权可行性,验证持仓是否满足行权条件。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.secret_keyOption<String>可选None(不序列化)
req.contract_idOption<i64>服务端必填;SDK 不预校验None(不序列化)
req.exercise_typeOption<String>服务端必填;合法值为 ExerciseExpire;SDK 不预校验None(不序列化)
req.quantityOption<f64>服务端必填;SDK 不预校验None(不序列化)
req.executing_dateOption<String>Exercise 建议提供;格式 yyyy-MM-ddNone(不序列化)
req.is_forceOption<bool>Exercise 建议提供None(不序列化)
req.itm_rateOption<i32>Expire 可选,范围 0..10None(不序列化)
req.langOption<String>可选None(不序列化)

返回

Result<Option<OptionExerciseCheckResult>, TigerError>;空 data 返回 None。字段为 available_quantitypositionstk_positionstk_position_changestk_position_beforestk_position_aftersymbol

示例

use tigeropen::model::trade_requests::OptionExerciseCheckRequest;

let ok = trade.option_exercise_check(OptionExerciseCheckRequest {
    contract_id: Some(55678),
    exercise_type: Some("Exercise".into()),
    quantity: Some(1.0),
    executing_date: Some("2026-09-19".into()),
    ..Default::default()
}).await?;
if let Some(check) = ok {
    println!(
        "可用数量={} 期权持仓={} 正股持仓={} 正股变动={} 变动前={} 变动后={} 标的={}",
        check.available_quantity,
        check.position,
        check.stk_position,
        check.stk_position_change,
        check.stk_position_before,
        check.stk_position_after,
        check.symbol
    );
}

返回示例

{"availableQuantity":1.0,"position":1.0,"stkPosition":0.0,"stkPositionChange":100.0,"stkPositionBefore":0.0,"stkPositionAfter":100.0,"symbol":"AAPL"}

请求频率

基础限流为 60 次/分钟


获取行权持仓

签名

pub async fn get_option_exercise_positions(&self, mut req: OptionExercisePositionRequest) -> Result<Option<OptionExercisePositionPageResult>, TigerError>

说明

获取可行权的期权持仓列表。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.secret_keyOption<String>可选None(不序列化)
req.exercise_typeOption<String>服务端必填;合法值为 ExerciseExpireNone(不序列化)
req.langOption<String>可选None(不序列化)

返回

Result<Option<OptionExercisePositionPageResult>, TigerError>;空 data 返回 None

字段类型说明
page_num/page_sizei32当前页码/页大小
item_count/page_counti32总记录数/总页数
itemsVec<OptionExercisePosition>持仓列表;条目字段为 contract_id、symbol、stk_symbol、expire_date、strike、call_put、market、account_id、position、available_quantity

示例

use tigeropen::model::trade_requests::OptionExercisePositionRequest;

let positions = trade.get_option_exercise_positions(
    OptionExercisePositionRequest {
        exercise_type: Some("Exercise".into()),
        ..Default::default()
    }
).await?;
if let Some(page) = positions {
    for p in &page.items { println!("{} {} strike={} qty={}", p.symbol, p.call_put, p.strike, p.position); }
}

返回示例

{"pageNum":1,"pageSize":20,"itemCount":1,"pageCount":1,"items":[{"contractId":55678,"symbol":"AAPL","stkSymbol":"AAPL","expireDate":"20260919","strike":"200","callPut":"CALL","market":"US","accountId":123,"position":2.0,"availableQuantity":2.0}]}

请求频率

基础限流为 60 次/分钟


获取行权记录

签名

pub async fn get_option_exercise_records(&self, mut req: OptionExerciseRecordsRequest) -> Result<Option<OptionExerciseRecordPageResult>, TigerError>

说明

获取历史行权/到期处理记录。

参数

参数Rust 类型必填性/条件SDK 默认值
req.accountOption<String>可选;多数 TradeClient 方法在 None 时注入默认账户None(不序列化)
req.secret_keyOption<String>可选None(不序列化)
req.pageOption<i32>可选;从 1 开始服务端默认 1
req.sizeOption<i32>可选;范围 1–100服务端默认 20
req.statusOption<String>可选;合法值为 NewCancelSuccessFailNone(不序列化)
req.exercise_typeOption<String>可选;合法值为 ExerciseExpireNone(不序列化)
req.symbolOption<String>可选None(不序列化)
req.order_byOption<String>可选;合法值为 symbolexpire_datestrikeis_callNone(不序列化)
req.langOption<String>可选None(不序列化)

返回

Result<Option<OptionExerciseRecordPageResult>, TigerError>;空 data 返回 None。分页字段为 page_numpage_sizeitem_countpage_countitems;每项保留 idcontract_idsymbolstk_symbolexpire_datestrikecall_putexercise_typerequest_quantityquantitystatusexecuting_dateitm_rateis_forcereasonaccount_id

字段类型说明
idi64记录 ID
contract_idi64合约 ID
symbolString股票代码
stk_symbolString正股代码
expire_dateString到期日
strikeString行权价
call_putStringCALL/PUT
exercise_typeStringExercise/Expire;JSON 字段名为 type
request_quantityf64申请数量
quantityf64行权数量
statusString状态
executing_dateString执行日期
itm_ratei32价内率
is_forcebool是否强制行权
reasonString原因
account_idi64账户 ID

示例

use tigeropen::model::trade_requests::OptionExerciseRecordsRequest;

let records = trade.get_option_exercise_records(
    OptionExerciseRecordsRequest::default()
).await?;
if let Some(page) = records {
  for r in &page.items { println!("{} {} qty={} status={}", r.symbol, r.exercise_type, r.quantity, r.status); }
}

返回示例

{"pageNum":1,"pageSize":20,"itemCount":1,"pageCount":1,"items":[{"id":12345,"contractId":55678,"symbol":"AAPL","stkSymbol":"AAPL","expireDate":"20260919","strike":"200","callPut":"CALL","type":"Exercise","requestQuantity":1.0,"quantity":1.0,"status":"New","executingDate":"2026-09-19","itmRate":0,"isForce":false,"reason":"","accountId":123}]}

请求频率

基础限流为 60 次/分钟


Did this page help you?