期权行权

提交行权

签名

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>服务端必填;合法值为 Exercise、Expire;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>服务端必填;合法值为 Exercise、Expire;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_quantity、position、stk_position、stk_position_change、stk_position_before、stk_position_after 和 symbol。

字段Rust 类型说明
available_quantityf64可用行权数量
positionf64期权持仓数量
stk_positionf64当前正股持仓数量
stk_position_changef64行权或到期处理导致的正股持仓变动
stk_position_beforef64处理前正股持仓数量
stk_position_afterf64处理后正股持仓数量
symbolString标的代码

示例

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>服务端必填;合法值为 Exercise、ExpireNone(不序列化)
req.langOption<String>可选None(不序列化)

返回

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

字段类型说明
page_numi32当前页码
page_sizei32页大小
item_counti32总记录数
page_counti32总页数
itemsVec<OptionExercisePosition>持仓列表

items 元素(OptionExercisePosition):

字段类型说明
contract_idi64合约 ID
symbolString期权代码
stk_symbolString正股代码
expire_dateString到期日
strikeString行权价
call_putStringCALL/PUT
marketString市场
account_idi64账户 ID
positionf64持仓数量
available_quantityf64可行权数量

示例

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>可选;合法值为 New、Cancel、Success、FailNone(不序列化)
req.exercise_typeOption<String>可选;合法值为 Exercise、ExpireNone(不序列化)
req.symbolOption<String>可选None(不序列化)
req.order_byOption<String>可选;合法值为 symbol、expire_date、strike、is_callNone(不序列化)
req.langOption<String>可选None(不序列化)

返回

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

字段类型说明
page_numi32当前页码
page_sizei32页大小
item_counti32总记录数
page_counti32总页数
itemsVec<OptionExerciseRecord>行权记录列表

items 元素(OptionExerciseRecord):

字段类型说明
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?