From 640a16f63a3cc3455c4c098c8b2865543be2b96e Mon Sep 17 00:00:00 2001 From: Jiahao Li Date: Sun, 27 Jul 2025 17:24:57 +0800 Subject: [PATCH] Add manualOrderTime for exerciseOptions --- ib_async/client.py | 16 +++++++++++++--- ib_async/ib.py | 11 +++++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ib_async/client.py b/ib_async/client.py index b60f1cc..3a11137 100644 --- a/ib_async/client.py +++ b/ib_async/client.py @@ -842,9 +842,16 @@ def reqHistoricalData( self.send(*fields) def exerciseOptions( - self, reqId, contract, exerciseAction, exerciseQuantity, account, override + self, + reqId, + contract, + exerciseAction, + exerciseQuantity, + account, + override, + manualOrderTime, ): - self.send( + fields = [ 21, 2, reqId, @@ -863,7 +870,10 @@ def exerciseOptions( exerciseQuantity, account, override, - ) + ] + if self.serverVersion() >= 180: + fields += [manualOrderTime] + self.send(*fields) def reqScannerSubscription( self, diff --git a/ib_async/ib.py b/ib_async/ib.py index 4f73160..1fbf03b 100644 --- a/ib_async/ib.py +++ b/ib_async/ib.py @@ -48,7 +48,6 @@ LimitOrder, Order, OrderState, - OrderStateNumeric, OrderStatus, StopOrder, Trade, @@ -1784,6 +1783,7 @@ def exerciseOptions( exerciseQuantity: int, account: str, override: int, + manualOrderTime: str, ): """ Exercise an options contract. @@ -1800,10 +1800,17 @@ def exerciseOptions( override: * 0 = no override * 1 = override the system's natural action + manualOrderTime: Manual Order Time """ reqId = self.client.getReqId() self.client.exerciseOptions( - reqId, contract, exerciseAction, exerciseQuantity, account, override + reqId, + contract, + exerciseAction, + exerciseQuantity, + account, + override, + manualOrderTime, ) def reqNewsProviders(self) -> list[NewsProvider]: