期权行权

提交行权

签名

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

说明

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

参数

参数类型必填说明
req.accountOption<String>账户,缺省时 SDK 自动注入
req.contract_idOption<i64>合约 ID
req.exercise_typeOption<String>行权类型:Exercise(行权)或 Expire(到期处理)
req.quantityOption<f64>行权数量
req.executing_dateOption<String>条件Exercise 类型必填,行权日期
req.is_forceOption<bool>条件Exercise 类型必填,是否强制行权
req.itm_rateOption<i32>Expire 类型可选,实值比例 0..10
req.secret_keyOption<String>机构用户交易员密钥

返回

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

取消行权

签名

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

说明

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

参数

参数类型必填说明
req.accountOption<String>账户
req.idOption<i64>行权记录 ID
req.secret_keyOption<String>机构用户交易员密钥

返回

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

行权检查

签名

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

说明

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

参数

参数类型必填说明
req.accountOption<String>账户
req.contract_idOption<i64>合约 ID
req.exercise_typeOption<String>行权类型
req.quantityOption<f64>行权数量
req.executing_dateOption<String>条件Exercise 类型必填
req.secret_keyOption<String>机构用户交易员密钥

返回

Result<Option<bool>, TigerError>

返回 Some(true) 表示可以行权。

示例

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?;
println!("行权检查通过: {:?}", ok);

返回示例

true

获取行权持仓

签名

pub async fn get_option_exercise_positions(&self, mut req: OptionExercisePositionsRequest) -> Result<Vec<OptionExercisePosition>, TigerError>

说明

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

参数

参数类型必填说明
req.accountOption<String>账户
req.pageOption<i32>页码
req.page_sizeOption<i32>每页条数
req.secret_keyOption<String>机构用户交易员密钥

返回

Result<Vec<OptionExercisePosition>, TigerError>

字段类型说明
contract_idi64合约 ID
symbolString股票代码
sec_typeString证券类型
expiryString到期日
strikef64行权价
rightStringPUT/CALL
positionf64持仓数量
marketString市场
currencyString币种

示例

use tigeropen::model::trade_requests::OptionExercisePositionsRequest;

let positions = trade.get_option_exercise_positions(
    OptionExercisePositionsRequest::default()
).await?;
for p in &positions {
    println!("{} {} strike={} qty={}", p.symbol, p.right, p.strike, p.position);
}

返回示例

[
  {
    "contract_id": 55678,
    "symbol": "AAPL",
    "sec_type": "OPT",
    "expiry": "20260919",
    "strike": 200.0,
    "right": "CALL",
    "position": 2.0,
    "market": "US",
    "currency": "USD"
  }
]

获取行权记录

签名

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

说明

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

参数

参数类型必填说明
req.accountOption<String>账户
req.pageOption<i32>页码
req.page_sizeOption<i32>每页条数
req.secret_keyOption<String>机构用户交易员密钥

返回

Result<Vec<OptionExerciseRecord>, TigerError>

字段类型说明
idi64记录 ID
contract_idi64合约 ID
symbolString股票代码
expiryString到期日
strikef64行权价
rightStringPUT/CALL
exercise_typeStringExercise/Expire
quantityf64行权数量
statusString状态
executing_dateString执行日期
create_timei64创建时间(毫秒)

示例

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

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

返回示例

[
  {
    "id": 12345,
    "contract_id": 55678,
    "symbol": "AAPL",
    "expiry": "20260919",
    "strike": 200.0,
    "right": "CALL",
    "exercise_type": "Exercise",
    "quantity": 1.0,
    "status": "Submitted",
    "executing_date": "2026-09-19",
    "create_time": 1719216000000
  }
]

Did this page help you?