行权期权
exerciseOptions() 用于对期权合约发送行权或失效请求。它不是普通下单接口,风险比提交一张限价单更高,因为它可能直接改变期权和标的持仓结构。
Python API 的调用形态是:
app.exerciseOptions( reqId, option_contract, exerciseAction, exerciseQuantity, account, override, manualOrderTime,)| 参数 | 中文意思 |
|---|---|
reqId | 请求 ID,用来对应回调或错误信息。 |
option_contract | 期权合约,必须是明确的期权合约。 |
exerciseAction | 行权动作。常见含义是行权或失效,具体值以 API 版本和产品规则为准。 |
exerciseQuantity | 行权数量,通常按合约张数理解。 |
account | 账户代码。多账户场景必须明确。 |
override | 是否覆盖默认处理。这个字段有真实持仓风险,不要随意设置。 |
manualOrderTime | 人工订单时间字段,普通场景通常留空。 |
期权合约示例
Section titled “期权合约示例”contract = Contract()contract.symbol = "AAPL"contract.secType = "OPT"contract.exchange = "SMART"contract.currency = "USD"contract.lastTradeDateOrContractMonth = "20261218"contract.strike = 100contract.right = "C"contract.multiplier = "100"这只是合约结构示例。真正发送行权请求前,必须先用 reqContractDetails() 确认该期权合约存在,并确认账户确实持有对应期权或具备相关权限。
| 检查项 | 说明 |
|---|---|
| 合约详情 | 到期日、行权价、看涨/看跌、乘数必须准确。 |
| 持仓 | 账户是否持有可行权数量。 |
| 账户 | 多账户时不能依赖默认账户。 |
| 到期和截止时间 | 期权行权有时间限制。 |
| 资金和标的影响 | 行权可能生成股票、现金或其它标的持仓变化。 |
| 权限和风控 | TWS/IBKR 可能拒绝不符合规则的请求。 |
行权请求不适合公开网页工具默认开放。更合理的做法是:
- 文档解释参数和风险。
- 模拟账户里只在确认持仓后测试。
- 生产系统必须有二次确认和权限限制。
- 保存请求参数、回调和错误信息,方便事后核对。
如果没有期权持仓或权限,TWS 可能返回拒绝信息;这属于账户和产品权限边界,不是 Python 语法问题。