API docs¶
Release 0.9.57.
Also see the official Python API documentation from IB.
IB¶
-
class
ib_insync.ib.
IB
[source]¶ Provides both a blocking and an asynchronous interface to the IB API, using asyncio networking and event loop.
The IB class offers direct access to the current state, such as orders, executions, positions, tickers etc. This state is automatically kept in sync with the TWS/IBG application.
This class has most request methods of EClient, with the same names and parameters (except for the reqId parameter which is not needed anymore). Request methods that return a result come in two versions:
Blocking: Will block until complete and return the result. The current state will be kept updated while the request is ongoing;
Asynchronous: All methods that have the “Async” postfix. Implemented as coroutines or methods that return a Future and intended for advanced users.
The One Rule:
While some of the request methods are blocking from the perspective of the user, the framework will still keep spinning in the background and handle all messages received from TWS/IBG. It is important to not block the framework from doing its work. If, for example, the user code spends much time in a calculation, or uses time.sleep() with a long delay, the framework will stop spinning, messages accumulate and things may go awry.
The one rule when working with the IB class is therefore that
user code may not block for too long.
To be clear, the IB request methods are okay to use and do not count towards the user operation time, no matter how long the request takes to finish.
So what is “too long”? That depends on the situation. If, for example, the timestamp of tick data is to remain accurate within a millisecond, then the user code must not spend longer than a millisecond. If, on the other extreme, there is very little incoming data and there is no desire for accurate timestamps, then the user code can block for hours.
If a user operation takes a long time then it can be farmed out to a different process. Alternatively the operation can be made such that it periodically calls IB.sleep(0); This will let the framework handle any pending work and return when finished. The operation should be aware that the current state may have been updated during the sleep(0) call.
For introducing a delay, never use time.sleep() but use
sleep()
instead.-
RequestTimeout
¶ Timeout (in seconds) to wait for a blocking request to finish before raising
asyncio.TimeoutError
. The default value of 0 will wait indefinitely. Note: This timeout is not used for the*Async
methods.- Type
float
- Events:
connectedEvent
(): Is emitted after connecting and synchronzing with TWS/gateway.disconnectedEvent
(): Is emitted after disconnecting from TWS/gateway.updateEvent
(): Is emitted after a network packet has been handeled.pendingTickersEvent
(tickers: Set[Ticker
]): Emits the set of tickers that have been updated during the last update and for which there are new ticks, tickByTicks or domTicks.barUpdateEvent
(bars:BarDataList
, hasNewBar: bool): Emits the bar list that has been updated in real time. If a new bar has been added then hasNewBar is True, when the last bar has changed it is False.newOrderEvent
(trade:Trade
): Emits a newly placed trade.orderModifyEvent
(trade:Trade
): Emits when order is modified.cancelOrderEvent
(trade:Trade
): Emits a trade directly after requesting for it to be cancelled.openOrderEvent
(trade:Trade
): Emits the trade with open order.orderStatusEvent
(trade:Trade
): Emits the changed order status of the ongoing trade.execDetailsEvent
(trade:Trade
, fill:Fill
): Emits the fill together with the ongoing trade it belongs to.commissionReportEvent
(trade:Trade
, fill:Fill
, report:CommissionReport
): The commission report is emitted after the fill that it belongs to.updatePortfolioEvent
(item:PortfolioItem
): A portfolio item has changed.positionEvent
(position:Position
): A position has changed.accountValueEvent
(value:AccountValue
): An account value has changed.accountSummaryEvent
(value:AccountValue
): An account value has changed.pnlEvent
(entry:PnL
): A profit- and loss entry is updated.pnlSingleEvent
(entry:PnLSingle
): A profit- and loss entry for a single position is updated.tickNewsEvent
(news:NewsTick
): Emit a new news headline.newsBulletinEvent
(bulletin:NewsBulletin
): Emit a new news bulletin.scannerDataEvent
(data:ScanDataList
): Emit data from a scanner subscription.errorEvent
(reqId: int, errorCode: int, errorString: str, contract:Contract
): Emits the reqId/orderId and TWS error code and string (see https://interactivebrokers.github.io/tws-api/message_codes.html) together with the contract the error applies to (or None if no contract applies).timeoutEvent
(idlePeriod: float): Is emitted if no data is received for longer than the timeout period specified withsetTimeout()
. The value emitted is the period in seconds since the last update.
Note that it is not advisable to place new requests inside an event handler as it may lead to too much recursion.
-
events
= ('connectedEvent', 'disconnectedEvent', 'updateEvent', 'pendingTickersEvent', 'barUpdateEvent', 'newOrderEvent', 'orderModifyEvent', 'cancelOrderEvent', 'openOrderEvent', 'orderStatusEvent', 'execDetailsEvent', 'commissionReportEvent', 'updatePortfolioEvent', 'positionEvent', 'accountValueEvent', 'accountSummaryEvent', 'pnlEvent', 'pnlSingleEvent', 'scannerDataEvent', 'tickNewsEvent', 'newsBulletinEvent', 'errorEvent', 'timeoutEvent')¶
-
RequestTimeout
= 0
-
connect
(host='127.0.0.1', port=7497, clientId=1, timeout=2, readonly=False)[source]¶ Connect to a running TWS or IB gateway application. After the connection is made the client is fully synchronized and ready to serve requests.
This method is blocking.
- Parameters
host (
str
) – Host name or IP address.port (
int
) – Port number.clientId (
int
) – ID number to use for this client; must be unique per connection. Setting clientId=0 will automatically merge manual TWS trading with this client.timeout (
float
) – If establishing the connection takes longer thantimeout
seconds then theasyncio.TimeoutError
exception is raised. Set to 0 to disable timeout.readonly (
bool
) – Set toTrue
when API is in read-only mode.
-
disconnect
()[source]¶ Disconnect from a TWS or IB gateway application. This will clear all session state.
-
static
run
(*, timeout=None)¶ By default run the event loop forever.
When awaitables (like Tasks, Futures or coroutines) are given then run the event loop until each has completed and return their results.
An optional timeout (in seconds) can be given that will raise asyncio.TimeoutError if the awaitables are not ready within the timeout period.
-
static
schedule
(callback, *args)¶ Schedule the callback to be run at the given time with the given arguments. This will return the Event Handle.
- Parameters
time (
Union
[time
,datetime
]) – Time to run callback. If given asdatetime.time
then use today as date.callback (
Callable
) – Callable scheduled to run.args – Arguments for to call callback with.
-
static
sleep
()¶ Wait for the given amount of seconds while everything still keeps processing in the background. Never use time.sleep().
- Parameters
secs (float) – Time in seconds to wait.
- Return type
bool
-
static
timeRange
(end, step)¶ Iterator that waits periodically until certain time points are reached while yielding those time points.
- Parameters
start (
time
) – Start time, can be specified as datetime.datetime, or as datetime.time in which case today is used as the dateend (
time
) – End time, can be specified as datetime.datetime, or as datetime.time in which case today is used as the datestep (float) – The number of seconds of each period
- Return type
Iterator
[datetime
]
-
static
timeRangeAsync
(end, step)¶ Async version of
timeRange()
.- Return type
Asynciterator
[datetime
]
-
static
waitUntil
()¶ Wait until the given time t is reached.
- Parameters
t (
time
) – The time t can be specified as datetime.datetime, or as datetime.time in which case today is used as the date.- Return type
bool
-
waitOnUpdate
(timeout=0)[source]¶ Wait on any new update to arrive from the network.
- Parameters
timeout (
float
) – Maximum time in seconds to wait. If 0 then no timeout is used.
Note
A loop with
waitOnUpdate
should not be used to harvest tick data from tickers, since some ticks can go missing. This happens when multiple updates occur almost simultaneously; The ticks from the first update are then cleared. Use events instead to prevent this.- Return type
bool
-
loopUntil
(condition=None, timeout=0)[source]¶ Iterate until condition is met, with optional timeout in seconds. The yielded value is that of the condition or False when timed out.
- Parameters
condition – Predicate function that is tested after every network
update. –
timeout (
float
) – Maximum time in seconds to wait. If 0 then no timeout is used.
- Return type
Iterator
[object
]
-
setTimeout
(timeout=60)[source]¶ Set a timeout for receiving messages from TWS/IBG, emitting
timeoutEvent
if there is no incoming data for too long.The timeout fires once per connected session but can be set again after firing or after a reconnect.
- Parameters
timeout (
float
) – Timeout in seconds.
-
accountValues
(account='')[source]¶ List of account values for the given account, or of all accounts if account is left blank.
- Parameters
account (
str
) – If specified, filter for this account name.- Return type
List
[AccountValue
]
-
accountSummary
(account='')[source]¶ List of account values for the given account, or of all accounts if account is left blank.
This method is blocking on first run, non-blocking after that.
- Parameters
account (
str
) – If specified, filter for this account name.- Return type
List
[AccountValue
]
-
portfolio
()[source]¶ List of portfolio items of the default account.
- Return type
List
[PortfolioItem
]
-
positions
(account='')[source]¶ List of positions for the given account, or of all accounts if account is left blank.
- Parameters
account (
str
) – If specified, filter for this account name.- Return type
List
[Position
]
-
pnl
(account='', modelCode='')[source]¶ List of subscribed
PnL
objects (profit and loss), optionally filtered by account and/or modelCode.The
PnL
objects are kept live updated.- Parameters
account – If specified, filter for this account name.
modelCode – If specified, filter for this account model.
- Return type
List
[PnL
]
-
pnlSingle
(account='', modelCode='', conId=0)[source]¶ List of subscribed
PnLSingle
objects (profit and loss for single positions).The
PnLSingle
objects are kept live updated.- Parameters
account (
str
) – If specified, filter for this account name.modelCode (
str
) – If specified, filter for this account model.conId (
int
) – If specified, filter for this contract ID.
- Return type
List
[PnLSingle
]
-
ticker
(contract)[source]¶ Get ticker of the given contract. It must have been requested before with reqMktData with the same contract object. The ticker may not be ready yet if called directly after
reqMktData()
.
-
pendingTickers
()[source]¶ Get a list of all tickers that have pending ticks or domTicks.
- Return type
List
[Ticker
]
-
realtimeBars
()[source]¶ Get a list of all live updated bars. These can be 5 second realtime bars or live updated historical bars.
- Return type
-
newsTicks
()[source]¶ List of ticks with headline news. The article itself can be retrieved with
reqNewsArticle()
.- Return type
List
[NewsTick
]
-
newsBulletins
()[source]¶ List of IB news bulletins.
- Return type
List
[NewsBulletin
]
-
reqTickers
(*contracts, regulatorySnapshot=False)[source]¶ Request and return a list of snapshot tickers. The list is returned when all tickers are ready.
This method is blocking.
-
qualifyContracts
(*contracts)[source]¶ Fully qualify the given contracts in-place. This will fill in the missing fields in the contract, especially the conId.
Returns a list of contracts that have been successfully qualified.
This method is blocking.
-
bracketOrder
(action, quantity, limitPrice, takeProfitPrice, stopLossPrice, **kwargs)[source]¶ Create a limit order that is bracketed by a take-profit order and a stop-loss order. Submit the bracket like:
for o in bracket: ib.placeOrder(contract, o)
https://interactivebrokers.github.io/tws-api/bracket_order.html
- Parameters
action (
str
) – ‘BUY’ or ‘SELL’.quantity (
float
) – Size of order.limitPrice (
float
) – Limit price of entry order.takeProfitPrice (
float
) – Limit price of profit order.stopLossPrice (
float
) – Stop price of loss order.
- Return type
-
static
oneCancelsAll
(orders, ocaGroup, ocaType)[source]¶ Place the trades in the same One Cancels All (OCA) group.
-
whatIfOrder
(contract, order)[source]¶ Retrieve commission and margin impact without actually placing the order. The given order will not be modified in any way.
This method is blocking.
- Parameters
- Return type
-
placeOrder
(contract, order)[source]¶ Place a new order or modify an existing order. Returns a Trade that is kept live updated with status changes, fills, etc.
-
reqGlobalCancel
()[source]¶ Cancel all active trades including those placed by other clients or TWS/IB gateway.
-
reqAccountUpdates
(account='')[source]¶ This is called at startup - no need to call again.
Request account and portfolio values of the account and keep updated. Returns when both account values and portfolio are filled.
This method is blocking.
- Parameters
account (
str
) – If specified, filter for this account name.
-
reqAccountUpdatesMulti
(account='', modelCode='')[source]¶ It is recommended to use
accountValues()
instead.Request account values of multiple accounts and keep updated.
This method is blocking.
- Parameters
account (
str
) – If specified, filter for this account name.modelCode (
str
) – If specified, filter for this account model.
-
reqAccountSummary
()[source]¶ It is recommended to use
accountSummary()
instead.Request account values for all accounts and keep them updated. Returns when account summary is filled.
This method is blocking.
-
reqAutoOpenOrders
(autoBind=True)[source]¶ Bind manual TWS orders so that they can be managed from this client. The clientId must be 0 and the TWS API setting “Use negative numbers to bind automatic orders” must be checked.
This request is automatically called when clientId=0.
https://interactivebrokers.github.io/tws-api/open_orders.html https://interactivebrokers.github.io/tws-api/modifying_orders.html
- Parameters
autoBind (
bool
) – Set binding on or off.
-
reqOpenOrders
()[source]¶ Request and return a list of open orders.
This method can give stale information where a new open order is not reported or an already filled or cancelled order is reported as open. It is recommended to use the more reliable and much faster
openTrades()
oropenOrders()
methods instead.This method is blocking.
- Return type
List
[Order
]
-
reqAllOpenOrders
()[source]¶ Request and return a list of all open orders over all clients. Note that the orders of other clients will not be kept in sync, use the master clientId mechanism instead to see other client’s orders that are kept in sync.
- Return type
List
[Order
]
-
reqCompletedOrders
(apiOnly)[source]¶ Request and return a list of completed trades.
- Parameters
apiOnly (
bool
) – Request only API orders (not manually placed TWS orders).- Return type
List
[Trade
]
-
reqExecutions
(execFilter=None)[source]¶ It is recommended to use
fills()
orexecutions()
instead.Request and return a list of fills.
This method is blocking.
- Parameters
execFilter (
Optional
[ExecutionFilter
]) – If specified, return executions that match the filter.- Return type
List
[Fill
]
-
reqPositions
()[source]¶ It is recommended to use
positions()
instead.Request and return a list of positions for all accounts.
This method is blocking.
- Return type
List
[Position
]
-
reqPnL
(account, modelCode='')[source]¶ Start a subscription for profit and loss events.
Returns a
PnL
object that is kept live updated. The result can also be queried frompnl()
.https://interactivebrokers.github.io/tws-api/pnl.html
- Parameters
account (
str
) – Subscribe to this account.modelCode (
str
) – If specified, filter for this account model.
- Return type
-
cancelPnL
(account, modelCode='')[source]¶ Cancel PnL subscription.
- Parameters
account – Cancel for this account.
modelCode (
str
) – If specified, cancel for this account model.
-
reqPnLSingle
(account, modelCode, conId)[source]¶ Start a subscription for profit and loss events for single positions.
Returns a
PnLSingle
object that is kept live updated. The result can also be queried frompnlSingle()
.https://interactivebrokers.github.io/tws-api/pnl.html
- Parameters
account (
str
) – Subscribe to this account.modelCode (
str
) – Filter for this account model.conId (
int
) – Filter for this contract ID.
- Return type
-
cancelPnLSingle
(account, modelCode, conId)[source]¶ Cancel PnLSingle subscription for the given account, modelCode and conId.
- Parameters
account (
str
) – Cancel for this account name.modelCode (
str
) – Cancel for this account model.conId (
int
) – Cancel for this contract ID.
-
reqContractDetails
(contract)[source]¶ Get a list of contract details that match the given contract. If the returned list is empty then the contract is not known; If the list has multiple values then the contract is ambiguous.
The fully qualified contract is available in the the ContractDetails.contract attribute.
This method is blocking.
https://interactivebrokers.github.io/tws-api/contract_details.html
- Parameters
contract (
Contract
) – The contract to get details for.- Return type
List
[ContractDetails
]
-
reqMatchingSymbols
(pattern)[source]¶ Request contract descriptions of contracts that match a pattern.
This method is blocking.
https://interactivebrokers.github.io/tws-api/matching_symbols.html
- Parameters
pattern (
str
) – The first few letters of the ticker symbol, or for longer strings a character sequence matching a word in the security name.- Return type
List
[ContractDescription
]
-
reqMarketRule
(marketRuleId)[source]¶ Request price increments rule.
https://interactivebrokers.github.io/tws-api/minimum_increment.html
- Parameters
marketRuleId (
int
) – ID of market rule. The market rule IDs for a contract can be obtained viareqContractDetails()
fromContractDetails
.marketRuleIds, which contains a comma separated string of market rule IDs.- Return type
-
reqRealTimeBars
(contract, barSize, whatToShow, useRTH, realTimeBarsOptions=None)[source]¶ Request realtime 5 second bars.
https://interactivebrokers.github.io/tws-api/realtime_bars.html
- Parameters
contract (
Contract
) – Contract of interest.barSize (
int
) – Must be 5.whatToShow (
str
) – Specifies the source for constructing bars. Can be ‘TRADES’, ‘MIDPOINT’, ‘BID’ or ‘ASK’.useRTH (
bool
) – If True then only show data from within Regular Trading Hours, if False then show all data.realTimeBarsOptions (
Optional
[List
[TagValue
]]) – Unknown.
- Return type
-
cancelRealTimeBars
(bars)[source]¶ Cancel the realtime bars subscription.
- Parameters
bars (
RealTimeBarList
) – The bar list that was obtained fromreqRealTimeBars
.
-
reqHistoricalData
(contract, endDateTime, durationStr, barSizeSetting, whatToShow, useRTH, formatDate=1, keepUpToDate=False, chartOptions=None)[source]¶ Request historical bar data.
This method is blocking.
https://interactivebrokers.github.io/tws-api/historical_bars.html
- Parameters
contract (
Contract
) – Contract of interest.endDateTime (
object
) – Can be set to ‘’ to indicate the current time, or it can be given as a datetime.date or datetime.datetime, or it can be given as a string in ‘yyyyMMdd HH:mm:ss’ format. If no timezone is given then the TWS login timezone is used.durationStr (
str
) – Time span of all the bars. Examples: ‘60 S’, ‘30 D’, ‘13 W’, ‘6 M’, ‘10 Y’.barSizeSetting (
str
) – Time period of one bar. Must be one of: ‘1 secs’, ‘5 secs’, ‘10 secs’ 15 secs’, ‘30 secs’, ‘1 min’, ‘2 mins’, ‘3 mins’, ‘5 mins’, ‘10 mins’, ‘15 mins’, ‘20 mins’, ‘30 mins’, ‘1 hour’, ‘2 hours’, ‘3 hours’, ‘4 hours’, ‘8 hours’, ‘1 day’, ‘1 week’, ‘1 month’.whatToShow (
str
) – Specifies the source for constructing bars. Must be one of: ‘TRADES’, ‘MIDPOINT’, ‘BID’, ‘ASK’, ‘BID_ASK’, ‘ADJUSTED_LAST’, ‘HISTORICAL_VOLATILITY’, ‘OPTION_IMPLIED_VOLATILITY’, ‘REBATE_RATE’, ‘FEE_RATE’, ‘YIELD_BID’, ‘YIELD_ASK’, ‘YIELD_BID_ASK’, ‘YIELD_LAST’.useRTH (
bool
) – If True then only show data from within Regular Trading Hours, if False then show all data.formatDate (
int
) – For an intraday request setting to 2 will cause the returned date fields to be timezone-aware datetime.datetime with UTC timezone, instead of local timezone as used by TWS.keepUpToDate (
bool
) – If True then a realtime subscription is started to keep the bars updated;endDateTime
must be set empty (‘’) then.chartOptions (
Optional
[List
[TagValue
]]) – Unknown.
- Return type
-
cancelHistoricalData
(bars)[source]¶ Cancel the update subscription for the historical bars.
- Parameters
bars (
BarDataList
) – The bar list that was obtained fromreqHistoricalData
with a keepUpToDate subscription.
-
reqHistoricalTicks
(contract, startDateTime, endDateTime, numberOfTicks, whatToShow, useRth, ignoreSize=False, miscOptions=None)[source]¶ Request historical ticks. The time resolution of the ticks is one second.
This method is blocking.
https://interactivebrokers.github.io/tws-api/historical_time_and_sales.html
- Parameters
contract (
Contract
) – Contract to query.startDateTime (
Union
[str
,date
]) – Can be given as a datetime.date or datetime.datetime, or it can be given as a string in ‘yyyyMMdd HH:mm:ss’ format. If no timezone is given then the TWS login timezone is used.endDateTime (
Union
[str
,date
]) – One ofstartDateTime
orendDateTime
can be given, the other must be blank.numberOfTicks (
int
) – Number of ticks to request (1000 max). The actual result can contain a bit more to accommodate all ticks in the latest second.whatToShow (
str
) – One of ‘Bid_Ask’, ‘Midpoint’ or ‘Trades’.useRTH – If True then only show data from within Regular Trading Hours, if False then show all data.
ignoreSize (
bool
) – Ignore bid/ask ticks that only update the size.miscOptions (
Optional
[List
[TagValue
]]) – Unknown.
- Return type
List
[~T]
-
reqMarketDataType
(marketDataType)[source]¶ Set the market data type used throughout.
- Parameters
marketDataType (
int
) –One of:
1 = Live
2 = Frozen
3 = Delayed
4 = Delayed frozen
https://interactivebrokers.github.io/tws-api/market_data_type.html
-
reqHeadTimeStamp
(contract, whatToShow, useRTH, formatDate=1)[source]¶ Get the datetime of earliest available historical data for the contract.
- Parameters
contract (
Contract
) – Contract of interest.useRTH (
bool
) – If True then only show data from within Regular Trading Hours, if False then show all data.formatDate (
int
) – If set to 2 then the result is returned as a timezone-aware datetime.datetime with UTC timezone.
- Return type
datetime
-
reqMktData
(contract, genericTickList='', snapshot=False, regulatorySnapshot=False, mktDataOptions=None)[source]¶ Subscribe to tick data or request a snapshot. Returns the Ticker that holds the market data. The ticker will initially be empty and gradually (after a couple of seconds) be filled.
https://interactivebrokers.github.io/tws-api/md_request.html
- Parameters
contract (
Contract
) – Contract of interest.genericTickList (
str
) –Comma separated IDs of desired generic ticks that will cause corresponding Ticker fields to be filled:
ID
Ticker fields
100
putVolume
,callVolume
(for options)101
putOpenInterest
,callOpenInterest
(for options)104
histVolatility
(for options)105
avOptionVolume
(for options)106
impliedVolatility
(for options)162
indexFuturePremium
165
low13week
,high13week
,low26week
,high26week
,low52week
,high52week
,avVolume
221
markPrice
225
auctionVolume
,auctionPrice
,auctionImbalance
233
last
,lastSize
,rtVolume
,vwap
(Time & Sales)236
shortableShares
258
fundamentalRatios
(of typeib_insync.objects.FundamentalRatios
)293
tradeCount
294
tradeRate
295
volumeRate
375
rtTradeVolume
411
rtHistVolatility
456
dividends
(of typeib_insync.objects.Dividends
)588
futuresOpenInterest
snapshot (
bool
) – If True then request a one-time snapshot, otherwise subscribe to a stream of realtime tick data.regulatorySnapshot (
bool
) – Request NBBO snapshot (may incur a fee).mktDataOptions (
Optional
[List
[TagValue
]]) – Unknown
- Return type
-
cancelMktData
(contract)[source]¶ Unsubscribe from realtime streaming tick data.
- Parameters
contract (
Contract
) – The exact contract object that was used to subscribe with.
-
reqTickByTickData
(contract, tickType, numberOfTicks=0, ignoreSize=False)[source]¶ Subscribe to tick-by-tick data and return the Ticker that holds the ticks in ticker.tickByTicks.
-
cancelTickByTickData
(contract, tickType)[source]¶ Unsubscribe from tick-by-tick data
- Parameters
contract (
Contract
) – The exact contract object that was used to subscribe with.
-
reqMktDepthExchanges
()[source]¶ Get those exchanges that have have multiple market makers (and have ticks returned with marketMaker info).
- Return type
List
[DepthMktDataDescription
]
-
reqMktDepth
(contract, numRows=5, isSmartDepth=False, mktDepthOptions=None)[source]¶ Subscribe to market depth data (a.k.a. DOM, L2 or order book).
https://interactivebrokers.github.io/tws-api/market_depth.html
- Parameters
contract (
Contract
) – Contract of interest.numRows (
int
) – Number of depth level on each side of the order book (5 max).isSmartDepth (
bool
) – Consolidate the order book across exchanges.mktDepthOptions – Unknown.
- Return type
- Returns
The Ticker that holds the market depth in
ticker.domBids
andticker.domAsks
and the list of MktDepthData inticker.domTicks
.
-
cancelMktDepth
(contract, isSmartDepth=False)[source]¶ Unsubscribe from market depth data.
- Parameters
contract (
Contract
) – The exact contract object that was used to subscribe with.
-
reqHistogramData
(contract, useRTH, period)[source]¶ Request histogram data.
This method is blocking.
https://interactivebrokers.github.io/tws-api/histograms.html
- Parameters
contract (
Contract
) – Contract to query.useRTH (
bool
) – If True then only show data from within Regular Trading Hours, if False then show all data.period (
str
) – Period of which data is being requested, for example ‘3 days’.
- Return type
List
[HistogramData
]
-
reqFundamentalData
(contract, reportType, fundamentalDataOptions=None)[source]¶ Get fundamental data of a contract in XML format.
This method is blocking.
https://interactivebrokers.github.io/tws-api/fundamentals.html
- Parameters
contract (
Contract
) – Contract to query.reportType (
str
) –‘ReportsFinSummary’: Financial summary
’ReportsOwnership’: Company’s ownership
’ReportSnapshot’: Company’s financial overview
’ReportsFinStatements’: Financial Statements
’RESC’: Analyst Estimates
’CalendarReport’: Company’s calendar
fundamentalDataOptions (
Optional
[List
[TagValue
]]) – Unknown
- Return type
str
-
reqScannerData
(subscription, scannerSubscriptionOptions=None, scannerSubscriptionFilterOptions=None)[source]¶ Do a blocking market scan by starting a subscription and canceling it after the initial list of results are in.
This method is blocking.
https://interactivebrokers.github.io/tws-api/market_scanners.html
- Parameters
subscription (
ScannerSubscription
) – Basic filters.scannerSubscriptionOptions (
Optional
[List
[TagValue
]]) – Unknown.scannerSubscriptionFilterOptions (
Optional
[List
[TagValue
]]) – Advanced generic filters.
- Return type
-
reqScannerSubscription
(subscription, scannerSubscriptionOptions=None, scannerSubscriptionFilterOptions=None)[source]¶ Subscribe to market scan data.
https://interactivebrokers.github.io/tws-api/market_scanners.html
- Parameters
subscription (
ScannerSubscription
) – What to scan for.scannerSubscriptionOptions (
Optional
[List
[TagValue
]]) – Unknown.scannerSubscriptionFilterOptions (
Optional
[List
[TagValue
]]) – Unknown.
- Return type
-
cancelScannerSubscription
(dataList)[source]¶ Cancel market data subscription.
https://interactivebrokers.github.io/tws-api/market_scanners.html
- Parameters
dataList (
ScanDataList
) – The scan data list that was obtained fromreqScannerSubscription()
.
-
reqScannerParameters
()[source]¶ Requests an XML list of scanner parameters.
This method is blocking.
- Return type
str
-
calculateImpliedVolatility
(contract, optionPrice, underPrice, implVolOptions=None)[source]¶ Calculate the volatility given the option price.
This method is blocking.
https://interactivebrokers.github.io/tws-api/option_computations.html
- Parameters
- Return type
-
calculateOptionPrice
(contract, volatility, underPrice, optPrcOptions=None)[source]¶ Calculate the option price given the volatility.
This method is blocking.
https://interactivebrokers.github.io/tws-api/option_computations.html
- Parameters
contract (
Contract
) – Option contract.volatility (
float
) – Option volatility to use in calculation.underPrice (
float
) – Price of the underlier to use in calculationimplVolOptions – Unknown
- Return type
-
reqSecDefOptParams
(underlyingSymbol, futFopExchange, underlyingSecType, underlyingConId)[source]¶ Get the option chain.
This method is blocking.
https://interactivebrokers.github.io/tws-api/options.html
- Parameters
underlyingSymbol (
str
) – Symbol of underlier contract.futFopExchange (
str
) – Exchange (only forFuturesOption
, otherwise leave blank).underlyingSecType (
str
) – The type of the underlying security, like ‘STK’ or ‘FUT’.underlyingConId (
int
) – conId of the underlying contract.
- Return type
List
[OptionChain
]
-
exerciseOptions
(contract, exerciseAction, exerciseQuantity, account, override)[source]¶ Exercise an options contract.
https://interactivebrokers.github.io/tws-api/options.html
- Parameters
contract (
Contract
) – The option contract to be exercised.exerciseAction (
int
) –1 = exercise the option
2 = let the option lapse
exerciseQuantity (
int
) – Number of contracts to be exercised.account (
str
) – Destination account.override (
int
) –0 = no override
1 = override the system’s natural action
-
reqNewsProviders
()[source]¶ Get a list of news providers.
This method is blocking.
- Return type
List
[NewsProvider
]
-
reqNewsArticle
(providerCode, articleId, newsArticleOptions=None)[source]¶ Get the body of a news article.
This method is blocking.
https://interactivebrokers.github.io/tws-api/news.html
- Parameters
providerCode (
str
) – Code indicating news provider, like ‘BZ’ or ‘FLY’.articleId (
str
) – ID of the specific article.newsArticleOptions (
Optional
[List
[TagValue
]]) – Unknown.
- Return type
-
reqHistoricalNews
(conId, providerCodes, startDateTime, endDateTime, totalResults, historicalNewsOptions=None)[source]¶ Get historical news headline.
https://interactivebrokers.github.io/tws-api/news.html
This method is blocking.
- Parameters
conId (
int
) – Search news articles for contract with this conId.providerCodes (
str
) – A ‘+’-separated list of provider codes, like ‘BZ+FLY’.startDateTime (
Union
[str
,date
]) – The (exclusive) start of the date range. Can be given as a datetime.date or datetime.datetime, or it can be given as a string in ‘yyyyMMdd HH:mm:ss’ format. If no timezone is given then the TWS login timezone is used.endDateTime (
Union
[str
,date
]) – The (inclusive) end of the date range. Can be given as a datetime.date or datetime.datetime, or it can be given as a string in ‘yyyyMMdd HH:mm:ss’ format. If no timezone is given then the TWS login timezone is used.totalResults (
int
) – Maximum number of headlines to fetch (300 max).historicalNewsOptions (
Optional
[List
[TagValue
]]) – Unknown.
- Return type
-
reqNewsBulletins
(allMessages)[source]¶ Subscribe to IB news bulletins.
https://interactivebrokers.github.io/tws-api/news.html
- Parameters
allMessages (
bool
) – If True then fetch all messages for the day.
-
requestFA
(faDataType)[source]¶ Requests to change the FA configuration.
This method is blocking.
- Parameters
faDataType (
int
) –1 = Groups: Offer traders a way to create a group of accounts and apply a single allocation method to all accounts in the group.
2 = Profiles: Let you allocate shares on an account-by-account basis using a predefined calculation value.
3 = Account Aliases: Let you easily identify the accounts by meaningful names rather than account numbers.
-
replaceFA
(faDataType, xml)[source]¶ Replaces Financial Advisor’s settings.
- Parameters
faDataType (
int
) – SeerequestFA()
.xml (
str
) – The XML-formatted configuration string.
-
reqHistoricalDataAsync
(contract, endDateTime, durationStr, barSizeSetting, whatToShow, useRTH, formatDate=1, keepUpToDate=False, chartOptions=None)[source]¶
-
reqHistoricalTicksAsync
(contract, startDateTime, endDateTime, numberOfTicks, whatToShow, useRth, ignoreSize=False, miscOptions=None)[source]¶
-
async
reqScannerDataAsync
(subscription, scannerSubscriptionOptions=None, scannerSubscriptionFilterOptions=None)[source]¶
-
reqSecDefOptParamsAsync
(underlyingSymbol, futFopExchange, underlyingSecType, underlyingConId)[source]¶
Client¶
-
class
ib_insync.client.
Client
(wrapper)[source]¶ Replacement for
ibapi.client.EClient
that uses asyncio.The client is fully asynchronous and has its own event-driven networking code that replaces the networking code of the standard EClient. It also replaces the infinite loop of
EClient.run()
with the asyncio event loop. It can be used as a drop-in replacement for the standard EClient as provided by IBAPI.Compared to the standard EClient this client has the following additional features:
client.connect()
will block until the client is ready to serve requests; It is not necessary to wait fornextValidId
to start requests as the client has already done that. The reqId is directly available withgetReqId()
.client.connectAsync()
is a coroutine for connecting asynchronously.When blocking,
client.connect()
can be made to time out with the timeout parameter (default 2 seconds).Optional
wrapper.priceSizeTick(reqId, tickType, price, size)
that combines price and size instead of the two wrapper methods priceTick and sizeTick.Automatic request throttling.
Optional
wrapper.tcpDataArrived()
method; If the wrapper has this method it is invoked directly after a network packet has arrived. A possible use is to timestamp all data in the packet with the exact same time.Optional
wrapper.tcpDataProcessed()
method; If the wrapper has this method it is invoked after the network packet’s data has been handled. A possible use is to write or evaluate the newly arrived data in one batch instead of item by item.
-
MaxRequests
¶ Throttle the number of requests to
MaxRequests
perRequestsInterval
seconds. Set to 0 to disable throttling.- Type
int
-
RequestsInterval
¶ Time interval (in seconds) for request throttling.
- Type
float
-
MinClientVersion
¶ Client protocol version.
- Type
int
-
MaxClientVersion
¶ Client protocol version.
- Type
int
- Events:
apiStart
()apiEnd
()apiError
(errorMsg: str)throttleStart
()throttleEnd
()
-
events
= ('apiStart', 'apiEnd', 'apiError', 'throttleStart', 'throttleEnd')¶
-
MaxRequests
= 45
-
RequestsInterval
= 1
-
MinClientVersion
= 142
-
MaxClientVersion
= 152
-
DISCONNECTED
= 0¶
-
CONNECTING
= 1¶
-
CONNECTED
= 2¶
-
getAccounts
()[source]¶ Get the list of account names that are under management.
- Return type
List
[str
]
-
setConnectOptions
(connectOptions)[source]¶ Set additional connect options.
- Parameters
connectOptions (
str
) – Use “+PACEAPI” to use request-pacing built into TWS/gateway 974+.
-
connect
(host, port, clientId, timeout=2)[source]¶ Connect to a running TWS or IB gateway application.
- Parameters
host (
str
) – Host name or IP address.port (
int
) – Port number.clientId (
int
) – ID number to use for this client; must be unique per connection.timeout (
float
) – If establishing the connection takes longer thantimeout
seconds then theasyncio.TimeoutError
exception is raised. Set to 0 to disable timeout.
-
reqHistoricalData
(reqId, contract, endDateTime, durationStr, barSizeSetting, whatToShow, useRTH, formatDate, keepUpToDate, chartOptions)[source]¶
-
reqScannerSubscription
(reqId, subscription, scannerSubscriptionOptions, scannerSubscriptionFilterOptions)[source]¶
-
reqSecDefOptParams
(reqId, underlyingSymbol, futFopExchange, underlyingSecType, underlyingConId)[source]¶
-
reqHistoricalNews
(reqId, conId, providerCodes, startDateTime, endDateTime, totalResults, historicalNewsOptions)[source]¶
Order¶
-
class
ib_insync.order.
Trade
(*args, **kwargs)[source]¶ Trade keeps track of an order, its status and all its fills.
- Events:
-
events
= ('statusEvent', 'modifyEvent', 'fillEvent', 'commissionReportEvent', 'filledEvent', 'cancelEvent', 'cancelledEvent')¶
-
defaults
= {'contract': None, 'fills': None, 'log': None, 'order': None, 'orderStatus': None}¶
-
statusEvent
¶
-
modifyEvent
¶
-
fillEvent
¶
-
commissionReportEvent
¶
-
filledEvent
¶
-
cancelEvent
¶
-
cancelledEvent
¶
-
contract
¶
-
fills
¶
-
log
¶
-
order
¶
-
orderStatus
¶
-
class
ib_insync.order.
OrderStatus
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'avgFillPrice': 0.0, 'clientId': 0, 'filled': 0, 'lastFillPrice': 0.0, 'lastLiquidity': 0, 'mktCapPrice': 0.0, 'orderId': 0, 'parentId': 0, 'permId': 0, 'remaining': 0, 'status': '', 'whyHeld': ''}¶
-
PendingSubmit
= 'PendingSubmit'¶
-
PendingCancel
= 'PendingCancel'¶
-
PreSubmitted
= 'PreSubmitted'¶
-
Submitted
= 'Submitted'¶
-
ApiPending
= 'ApiPending'¶
-
ApiCancelled
= 'ApiCancelled'¶
-
Cancelled
= 'Cancelled'¶
-
Filled
= 'Filled'¶
-
Inactive
= 'Inactive'¶
-
DoneStates
= {'ApiCancelled', 'Cancelled', 'Filled'}¶
-
ActiveStates
= {'ApiPending', 'PendingSubmit', 'PreSubmitted', 'Submitted'}¶
-
avgFillPrice
¶
-
clientId
¶
-
filled
¶
-
lastFillPrice
¶
-
lastLiquidity
¶
-
mktCapPrice
¶
-
orderId
¶
-
parentId
¶
-
permId
¶
-
remaining
¶
-
status
¶
-
whyHeld
¶
-
-
class
ib_insync.order.
Order
(*args, **kwargs)[source]¶ Order for trading contracts.
https://interactivebrokers.github.io/tws-api/available_orders.html
-
defaults
= {'account': '', 'action': '', 'activeStartTime': '', 'activeStopTime': '', 'adjustableTrailingUnit': 0, 'adjustedOrderType': '', 'adjustedStopLimitPrice': 1.7976931348623157e+308, 'adjustedStopPrice': 1.7976931348623157e+308, 'adjustedTrailingAmount': 1.7976931348623157e+308, 'algoId': '', 'algoParams': None, 'algoStrategy': '', 'allOrNone': False, 'auctionStrategy': 0, 'autoCancelDate': '', 'autoCancelParent': False, 'auxPrice': 1.7976931348623157e+308, 'basisPoints': 1.7976931348623157e+308, 'basisPointsType': 2147483647, 'blockOrder': False, 'cashQty': 1.7976931348623157e+308, 'clearingAccount': '', 'clearingIntent': '', 'clientId': 0, 'conditions': None, 'conditionsCancelOrder': False, 'conditionsIgnoreRth': False, 'continuousUpdate': False, 'delta': 1.7976931348623157e+308, 'deltaNeutralAuxPrice': 1.7976931348623157e+308, 'deltaNeutralClearingAccount': '', 'deltaNeutralClearingIntent': '', 'deltaNeutralConId': 0, 'deltaNeutralDesignatedLocation': '', 'deltaNeutralOpenClose': '', 'deltaNeutralOrderType': '', 'deltaNeutralSettlingFirm': '', 'deltaNeutralShortSale': False, 'deltaNeutralShortSaleSlot': 0, 'designatedLocation': '', 'discretionaryAmt': 0, 'discretionaryUpToLimitPrice': False, 'displaySize': 0, 'dontUseAutoPriceForHedge': False, 'eTradeOnly': True, 'exemptCode': -1, 'extOperator': '', 'faGroup': '', 'faMethod': '', 'faPercentage': '', 'faProfile': '', 'filledQuantity': 1.7976931348623157e+308, 'firmQuoteOnly': True, 'goodAfterTime': '', 'goodTillDate': '', 'hedgeParam': '', 'hedgeType': '', 'hidden': False, 'imbalanceOnly': False, 'isOmsContainer': False, 'isPeggedChangeAmountDecrease': False, 'lmtPrice': 1.7976931348623157e+308, 'lmtPriceOffset': 1.7976931348623157e+308, 'mifid2DecisionAlgo': '', 'mifid2DecisionMaker': '', 'mifid2ExecutionAlgo': '', 'mifid2ExecutionTrader': '', 'minQty': 2147483647, 'modelCode': '', 'nbboPriceCap': 1.7976931348623157e+308, 'notHeld': False, 'ocaGroup': '', 'ocaType': 0, 'openClose': 'O', 'optOutSmartRouting': False, 'orderComboLegs': None, 'orderId': 0, 'orderMiscOptions': None, 'orderRef': '', 'orderType': '', 'origin': 0, 'outsideRth': False, 'overridePercentageConstraints': False, 'parentId': 0, 'parentPermId': 0, 'peggedChangeAmount': 0.0, 'percentOffset': 1.7976931348623157e+308, 'permId': 0, 'randomizePrice': False, 'randomizeSize': False, 'refFuturesConId': 0, 'referenceChangeAmount': 0.0, 'referenceContractId': 0, 'referenceExchangeId': '', 'referencePriceType': 2147483647, 'routeMarketableToBbo': False, 'rule80A': '', 'scaleAutoReset': False, 'scaleInitFillQty': 2147483647, 'scaleInitLevelSize': 2147483647, 'scaleInitPosition': 2147483647, 'scalePriceAdjustInterval': 2147483647, 'scalePriceAdjustValue': 1.7976931348623157e+308, 'scalePriceIncrement': 1.7976931348623157e+308, 'scaleProfitOffset': 1.7976931348623157e+308, 'scaleRandomPercent': False, 'scaleSubsLevelSize': 2147483647, 'scaleTable': '', 'settlingFirm': '', 'shareholder': '', 'shortSaleSlot': 0, 'smartComboRoutingParams': None, 'softDollarTier': None, 'solicited': False, 'startingPrice': 1.7976931348623157e+308, 'stockRangeLower': 1.7976931348623157e+308, 'stockRangeUpper': 1.7976931348623157e+308, 'stockRefPrice': 1.7976931348623157e+308, 'sweepToFill': False, 'tif': '', 'totalQuantity': 0.0, 'trailStopPrice': 1.7976931348623157e+308, 'trailingPercent': 1.7976931348623157e+308, 'transmit': True, 'triggerMethod': 0, 'triggerPrice': 1.7976931348623157e+308, 'usePriceMgmtAlgo': False, 'volatility': 1.7976931348623157e+308, 'volatilityType': 2147483647, 'whatIf': False}¶
-
conditions
¶
-
softDollarTier
¶
-
account
¶
-
action
¶
-
activeStartTime
¶
-
activeStopTime
¶
-
adjustableTrailingUnit
¶
-
adjustedOrderType
¶
-
adjustedStopLimitPrice
¶
-
adjustedStopPrice
¶
-
adjustedTrailingAmount
¶
-
algoId
¶
-
algoParams
¶
-
algoStrategy
¶
-
allOrNone
¶
-
auctionStrategy
¶
-
autoCancelDate
¶
-
autoCancelParent
¶
-
auxPrice
¶
-
basisPoints
¶
-
basisPointsType
¶
-
blockOrder
¶
-
cashQty
¶
-
clearingAccount
¶
-
clearingIntent
¶
-
clientId
¶
-
conditionsCancelOrder
¶
-
conditionsIgnoreRth
¶
-
continuousUpdate
¶
-
delta
¶
-
deltaNeutralAuxPrice
¶
-
deltaNeutralClearingAccount
¶
-
deltaNeutralClearingIntent
¶
-
deltaNeutralConId
¶
-
deltaNeutralDesignatedLocation
¶
-
deltaNeutralOpenClose
¶
-
deltaNeutralOrderType
¶
-
deltaNeutralSettlingFirm
¶
-
deltaNeutralShortSale
¶
-
deltaNeutralShortSaleSlot
¶
-
designatedLocation
¶
-
discretionaryAmt
¶
-
discretionaryUpToLimitPrice
¶
-
displaySize
¶
-
dontUseAutoPriceForHedge
¶
-
eTradeOnly
¶
-
exemptCode
¶
-
extOperator
¶
-
faGroup
¶
-
faMethod
¶
-
faPercentage
¶
-
faProfile
¶
-
filledQuantity
¶
-
firmQuoteOnly
¶
-
goodAfterTime
¶
-
goodTillDate
¶
-
hedgeParam
¶
-
hedgeType
¶
-
imbalanceOnly
¶
-
isOmsContainer
¶
-
isPeggedChangeAmountDecrease
¶
-
lmtPrice
¶
-
lmtPriceOffset
¶
-
mifid2DecisionAlgo
¶
-
mifid2DecisionMaker
¶
-
mifid2ExecutionAlgo
¶
-
mifid2ExecutionTrader
¶
-
minQty
¶
-
modelCode
¶
-
nbboPriceCap
¶
-
notHeld
¶
-
ocaGroup
¶
-
ocaType
¶
-
openClose
¶
-
optOutSmartRouting
¶
-
orderComboLegs
¶
-
orderId
¶
-
orderMiscOptions
¶
-
orderRef
¶
-
orderType
¶
-
origin
¶
-
outsideRth
¶
-
overridePercentageConstraints
¶
-
parentId
¶
-
parentPermId
¶
-
peggedChangeAmount
¶
-
percentOffset
¶
-
permId
¶
-
randomizePrice
¶
-
randomizeSize
¶
-
refFuturesConId
¶
-
referenceChangeAmount
¶
-
referenceContractId
¶
-
referenceExchangeId
¶
-
referencePriceType
¶
-
routeMarketableToBbo
¶
-
rule80A
¶
-
scaleAutoReset
¶
-
scaleInitFillQty
¶
-
scaleInitLevelSize
¶
-
scaleInitPosition
¶
-
scalePriceAdjustInterval
¶
-
scalePriceAdjustValue
¶
-
scalePriceIncrement
¶
-
scaleProfitOffset
¶
-
scaleRandomPercent
¶
-
scaleSubsLevelSize
¶
-
scaleTable
¶
-
settlingFirm
¶
-
shortSaleSlot
¶
-
smartComboRoutingParams
¶
-
solicited
¶
-
startingPrice
¶
-
stockRangeLower
¶
-
stockRangeUpper
¶
-
stockRefPrice
¶
-
sweepToFill
¶
-
tif
¶
-
totalQuantity
¶
-
trailStopPrice
¶
-
trailingPercent
¶
-
transmit
¶
-
triggerMethod
¶
-
triggerPrice
¶
-
usePriceMgmtAlgo
¶
-
volatility
¶
-
volatilityType
¶
-
whatIf
¶
-
-
class
ib_insync.order.
OrderCondition
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
class
ib_insync.order.
PriceCondition
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'conId': 0, 'condType': 1, 'conjunction': 'a', 'exch': '', 'isMore': True, 'price': 0.0, 'triggerMethod': 0}¶
-
conId
¶
-
condType
¶
-
conjunction
¶
-
exch
¶
-
isMore
¶
-
price
¶
-
triggerMethod
¶
-
-
class
ib_insync.order.
TimeCondition
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'condType': 3, 'conjunction': 'a', 'isMore': True, 'time': ''}¶
-
condType
¶
-
conjunction
¶
-
isMore
¶
-
time
¶
-
-
class
ib_insync.order.
MarginCondition
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'condType': 4, 'conjunction': 'a', 'isMore': True, 'percent': 0}¶
-
condType
¶
-
conjunction
¶
-
isMore
¶
-
percent
¶
-
-
class
ib_insync.order.
ExecutionCondition
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'condType': 5, 'conjunction': 'a', 'exch': '', 'secType': '', 'symbol': ''}¶
-
condType
¶
-
conjunction
¶
-
exch
¶
-
secType
¶
-
symbol
¶
-
-
class
ib_insync.order.
VolumeCondition
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'conId': 0, 'condType': 6, 'conjunction': 'a', 'exch': '', 'isMore': True, 'volume': 0}¶
-
conId
¶
-
condType
¶
-
conjunction
¶
-
exch
¶
-
isMore
¶
-
volume
¶
-
-
class
ib_insync.order.
PercentChangeCondition
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'changePercent': 0.0, 'conId': 0, 'condType': 7, 'conjunction': 'a', 'exch': '', 'isMore': True}¶
-
changePercent
¶
-
conId
¶
-
condType
¶
-
conjunction
¶
-
exch
¶
-
isMore
¶
-
Contract¶
-
class
ib_insync.contract.
Contract
(*args, **kwargs)[source]¶ Contract(**kwargs)
can create any contract using keyword arguments. To simplify working with contracts, there are also more specialized contracts that take optional positional arguments. Some examples:Contract(conId=270639) Stock('AMD', 'SMART', 'USD') Stock('INTC', 'SMART', 'USD', primaryExchange='NASDAQ') Forex('EURUSD') CFD('IBUS30') Future('ES', '20180921', 'GLOBEX') Option('SPY', '20170721', 240, 'C', 'SMART') Bond(secIdType='ISIN', secId='US03076KAA60')
- Parameters
conId (int) – The unique IB contract identifier.
symbol (str) – The contract (or its underlying) symbol.
secType (str) –
The security type:
’STK’ = Stock (or ETF)
’OPT’ = Option
’FUT’ = Future
’IND’ = Index
’FOP’ = Futures option
’CASH’ = Forex pair
’CFD’ = CFD
’BAG’ = Combo
’WAR’ = Warrant
’BOND’= Bond
’CMDTY’= Commodity
’NEWS’ = News
’FUND’= Mutual fund
lastTradeDateOrContractMonth (str) – The contract’s last trading day or contract month (for Options and Futures). Strings with format YYYYMM will be interpreted as the Contract Month whereas YYYYMMDD will be interpreted as Last Trading Day.
strike (float) – The option’s strike price.
right (str) – Put or Call. Valid values are ‘P’, ‘PUT’, ‘C’, ‘CALL’, or ‘’ for non-options.
multiplier (str) – he instrument’s multiplier (i.e. options, futures).
exchange (str) – The destination exchange.
currency (str) – The underlying’s currency.
localSymbol (str) – The contract’s symbol within its primary exchange. For options, this will be the OCC symbol.
primaryExchange (str) – The contract’s primary exchange. For smart routed contracts, used to define contract in case of ambiguity. Should be defined as native exchange of contract, e.g. ISLAND for MSFT. For exchanges which contain a period in name, will only be part of exchange name prior to period, i.e. ENEXT for ENEXT.BE.
tradingClass (str) – The trading class name for this contract. Available in TWS contract description window as well. For example, GBL Dec ‘13 future’s trading class is “FGBL”.
includeExpired (bool) – If set to true, contract details requests and historical data queries can be performed pertaining to expired futures contracts. Expired options or other instrument types are not available.
secIdType (str) –
Security identifier type. Examples for Apple:
secIdType=’ISIN’, secId=’US0378331005’
secIdType=’CUSIP’, secId=’037833100’
secId (str) – Security identifier.
comboLegsDescription (str) – Description of the combo legs.
comboLegs (List[ComboLeg]) – The legs of a combined contract definition.
deltaNeutralContract (DeltaNeutralContract) – Delta and underlying price for Delta-Neutral combo orders.
Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'comboLegs': None, 'comboLegsDescrip': '', 'conId': 0, 'currency': '', 'deltaNeutralContract': None, 'exchange': '', 'includeExpired': False, 'lastTradeDateOrContractMonth': '', 'localSymbol': '', 'multiplier': '', 'primaryExchange': '', 'right': '', 'secId': '', 'secIdType': '', 'secType': '', 'strike': 0.0, 'symbol': '', 'tradingClass': ''}¶
-
static
create
(**kwargs)[source]¶ Create and a return a specialized contract based on the given secType, or a general Contract if secType is not given.
-
isHashable
()[source]¶ See if this contract can be hashed by conId.
Note: Bag contracts always get conId=28812380 and ContFutures get the same conId as the front contract, so these contract types are not hashable.
-
comboLegs
¶
-
comboLegsDescrip
¶
-
conId
¶
-
currency
¶
-
deltaNeutralContract
¶
-
exchange
¶
-
includeExpired
¶
-
lastTradeDateOrContractMonth
¶
-
localSymbol
¶
-
multiplier
¶
-
primaryExchange
¶
-
right
¶
-
secId
¶
-
secIdType
¶
-
secType
¶
-
strike
¶
-
symbol
¶
-
tradingClass
¶
-
class
ib_insync.contract.
Stock
(symbol='', exchange='', currency='', **kwargs)[source]¶ Stock contract.
- Parameters
symbol (
str
) – Symbol name.exchange (
str
) – Destination exchange.currency (
str
) – Underlying currency.
-
class
ib_insync.contract.
Option
(symbol='', lastTradeDateOrContractMonth='', strike=0.0, right='', exchange='', multiplier='', currency='', **kwargs)[source]¶ Option contract.
- Parameters
symbol (
str
) – Symbol name.lastTradeDateOrContractMonth (
str
) –The option’s last trading day or contract month.
YYYYMM format: To specify last month
YYYYMMDD format: To specify last trading day
strike (
float
) – The option’s strike price.right (
str
) – Put or call option. Valid values are ‘P’, ‘PUT’, ‘C’ or ‘CALL’.exchange (
str
) – Destination exchange.multiplier (
str
) – The contract multiplier.currency (
str
) – Underlying currency.
-
class
ib_insync.contract.
Future
(symbol='', lastTradeDateOrContractMonth='', exchange='', localSymbol='', multiplier='', currency='', **kwargs)[source]¶ Future contract.
- Parameters
symbol (
str
) – Symbol name.lastTradeDateOrContractMonth (
str
) –The option’s last trading day or contract month.
YYYYMM format: To specify last month
YYYYMMDD format: To specify last trading day
exchange (
str
) – Destination exchange.localSymbol (
str
) – The contract’s symbol within its primary exchange.multiplier (
str
) – The contract multiplier.currency (
str
) – Underlying currency.
-
class
ib_insync.contract.
ContFuture
(symbol='', exchange='', localSymbol='', multiplier='', currency='', **kwargs)[source]¶ Continuous future contract.
- Parameters
symbol (
str
) – Symbol name.exchange (
str
) – Destination exchange.localSymbol (
str
) – The contract’s symbol within its primary exchange.multiplier (
str
) – The contract multiplier.currency (
str
) – Underlying currency.
-
class
ib_insync.contract.
Forex
(pair='', exchange='IDEALPRO', symbol='', currency='', **kwargs)[source]¶ Foreign exchange currency pair.
- Parameters
pair (
str
) – Shortcut for specifying symbol and currency, like ‘EURUSD’.exchange (
str
) – Destination exchange.symbol (
str
) – Base currency.currency (
str
) – Quote currency.
-
class
ib_insync.contract.
Index
(symbol='', exchange='', currency='', **kwargs)[source]¶ Index.
- Parameters
symbol (
str
) – Symbol name.exchange (
str
) – Destination exchange.currency (
str
) – Underlying currency.
-
class
ib_insync.contract.
CFD
(symbol='', exchange='', currency='', **kwargs)[source]¶ Contract For Difference.
- Parameters
symbol (
str
) – Symbol name.exchange (
str
) – Destination exchange.currency (
str
) – Underlying currency.
-
class
ib_insync.contract.
Commodity
(symbol='', exchange='', currency='', **kwargs)[source]¶ Commodity.
- Parameters
symbol (
str
) – Symbol name.exchange (
str
) – Destination exchange.currency (
str
) – Underlying currency.
-
class
ib_insync.contract.
FuturesOption
(symbol='', lastTradeDateOrContractMonth='', strike=0.0, right='', exchange='', multiplier='', currency='', **kwargs)[source]¶ Option on a futures contract.
- Parameters
symbol (
str
) – Symbol name.lastTradeDateOrContractMonth (
str
) –The option’s last trading day or contract month.
YYYYMM format: To specify last month
YYYYMMDD format: To specify last trading day
strike (
float
) – The option’s strike price.right (
str
) – Put or call option. Valid values are ‘P’, ‘PUT’, ‘C’ or ‘CALL’.exchange (
str
) – Destination exchange.multiplier (
str
) – The contract multiplier.currency (
str
) – Underlying currency.
Ticker¶
-
class
ib_insync.ticker.
Ticker
(*args, **kwargs)[source]¶ Current market data such as bid, ask, last price, etc. for a contract.
Streaming level-1 ticks of type
TickData
are stored in theticks
list.Streaming level-2 ticks of type
MktDepthData
are stored in thedomTicks
list. The order book (DOM) is available as lists ofDOMLevel
indomBids
anddomAsks
.Streaming tick-by-tick ticks are stored in
tickByTicks
.For options the
OptionComputation
values for the bid, ask, resp. last price are stored in thebidGreeks
,askGreeks
resp.lastGreeks
attributes. There is alsomodelGreeks
that conveys the greeks as calculated by Interactive Brokers’ option model.- Events:
updateEvent
(ticker:Ticker
)
-
events
= ('updateEvent',)¶
-
defaults
= {'ask': nan, 'askGreeks': None, 'askSize': nan, 'askYield': nan, 'auctionImbalance': nan, 'auctionPrice': nan, 'auctionVolume': nan, 'avOptionVolume': nan, 'avVolume': nan, 'bid': nan, 'bidGreeks': None, 'bidSize': nan, 'bidYield': nan, 'callOpenInterest': nan, 'callVolume': nan, 'close': nan, 'contract': None, 'dividends': None, 'domAsks': None, 'domBids': None, 'domTicks': None, 'fundamentalRatios': None, 'futuresOpenInterest': nan, 'halted': nan, 'high': nan, 'high13week': nan, 'high26week': nan, 'high52week': nan, 'histVolatility': nan, 'impliedVolatility': nan, 'indexFuturePremium': nan, 'last': nan, 'lastGreeks': None, 'lastSize': nan, 'lastYield': nan, 'low': nan, 'low13week': nan, 'low26week': nan, 'low52week': nan, 'markPrice': nan, 'modelGreeks': None, 'open': nan, 'prevAsk': nan, 'prevAskSize': nan, 'prevBid': nan, 'prevBidSize': nan, 'prevLast': nan, 'prevLastSize': nan, 'putOpenInterest': nan, 'putVolume': nan, 'rtHistVolatility': nan, 'rtTradeVolume': nan, 'rtVolume': nan, 'shortableShares': nan, 'tickByTicks': None, 'ticks': None, 'time': None, 'tradeCount': nan, 'tradeRate': nan, 'volume': nan, 'volumeRate': nan, 'vwap': nan}¶
-
updateEvent
¶
-
midpoint
()[source]¶ Return average of bid and ask, or NaN if no valid bid and ask are available.
- Return type
float
-
marketPrice
()[source]¶ Return the first available one of
last price if within current bid/ask;
average of bid and ask (midpoint);
close price.
- Return type
float
-
ask
¶
-
askGreeks
¶
-
askSize
¶
-
askYield
¶
-
auctionImbalance
¶
-
auctionPrice
¶
-
auctionVolume
¶
-
avOptionVolume
¶
-
avVolume
¶
-
bid
¶
-
bidGreeks
¶
-
bidSize
¶
-
bidYield
¶
-
callOpenInterest
¶
-
callVolume
¶
-
close
¶
-
contract
¶
-
dividends
¶
-
domAsks
¶
-
domBids
¶
-
domTicks
¶
-
fundamentalRatios
¶
-
futuresOpenInterest
¶
-
halted
¶
-
high
¶
-
high13week
¶
-
high26week
¶
-
high52week
¶
-
histVolatility
¶
-
impliedVolatility
¶
-
indexFuturePremium
¶
-
last
¶
-
lastGreeks
¶
-
lastSize
¶
-
lastYield
¶
-
low
¶
-
low13week
¶
-
low26week
¶
-
low52week
¶
-
markPrice
¶
-
modelGreeks
¶
-
open
¶
-
prevAsk
¶
-
prevAskSize
¶
-
prevBid
¶
-
prevBidSize
¶
-
prevLast
¶
-
prevLastSize
¶
-
putOpenInterest
¶
-
putVolume
¶
-
rtHistVolatility
¶
-
rtTradeVolume
¶
-
rtVolume
¶
-
tickByTicks
¶
-
ticks
¶
-
time
¶
-
tradeCount
¶
-
tradeRate
¶
-
volume
¶
-
volumeRate
¶
-
vwap
¶
Objects¶
-
class
ib_insync.objects.
Object
(*args, **kwargs)[source]¶ Base object, with:
__slots__ to avoid typos;
A general constructor;
A general string representation;
A default equality testing that compares attributes.
Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {}¶
-
class
ib_insync.objects.
ContractDetails
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'aggGroup': 0, 'bondType': '', 'callable': False, 'category': '', 'contract': None, 'contractMonth': '', 'convertible': False, 'coupon': 0, 'couponType': '', 'cusip': '', 'descAppend': '', 'evMultiplier': 0, 'evRule': '', 'industry': '', 'issueDate': '', 'lastTradeTime': '', 'liquidHours': '', 'longName': '', 'marketName': '', 'marketRuleIds': '', 'maturity': '', 'mdSizeMultiplier': 0, 'minTick': 0.0, 'nextOptionDate': '', 'nextOptionPartial': False, 'nextOptionType': '', 'notes': '', 'orderTypes': '', 'priceMagnifier': 0, 'putable': False, 'ratings': '', 'realExpirationDate': '', 'secIdList': None, 'stockType': '', 'subcategory': '', 'timeZoneId': '', 'tradingHours': '', 'underConId': 0, 'underSecType': '', 'underSymbol': '', 'validExchanges': ''}¶
-
aggGroup
¶
-
bondType
¶
-
callable
¶
-
category
¶
-
contract
¶
-
contractMonth
¶
-
convertible
¶
-
coupon
¶
-
couponType
¶
-
cusip
¶
-
descAppend
¶
-
evMultiplier
¶
-
evRule
¶
-
industry
¶
-
issueDate
¶
-
lastTradeTime
¶
-
liquidHours
¶
-
longName
¶
-
marketName
¶
-
marketRuleIds
¶
-
maturity
¶
-
mdSizeMultiplier
¶
-
minTick
¶
-
nextOptionDate
¶
-
nextOptionPartial
¶
-
nextOptionType
¶
-
notes
¶
-
orderTypes
¶
-
priceMagnifier
¶
-
putable
¶
-
ratings
¶
-
realExpirationDate
¶
-
secIdList
¶
-
stockType
¶
-
subcategory
¶
-
timeZoneId
¶
-
tradingHours
¶
-
underConId
¶
-
underSecType
¶
-
underSymbol
¶
-
validExchanges
¶
-
-
class
ib_insync.objects.
ContractDescription
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'contract': None, 'derivativeSecTypes': None}¶
-
contract
¶
-
derivativeSecTypes
¶
-
-
class
ib_insync.objects.
ComboLeg
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'action': '', 'conId': 0, 'designatedLocation': '', 'exchange': '', 'exemptCode': -1, 'openClose': 0, 'ratio': 0, 'shortSaleSlot': 0}¶
-
action
¶
-
conId
¶
-
designatedLocation
¶
-
exchange
¶
-
exemptCode
¶
-
openClose
¶
-
ratio
¶
-
shortSaleSlot
¶
-
-
class
ib_insync.objects.
DeltaNeutralContract
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'conId': 0, 'delta': 0.0, 'price': 0.0}¶
-
conId
¶
-
delta
¶
-
price
¶
-
-
class
ib_insync.objects.
OrderComboLeg
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'price': 1.7976931348623157e+308}¶
-
price
¶
-
-
class
ib_insync.objects.
OrderState
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'commission': 1.7976931348623157e+308, 'commissionCurrency': '', 'completedStatus': '', 'completedTime': '', 'equityWithLoanAfter': '', 'equityWithLoanBefore': '', 'equityWithLoanChange': '', 'initMarginAfter': '', 'initMarginBefore': '', 'initMarginChange': '', 'maintMarginAfter': '', 'maintMarginBefore': '', 'maintMarginChange': '', 'maxCommission': 1.7976931348623157e+308, 'minCommission': 1.7976931348623157e+308, 'status': '', 'warningText': ''}¶
-
commission
¶
-
commissionCurrency
¶
-
completedStatus
¶
-
completedTime
¶
-
equityWithLoanAfter
¶
-
equityWithLoanBefore
¶
-
equityWithLoanChange
¶
-
initMarginAfter
¶
-
initMarginBefore
¶
-
initMarginChange
¶
-
maintMarginAfter
¶
-
maintMarginBefore
¶
-
maintMarginChange
¶
-
maxCommission
¶
-
minCommission
¶
-
status
¶
-
warningText
¶
-
-
class
ib_insync.objects.
ScannerSubscription
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'abovePrice': 1.7976931348623157e+308, 'aboveVolume': 2147483647, 'averageOptionVolumeAbove': 2147483647, 'belowPrice': 1.7976931348623157e+308, 'couponRateAbove': 1.7976931348623157e+308, 'couponRateBelow': 1.7976931348623157e+308, 'excludeConvertible': False, 'instrument': '', 'locationCode': '', 'marketCapAbove': 1.7976931348623157e+308, 'marketCapBelow': 1.7976931348623157e+308, 'maturityDateAbove': '', 'maturityDateBelow': '', 'moodyRatingAbove': '', 'moodyRatingBelow': '', 'numberOfRows': -1, 'scanCode': '', 'scannerSettingPairs': '', 'spRatingAbove': '', 'spRatingBelow': '', 'stockTypeFilter': ''}¶
-
abovePrice
¶
-
aboveVolume
¶
-
averageOptionVolumeAbove
¶
-
belowPrice
¶
-
couponRateAbove
¶
-
couponRateBelow
¶
-
excludeConvertible
¶
-
instrument
¶
-
locationCode
¶
-
marketCapAbove
¶
-
marketCapBelow
¶
-
maturityDateAbove
¶
-
maturityDateBelow
¶
-
moodyRatingAbove
¶
-
moodyRatingBelow
¶
-
numberOfRows
¶
-
scanCode
¶
-
scannerSettingPairs
¶
-
spRatingAbove
¶
-
spRatingBelow
¶
-
stockTypeFilter
¶
-
-
class
ib_insync.objects.
SoftDollarTier
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'displayName': '', 'name': '', 'val': ''}¶
-
displayName
¶
-
name
¶
-
val
¶
-
-
class
ib_insync.objects.
Execution
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'acctNumber': '', 'avgPrice': 0.0, 'clientId': 0, 'cumQty': 0.0, 'evMultiplier': 0.0, 'evRule': '', 'exchange': '', 'execId': '', 'lastLiquidity': 0, 'liquidation': 0, 'modelCode': '', 'orderId': 0, 'orderRef': '', 'permId': 0, 'price': 0.0, 'shares': 0.0, 'side': '', 'time': ''}¶
-
acctNumber
¶
-
avgPrice
¶
-
clientId
¶
-
cumQty
¶
-
evMultiplier
¶
-
evRule
¶
-
exchange
¶
-
execId
¶
-
lastLiquidity
¶
-
liquidation
¶
-
modelCode
¶
-
orderId
¶
-
orderRef
¶
-
permId
¶
-
price
¶
-
side
¶
-
time
¶
-
-
class
ib_insync.objects.
CommissionReport
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'commission': 0.0, 'currency': '', 'execId': '', 'realizedPNL': 0.0, 'yieldRedemptionDate': 0, 'yield_': 0.0}¶
-
commission
¶
-
currency
¶
-
execId
¶
-
realizedPNL
¶
-
yieldRedemptionDate
¶
-
yield_
¶
-
-
class
ib_insync.objects.
ExecutionFilter
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'acctCode': '', 'clientId': 0, 'exchange': '', 'secType': '', 'side': '', 'symbol': '', 'time': ''}¶
-
acctCode
¶
-
clientId
¶
-
exchange
¶
-
secType
¶
-
side
¶
-
symbol
¶
-
time
¶
-
-
class
ib_insync.objects.
BarData
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'average': 0.0, 'barCount': 0, 'close': 0.0, 'date': '', 'high': 0.0, 'low': 0.0, 'open': 0.0, 'volume': 0}¶
-
average
¶
-
barCount
¶
-
close
¶
-
date
¶
-
high
¶
-
low
¶
-
open
¶
-
volume
¶
-
-
class
ib_insync.objects.
RealTimeBar
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'close': 0.0, 'count': 0, 'endTime': -1, 'high': 0.0, 'low': 0.0, 'open_': 0.0, 'time': 0, 'volume': 0.0, 'wap': 0.0}¶
-
close
¶
-
count
¶
-
endTime
¶
-
high
¶
-
low
¶
-
open_
¶
-
time
¶
-
volume
¶
-
wap
¶
-
-
class
ib_insync.objects.
TickAttrib
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'canAutoExecute': False, 'pastLimit': False, 'preOpen': False}¶
-
canAutoExecute
¶
-
pastLimit
¶
-
preOpen
¶
-
-
class
ib_insync.objects.
TickAttribBidAsk
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'askPastHigh': False, 'bidPastLow': False}¶
-
askPastHigh
¶
-
bidPastLow
¶
-
-
class
ib_insync.objects.
TickAttribLast
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'pastLimit': False, 'unreported': False}¶
-
pastLimit
¶
-
unreported
¶
-
-
class
ib_insync.objects.
HistogramData
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'count': 0, 'price': 0.0}¶
-
count
¶
-
price
¶
-
-
class
ib_insync.objects.
NewsProvider
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'code': '', 'name': ''}¶
-
code
¶
-
name
¶
-
-
class
ib_insync.objects.
DepthMktDataDescription
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'aggGroup': 2147483647, 'exchange': '', 'listingExch': '', 'secType': '', 'serviceDataType': ''}¶
-
aggGroup
¶
-
exchange
¶
-
listingExch
¶
-
secType
¶
-
serviceDataType
¶
-
-
class
ib_insync.objects.
PnL
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'account': '', 'dailyPnL': nan, 'modelCode': '', 'realizedPnL': nan, 'unrealizedPnL': nan}¶
-
account
¶
-
dailyPnL
¶
-
modelCode
¶
-
realizedPnL
¶
-
unrealizedPnL
¶
-
-
class
ib_insync.objects.
PnLSingle
(*args, **kwargs)[source]¶ Attribute values can be given positionally or as keyword. If an attribute is not given it will take its value from the ‘defaults’ class member. If an attribute is given both positionally and as keyword, the keyword wins.
-
defaults
= {'account': '', 'conId': 0, 'dailyPnL': nan, 'modelCode': '', 'position': 0, 'realizedPnL': nan, 'unrealizedPnL': nan, 'value': nan}¶
-
account
¶
-
conId
¶
-
dailyPnL
¶
-
modelCode
¶
-
position
¶
-
realizedPnL
¶
-
unrealizedPnL
¶
-
value
¶
-
-
class
ib_insync.objects.
FundamentalRatios
(**kwargs)[source]¶ https://interactivebrokers.github.io/tws-api/fundamental_ratios_tags.html
-
class
ib_insync.objects.
BarList
(*args)[source]¶ Base class for bar lists.
-
events
= ('updateEvent',)¶
-
updateEvent
¶
-
-
class
ib_insync.objects.
BarDataList
(*args)[source]¶ List of
BarData
that also stores all request parameters.Events:
updateEvent
(bars:BarDataList
, hasNewBar: bool)
-
barSizeSetting
¶
-
chartOptions
¶
-
contract
¶
-
durationStr
¶
-
endDateTime
¶
-
formatDate
¶
-
keepUpToDate
¶
-
reqId
¶
-
useRTH
¶
-
whatToShow
¶
-
class
ib_insync.objects.
RealTimeBarList
(*args)[source]¶ List of
RealTimeBar
that also stores all request parameters.Events:
updateEvent
(bars:RealTimeBarList
, hasNewBar: bool)
-
barSize
¶
-
contract
¶
-
realTimeBarsOptions
¶
-
reqId
¶
-
useRTH
¶
-
whatToShow
¶
-
class
ib_insync.objects.
ScanDataList
(*args)[source]¶ List of
ScanData
that also stores all request parameters.- Events:
updateEvent
(ScanDataList
)
-
events
= ('updateEvent',)¶
-
updateEvent
¶
-
reqId
¶
-
scannerSubscriptionFilterOptions
¶
-
scannerSubscriptionOptions
¶
-
subscription
¶
-
class
ib_insync.objects.
TagValue
(tag, value)¶ Create new instance of TagValue(tag, value)
-
property
tag
¶
-
property
value
¶
-
property
-
class
ib_insync.objects.
AccountValue
(account, tag, value, currency, modelCode)¶ Create new instance of AccountValue(account, tag, value, currency, modelCode)
-
property
account
¶
-
property
currency
¶
-
property
modelCode
¶
-
property
tag
¶
-
property
value
¶
-
property
-
class
ib_insync.objects.
TickData
(time, tickType, price, size)¶ Create new instance of TickData(time, tickType, price, size)
-
property
price
¶
-
property
size
¶
-
property
tickType
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
HistoricalTick
(time, price, size)¶ Create new instance of HistoricalTick(time, price, size)
-
property
price
¶
-
property
size
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
HistoricalTickBidAsk
(time, tickAttribBidAsk, priceBid, priceAsk, sizeBid, sizeAsk)¶ Create new instance of HistoricalTickBidAsk(time, tickAttribBidAsk, priceBid, priceAsk, sizeBid, sizeAsk)
-
property
priceAsk
¶
-
property
priceBid
¶
-
property
sizeAsk
¶
-
property
sizeBid
¶
-
property
tickAttribBidAsk
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
HistoricalTickLast
(time, tickAttribLast, price, size, exchange, specialConditions)¶ Create new instance of HistoricalTickLast(time, tickAttribLast, price, size, exchange, specialConditions)
-
property
exchange
¶
-
property
price
¶
-
property
size
¶
-
property
specialConditions
¶
-
property
tickAttribLast
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
TickByTickAllLast
(tickType, time, price, size, tickAttribLast, exchange, specialConditions)¶ Create new instance of TickByTickAllLast(tickType, time, price, size, tickAttribLast, exchange, specialConditions)
-
property
exchange
¶
-
property
price
¶
-
property
size
¶
-
property
specialConditions
¶
-
property
tickAttribLast
¶
-
property
tickType
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
TickByTickBidAsk
(time, bidPrice, askPrice, bidSize, askSize, tickAttribBidAsk)¶ Create new instance of TickByTickBidAsk(time, bidPrice, askPrice, bidSize, askSize, tickAttribBidAsk)
-
property
askPrice
¶
-
property
askSize
¶
-
property
bidPrice
¶
-
property
bidSize
¶
-
property
tickAttribBidAsk
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
TickByTickMidPoint
(time, midPoint)¶ Create new instance of TickByTickMidPoint(time, midPoint)
-
property
midPoint
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
MktDepthData
(time, position, marketMaker, operation, side, price, size)¶ Create new instance of MktDepthData(time, position, marketMaker, operation, side, price, size)
-
property
marketMaker
¶
-
property
operation
¶
-
property
position
¶
-
property
price
¶
-
property
side
¶
-
property
size
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
DOMLevel
(price, size, marketMaker)¶ Create new instance of DOMLevel(price, size, marketMaker)
-
property
marketMaker
¶
-
property
price
¶
-
property
size
¶
-
property
-
class
ib_insync.objects.
BracketOrder
(parent, takeProfit, stopLoss)¶ Create new instance of BracketOrder(parent, takeProfit, stopLoss)
-
property
parent
¶
-
property
stopLoss
¶
-
property
takeProfit
¶
-
property
-
class
ib_insync.objects.
TradeLogEntry
(time, status, message)¶ Create new instance of TradeLogEntry(time, status, message)
-
property
message
¶
-
property
status
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
PriceIncrement
(lowEdge, increment)¶ Create new instance of PriceIncrement(lowEdge, increment)
-
property
increment
¶
-
property
lowEdge
¶
-
property
-
class
ib_insync.objects.
ScanData
(rank, contractDetails, distance, benchmark, projection, legsStr)¶ Create new instance of ScanData(rank, contractDetails, distance, benchmark, projection, legsStr)
-
property
benchmark
¶
-
property
contractDetails
¶
-
property
distance
¶
-
property
legsStr
¶
-
property
projection
¶
-
property
rank
¶
-
property
-
class
ib_insync.objects.
PortfolioItem
(contract, position, marketPrice, marketValue, averageCost, unrealizedPNL, realizedPNL, account)¶ Create new instance of PortfolioItem(contract, position, marketPrice, marketValue, averageCost, unrealizedPNL, realizedPNL, account)
-
property
account
¶
-
property
averageCost
¶
-
property
contract
¶
-
property
marketPrice
¶
-
property
marketValue
¶
-
property
position
¶
-
property
realizedPNL
¶
-
property
unrealizedPNL
¶
-
property
-
class
ib_insync.objects.
Position
(account, contract, position, avgCost)¶ Create new instance of Position(account, contract, position, avgCost)
-
property
account
¶
-
property
avgCost
¶
-
property
contract
¶
-
property
position
¶
-
property
-
class
ib_insync.objects.
Fill
(contract, execution, commissionReport, time)¶ Create new instance of Fill(contract, execution, commissionReport, time)
-
property
commissionReport
¶
-
property
contract
¶
-
property
execution
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
OptionComputation
(impliedVol, delta, optPrice, pvDividend, gamma, vega, theta, undPrice)¶ Create new instance of OptionComputation(impliedVol, delta, optPrice, pvDividend, gamma, vega, theta, undPrice)
-
property
delta
¶
-
property
gamma
¶
-
property
impliedVol
¶
-
property
optPrice
¶
-
property
pvDividend
¶
-
property
theta
¶
-
property
undPrice
¶
-
property
vega
¶
-
property
-
class
ib_insync.objects.
OptionChain
(exchange, underlyingConId, tradingClass, multiplier, expirations, strikes)¶ Create new instance of OptionChain(exchange, underlyingConId, tradingClass, multiplier, expirations, strikes)
-
property
exchange
¶
-
property
expirations
¶
-
property
multiplier
¶
-
property
strikes
¶
-
property
tradingClass
¶
-
property
underlyingConId
¶
-
property
-
class
ib_insync.objects.
Dividends
(past12Months, next12Months, nextDate, nextAmount)¶ Create new instance of Dividends(past12Months, next12Months, nextDate, nextAmount)
-
property
next12Months
¶
-
property
nextAmount
¶
-
property
nextDate
¶
-
property
past12Months
¶
-
property
-
class
ib_insync.objects.
NewsArticle
(articleType, articleText)¶ Create new instance of NewsArticle(articleType, articleText)
-
property
articleText
¶
-
property
articleType
¶
-
property
-
class
ib_insync.objects.
HistoricalNews
(time, providerCode, articleId, headline)¶ Create new instance of HistoricalNews(time, providerCode, articleId, headline)
-
property
articleId
¶
-
property
headline
¶
-
property
providerCode
¶
-
property
time
¶
-
property
-
class
ib_insync.objects.
NewsTick
(timeStamp, providerCode, articleId, headline, extraData)¶ Create new instance of NewsTick(timeStamp, providerCode, articleId, headline, extraData)
-
property
articleId
¶
-
property
extraData
¶
-
property
headline
¶
-
property
providerCode
¶
-
property
timeStamp
¶
-
property
-
class
ib_insync.objects.
NewsBulletin
(msgId, msgType, message, origExchange)¶ Create new instance of NewsBulletin(msgId, msgType, message, origExchange)
-
property
message
¶
-
property
msgId
¶
-
property
msgType
¶
-
property
origExchange
¶
-
property
-
class
ib_insync.objects.
FamilyCode
(accountID, familyCodeStr)¶ Create new instance of FamilyCode(accountID, familyCodeStr)
-
property
accountID
¶
-
property
familyCodeStr
¶
-
property
-
class
ib_insync.objects.
SmartComponent
(bitNumber, exchange, exchangeLetter)¶ Create new instance of SmartComponent(bitNumber, exchange, exchangeLetter)
-
property
bitNumber
¶
-
property
exchange
¶
-
property
exchangeLetter
¶
-
property
-
class
ib_insync.objects.
ConnectionStats
(startTime, duration, numBytesRecv, numBytesSent, numMsgRecv, numMsgSent)¶ Create new instance of ConnectionStats(startTime, duration, numBytesRecv, numBytesSent, numMsgRecv, numMsgSent)
-
property
duration
¶
-
property
numBytesRecv
¶
-
property
numBytesSent
¶
-
property
numMsgRecv
¶
-
property
numMsgSent
¶
-
property
startTime
¶
-
property
Utilities¶
-
ib_insync.util.
globalErrorEvent
= Event<Event, []>¶ Event to emit global exceptions.
-
ib_insync.util.
df
(objs, labels=None)[source]¶ Create pandas DataFrame from the sequence of same-type objects. When a list of labels is given then only retain those labels and drop the rest.
-
ib_insync.util.
tree
(obj)[source]¶ Convert object to a tree of lists, dicts and simple values. The result can be serialized to JSON.
-
ib_insync.util.
barplot
(bars, title='', upColor='blue', downColor='red')[source]¶ Create candlestick plot for the given bars. The bars can be given as a DataFrame or as a list of bar objects.
-
ib_insync.util.
formatSI
(n)[source]¶ Format the integer or float n to 3 significant digits + SI prefix.
- Return type
str
-
ib_insync.util.
run
(*awaitables, timeout=None)[source]¶ By default run the event loop forever.
When awaitables (like Tasks, Futures or coroutines) are given then run the event loop until each has completed and return their results.
An optional timeout (in seconds) can be given that will raise asyncio.TimeoutError if the awaitables are not ready within the timeout period.
-
ib_insync.util.
schedule
(time, callback, *args)[source]¶ Schedule the callback to be run at the given time with the given arguments. This will return the Event Handle.
- Parameters
time (
Union
[time
,datetime
]) – Time to run callback. If given asdatetime.time
then use today as date.callback (
Callable
) – Callable scheduled to run.args – Arguments for to call callback with.
-
ib_insync.util.
sleep
(secs=0.02)[source]¶ Wait for the given amount of seconds while everything still keeps processing in the background. Never use time.sleep().
- Parameters
secs (float) – Time in seconds to wait.
- Return type
bool
-
ib_insync.util.
timeRange
(start, end, step)[source]¶ Iterator that waits periodically until certain time points are reached while yielding those time points.
- Parameters
start (
time
) – Start time, can be specified as datetime.datetime, or as datetime.time in which case today is used as the dateend (
time
) – End time, can be specified as datetime.datetime, or as datetime.time in which case today is used as the datestep (float) – The number of seconds of each period
- Return type
Iterator
[datetime
]
-
ib_insync.util.
waitUntil
(t)[source]¶ Wait until the given time t is reached.
- Parameters
t (
time
) – The time t can be specified as datetime.datetime, or as datetime.time in which case today is used as the date.- Return type
bool
-
ib_insync.util.
timeRangeAsync
(start, end, step)[source]¶ Async version of
timeRange()
.- Return type
Asynciterator
[datetime
]
-
async
ib_insync.util.
waitUntilAsync
(t)[source]¶ Async version of
waitUntil()
.- Return type
bool
-
ib_insync.util.
useQt
(qtLib='PyQt5', period=0.01)[source]¶ Run combined Qt5/asyncio event loop.
- Parameters
qtLib (
str
) – Name of Qt library to use, can be ‘PyQt5’ or ‘PySide2’.period (
float
) – Period in seconds to poll Qt.
FlexReport¶
-
class
ib_insync.flexreport.
FlexReport
(token=None, queryId=None, path=None)[source]¶ Download and parse IB account statements via the Flex Web Service. https://www.interactivebrokers.com/en/software/am/am/reports/flex_web_service_version_3.htm
To obtain a
token
in account management, go to Reports -> Settings -> Flex Web Service. Tip: choose a 1 year expiry.To obtain a
queryId
: Create and save a query with Report -> Activity -> Flex Queries or Report -> Trade Confirmations -> Flex Queries. Find the query ID (not the query name).A large query can take a few minutes. In the weekends the query servers can be down.
Download a report by giving a valid
token
andqueryId
, or load from file by giving a validpath
.
IBC¶
-
class
ib_insync.ibcontroller.
IBC
(*args, **kwargs)[source]¶ Programmatic control over starting and stopping TWS/Gateway using IBC (https://github.com/IbcAlpha/IBC).
- Parameters
twsVersion (int) – (required) The major version number for TWS or gateway.
gateway (bool) –
True = gateway
False = TWS
tradingMode (str) – ‘live’ or ‘paper’.
userid (str) – IB account username. It is recommended to set the real username/password in a secured IBC config file.
password (str) – IB account password.
twsPath (str) –
Path to the TWS installation folder. Defaults:
Linux: ~/Jts
OS X: ~/Applications
Windows: C:\Jts
twsSettingsPath (str) –
Path to the TWS settings folder. Defaults:
Linux: ~/Jts
OS X: ~/Jts
Windows: Not available
ibcPath (str) –
Path to the IBC installation folder. Defaults:
Linux: /opt/ibc
OS X: /opt/ibc
Windows: C:\IBC
ibcIni (str) –
Path to the IBC configuration file. Defaults:
Linux: ~/ibc/config.ini
OS X: ~/ibc/config.ini
Windows: %%HOMEPATH%%\Documents\IBC\config.ini
javaPath (str) – Path to Java executable. Default is to use the Java VM included with TWS/gateway.
fixuserid (str) – FIX account user id (gateway only).
fixpassword (str) – FIX account password (gateway only).
This is not intended to be run in a notebook.
To use IBC on Windows, the proactor (or quamash) event loop must have been set:
import asyncio asyncio.set_event_loop(asyncio.ProactorEventLoop())
Example usage:
ibc = IBC(974, gateway=True, tradingMode='live', userid='edemo', password='demouser') ibc.start() IB.run()
-
IbcLogLevel
= 10¶
-
defaults
= {'fixpassword': None, 'fixuserid': None, 'gateway': None, 'ibcIni': None, 'ibcPath': None, 'javaPath': None, 'password': None, 'tradingMode': None, 'twsPath': None, 'twsSettingsPath': None, 'twsVersion': None, 'userid': None}¶
-
ibcPath
¶
-
fixpassword
¶
-
fixuserid
¶
-
gateway
¶
-
ibcIni
¶
-
javaPath
¶
-
password
¶
-
tradingMode
¶
-
twsPath
¶
-
twsSettingsPath
¶
-
twsVersion
¶
-
userid
¶
IBController¶
-
class
ib_insync.ibcontroller.
IBController
(*args, **kwargs)[source]¶ For new installations it is recommended to use IBC instead.
Programmatic control over starting and stopping TWS/Gateway using IBController (https://github.com/ib-controller/ib-controller).
On Windows the the proactor (or quamash) event loop must have been set:
import asyncio asyncio.set_event_loop(asyncio.ProactorEventLoop())
This is not intended to be run in a notebook.
-
defaults
= {'APP': 'TWS', 'IBC_INI': '~/IBController/IBController.ini', 'IBC_PATH': '~/IBController', 'JAVA_PATH': '', 'LOG_PATH': '~/IBController/Logs', 'TRADING_MODE': 'live', 'TWSPASSWORD': '', 'TWSUSERID': '', 'TWS_CONFIG_PATH': '', 'TWS_MAJOR_VRSN': '969', 'TWS_PATH': '~/Jts'}¶
-
APP
¶
-
IBC_INI
¶
-
IBC_PATH
¶
-
JAVA_PATH
¶
-
LOG_PATH
¶
-
TRADING_MODE
¶
-
TWSPASSWORD
¶
-
TWSUSERID
¶
-
TWS_CONFIG_PATH
¶
-
TWS_MAJOR_VRSN
¶
-
TWS_PATH
¶
-
Watchdog¶
-
class
ib_insync.ibcontroller.
Watchdog
(*args, **kwargs)[source]¶ Start, connect and watch over the TWS or gateway app and try to keep it up and running. It is intended to be used in an event-driven application that properly initializes itself upon (re-)connect.
It is not intended to be used in a notebook or in imperative-style code. Do not expect Watchdog to magically shield you from reality. Do not use Watchdog unless you understand what it does and doesn’t do.
- Parameters
controller (Union[IBC, IBController]) – (required) IBC or IBController instance.
ib (IB) – (required) IB instance to be used. Do no connect this instance as Watchdog takes care of that.
host (str) – Used for connecting IB instance.
port (int) – Used for connecting IB instance.
clientId (int) – Used for connecting IB instance.
connectTimeout (float) – Used for connecting IB instance.
appStartupTime (float) – Time (in seconds) that the app is given to start up. Make sure that it is given ample time.
appTimeout (float) – Timeout (in seconds) for network traffic idle time.
retryDelay (float) – Time (in seconds) to restart app after a previous failure.
The idea is to wait until there is no traffic coming from the app for a certain amount of time (the
appTimeout
parameter). This triggers a historical request to be placed just to see if the app is still alive and well. If yes, then continue, if no then restart the whole app and reconnect. Restarting will also occur directly on error 1100.Example usage:
def onConnected(): print(ib.accountValues()) ibc = IBC(974, gateway=True, tradingMode='paper') ib = IB() ib.connectedEvent += onConnected watchdog = Watchdog(ibc, ib, port=4002) watchdog.start() ib.run()
- Events:
-
events
= ['startingEvent', 'startedEvent', 'stoppingEvent', 'stoppedEvent', 'softTimeoutEvent', 'hardTimeoutEvent']¶
-
defaults
= {'appStartupTime': 30, 'appTimeout': 20, 'clientId': 1, 'connectTimeout': 2, 'controller': None, 'host': '127.0.0.1', 'ib': None, 'port': '7497', 'retryDelay': 2}¶
-
startingEvent
¶
-
startedEvent
¶
-
stoppingEvent
¶
-
stoppedEvent
¶
-
softTimeoutEvent
¶
-
hardTimeoutEvent
¶
-
appStartupTime
¶
-
appTimeout
¶
-
clientId
¶
-
connectTimeout
¶
-
controller
¶
-
host
¶
-
ib
¶
-
port
¶
-
retryDelay
¶