• C#
  • Java
  • VB
  • C++
  • Python
Contact us
EClientSocket Class Reference

TWS/Gateway client class This client class contains all the available methods to communicate with IB. Up to 32 clients can be connected to a single instance of the TWS/Gateway simultaneously. From herein, the TWS/Gateway will be referred to as the Host. More...

Inheritance diagram for EClientSocket:
EClient EClientSocketSSL

Public Member Functions

 EClientSocket (EWrapper wrapper, EReaderSignal eReaderSignal)
void eConnect (string host, int port, int clientId)
void eConnect (string host, int port, int clientId, bool extraAuth)
 Creates socket connection to TWS/IBG.
void redirect (string host)
 Redirects connection to different host.
- Public Member Functions inherited from EClient
 EClient (EWrapper wrapper)
 Constructor. More...
void SetConnectOptions (string connectOptions)
 Ignore. Used for IB's internal purposes.
void DisableUseV100Plus ()
 Allows to switch between different current (V100+) and previous connection mechanisms.
bool IsConnected ()
 Indicates whether the API-TWS connection has been closed. Note: This function is not automatically invoked and must be by the API client. More...
void startApi ()
 Initiates the message exchange between the client application and the TWS/IB Gateway.
void Close ()
 Terminates the connection and notifies the EWrapper implementing class. More...
void eDisconnect ()
 Closes the socket connection and terminates its thread.
void cancelHistoricalData (int reqId)
 Cancels a historical data request. More...
void calculateImpliedVolatility (int reqId, Contract contract, double optionPrice, double underPrice, List< TagValue > impliedVolatilityOptions)
 Calculate the volatility for an option.
Request the calculation of the implied volatility based on hypothetical option and its underlying prices.
The calculation will be return in EWrapper's tickOptionComputation callback.
. More...
void calculateOptionPrice (int reqId, Contract contract, double volatility, double underPrice, List< TagValue > optionPriceOptions)
 Calculates an option's price based on the provided volatility and its underlying's price.
The calculation will be return in EWrapper's tickOptionComputation callback.
. More...
void cancelAccountSummary (int reqId)
 Cancels the account's summary request. After requesting an account's summary, invoke this function to cancel it. More...
void cancelCalculateImpliedVolatility (int reqId)
 Cancels an option's implied volatility calculation request. More...
void cancelCalculateOptionPrice (int reqId)
 Cancels an option's price calculation request. More...
void cancelFundamentalData (int reqId)
 Cancels Fundamental data request. More...
void cancelMktData (int tickerId)
 Cancels a RT Market Data request. More...
void cancelMktDepth (int tickerId)
 Cancel's market depth's request. More...
void cancelNewsBulletin ()
 Cancels IB's news bulletin subscription. More...
void cancelOrder (int orderId)
 Cancels an active order placed by from the same API client ID.
Note: API clients cannot cancel individual orders placed by other clients. Only reqGlobalCancel is available.
. More...
void cancelPositions ()
 Cancels a previous position subscription request made with reqPositions. More...
void cancelRealTimeBars (int tickerId)
 Cancels Real Time Bars' subscription. More...
void cancelScannerSubscription (int tickerId)
 Cancels Scanner Subscription. More...
void exerciseOptions (int tickerId, Contract contract, int exerciseAction, int exerciseQuantity, string account, int ovrd)
 Exercises an options contract
Note: this function is affected by a TWS setting which specifies if an exercise request must be finalized. More...
void placeOrder (int id, Contract contract, Order order)
 Places or modifies an order. More...
void replaceFA (int faDataType, string xml)
 Replaces Financial Advisor's settings A Financial Advisor can define three different configurations: More...
void requestFA (int faDataType)
 Requests the FA configuration A Financial Advisor can define three different configurations: More...
void reqAccountSummary (int reqId, string group, string tags)
 Requests a specific account's summary.
This method will subscribe to the account summary as presented in the TWS' Account Summary tab. The data is returned at EWrapper::accountSummary
https://www.interactivebrokers.com/en/software/tws/accountwindowtop.htm. More...
void reqAccountUpdates (bool subscribe, string acctCode)
 Subscribes to an specific account's information and portfolio Through this method, a single account's subscription can be started/stopped. As a result from the subscription, the account's information, portfolio and last update time will be received at EWrapper::updateAccountValue, EWrapper::updateAccountPortfolio, EWrapper::updateAccountTime respectively. All account values and positions will be returned initially, and then there will only be updates when there is a change in a position, or to an account value every 3 minutes if it has changed. Only one account can be subscribed at a time. A second subscription request for another account when the previous one is still active will cause the first one to be canceled in favour of the second one. Consider user reqPositions if you want to retrieve all your accounts' portfolios directly. More...
void reqAllOpenOrders ()
 Requests all current open orders in associated accounts at the current moment. The existing orders will be received via the openOrder and orderStatus events. Open orders are returned once; this function does not initiate a subscription. More...
void reqAutoOpenOrders (bool autoBind)
 Requests status updates about future orders placed from TWS. Can only be used with client ID 0. More...
void reqContractDetails (int reqId, Contract contract)
 Requests contract information.
This method will provide all the contracts matching the contract provided. It can also be used to retrieve complete options and futures chains. This information will be returned at EWrapper:contractDetails. Though it is now (in API version > 9.72.12) advised to use reqSecDefOptParams for that purpose.
. More...
void reqCurrentTime ()
 Requests TWS's current time. More...
void reqExecutions (int reqId, ExecutionFilter filter)
 Requests current day's (since midnight) executions matching the filter. Only the current day's executions can be retrieved. Along with the executions, the CommissionReport will also be returned. The execution details will arrive at EWrapper:execDetails. More...
void reqFundamentalData (int reqId, Contract contract, String reportType, List< TagValue > fundamentalDataOptions)
 Requests the contract's Reuters or Wall Street Horizons fundamental data. Fundalmental data is returned at EWrapper::fundamentalData. More...
void reqGlobalCancel ()
 Cancels all active orders.
This method will cancel ALL open orders including those placed directly from TWS. More...
void reqHistoricalData (int tickerId, Contract contract, string endDateTime, string durationString, string barSizeSetting, string whatToShow, int useRTH, int formatDate, bool keepUpToDate, List< TagValue > chartOptions)
 Requests contracts' historical data. When requesting historical data, a finishing time and date is required along with a duration string. For example, having: More...
void reqIds (int numIds)
 Requests the next valid order ID at the current moment. More...
void reqManagedAccts ()
 Requests the accounts to which the logged user has access to. More...
void reqMktData (int tickerId, Contract contract, string genericTickList, bool snapshot, bool regulatorySnaphsot, List< TagValue > mktDataOptions)
 Requests real time market data. Returns market data for an instrument either in real time or 10-15 minutes delayed (depending on the market data type specified) More...
void reqMarketDataType (int marketDataType)
 Switches data type returned from reqMktData request to "frozen", "delayed" or "delayed-frozen" market data. Requires TWS/IBG v963+.
The API can receive frozen market data from Trader Workstation. Frozen market data is the last data recorded in our system.
During normal trading hours, the API receives real-time market data. Invoking this function with argument 2 requests a switch to frozen data immediately or after the close.
When the market reopens the next data the market data type will automatically switch back to real time if available. More...
void reqMarketDepth (int tickerId, Contract contract, int numRows, List< TagValue > mktDepthOptions)
 Requests the contract's market depth (order book).
This request must be direct-routed to an exchange and not smart-routed. The number of simultaneous market depth requests allowed in an account is calculated based on a formula that looks at an accounts equity, commissions, and quote booster packs. More...
void reqNewsBulletins (bool allMessages)
 Subscribes to IB's News Bulletins. More...
void reqOpenOrders ()
 Requests all open orders places by this specific API client (identified by the API client id). For client ID 0, this will bind previous manual TWS orders. More...
void reqPositions ()
 Subscribes to position updates for all accessible accounts. All positions sent initially, and then only updates as positions change. More...
void reqRealTimeBars (int tickerId, Contract contract, int barSize, string whatToShow, bool useRTH, List< TagValue > realTimeBarsOptions)
 Requests real time bars
Currently, only 5 seconds bars are provided. This request is subject to the same pacing as any historical data request: no more than 60 API queries in more than 600 seconds.
Real time bars subscriptions are also included in the calculation of the number of Level 1 market data subscriptions allowed in an account. More...
void reqScannerParameters ()
 Requests an XML list of scanner parameters valid in TWS. all parameters are valid from API scanner. More...
void reqScannerSubscription (int reqId, ScannerSubscription subscription, List< TagValue > scannerSubscriptionOptions)
 Starts a subscription to market scan results based on the provided parameters. More...
void setServerLogLevel (int logLevel)
 Changes the TWS/GW log level. The default is 2 = ERROR
5 = DETAIL is required for capturing all API messages and troubleshooting API programs
Valid values are:
void verifyRequest (string apiName, string apiVersion)
 For IB's internal purpose. Allows to provide means of verification between the TWS and third party programs.
void verifyMessage (string apiData)
 For IB's internal purpose. Allows to provide means of verification between the TWS and third party programs.
void verifyAndAuthRequest (string apiName, string apiVersion, string opaqueIsvKey)
 For IB's internal purpose. Allows to provide means of verification between the TWS and third party programs.
void verifyAndAuthMessage (string apiData, string xyzResponse)
 For IB's internal purpose. Allows to provide means of verification between the TWS and third party programs.
void queryDisplayGroups (int requestId)
 Requests all available Display Groups in TWS. More...
void subscribeToGroupEvents (int requestId, int groupId)
 Integrates API client and TWS window grouping. More...
void updateDisplayGroup (int requestId, string contractInfo)
 Updates the contract displayed in a TWS Window Group. More...
void unsubscribeFromGroupEvents (int requestId)
 Cancels a TWS Window Group subscription.
void reqPositionsMulti (int requestId, string account, string modelCode)
 Requests position subscription for account and/or model Initially all positions are returned, and then updates are returned for any position changes in real time. More...
void cancelPositionsMulti (int requestId)
 Cancels positions request for account and/or model. More...
void reqAccountUpdatesMulti (int requestId, string account, string modelCode, bool ledgerAndNLV)
 Requests account updates for account and/or model. More...
void cancelAccountUpdatesMulti (int requestId)
 Cancels account updates request for account and/or model. More...
void reqSecDefOptParams (int reqId, string underlyingSymbol, string futFopExchange, string underlyingSecType, int underlyingConId)
 Requests security definition option parameters for viewing a contract's option chain. More...
void reqSoftDollarTiers (int reqId)
 Requests pre-defined Soft Dollar Tiers. This is only supported for registered professional advisors and hedge and mutual funds who have configured Soft Dollar Tiers in Account Management. Refer to: https://www.interactivebrokers.com/en/software/am/am/manageaccount/requestsoftdollars.htm?Highlight=soft%20dollar%20tier. More...
void reqFamilyCodes ()
 Requests family codes for an account, for instance if it is a FA, IBroker, or associated account. More...
void reqMatchingSymbols (int reqId, string pattern)
 Requests matching stock symbols. More...
void reqMktDepthExchanges ()
 Requests venues for which market data is returned to updateMktDepthL2 (those with market makers) More...
void reqSmartComponents (int reqId, String bboExchange)
 Returns the mapping of single letter codes to exchange names given the mapping identifier. More...
void reqNewsProviders ()
 Requests news providers which the user has subscribed to. More...
void reqNewsArticle (int requestId, string providerCode, string articleId, List< TagValue > newsArticleOptions)
 Requests news article body given articleId. More...
void reqHistoricalNews (int requestId, int conId, string providerCodes, string startDateTime, string endDateTime, int totalResults, List< TagValue > historicalNewsOptions)
 Requests historical news headlines. More...
void reqHeadTimestamp (int tickerId, Contract contract, string whatToShow, int useRTH, int formatDate)
 Returns the timestamp of earliest available historical data for a contract and data type. More...
void cancelHeadTimestamp (int tickerId)
 Cancels a pending reqHeadTimeStamp request
. More...
void reqHistogramData (int tickerId, Contract contract, bool useRTH, string period)
 Returns data histogram of specified contract
. More...
void cancelHistogramData (int tickerId)
 Cancels an active data histogram request. More...
void reqMarketRule (int marketRuleId)
 Requests details about a given market rule
The market rule for an instrument on a particular exchange provides details about how the minimum price increment changes with price
A list of market rule ids can be obtained by invoking reqContractDetails on a particular contract. The returned market rule ID list will provide the market rule ID for the instrument in the correspond valid exchange list in contractDetails.
. More...
void reqPnL (int reqId, string account, string modelCode)
 Creates subscription for real time daily PnL and unrealized PnL updates. More...
void cancelPnL (int reqId)
 cancels subscription for real time updated daily PnL params reqId
void reqPnLSingle (int reqId, string account, string modelCode, int conId)
 Requests real time updates for daily PnL of individual positions. More...
void cancelPnLSingle (int reqId)
 Cancels real time subscription for a positions daily PnL information. More...
void reqHistoricalTicks (int reqId, Contract contract, string startDateTime, string endDateTime, int numberOfTicks, string whatToShow, int useRth, bool ignoreSize, List< TagValue > miscOptions)
 Requests historical Time&Sales data for an instrument. More...
int ReadInt ()
byte[] ReadAtLeastNBytes (int msgSize)
byte[] ReadByteArray (int msgSize)

Protected Member Functions

virtual Stream createClientStream (string host, int port)
override uint prepareBuffer (BinaryWriter paramsList)
override void CloseAndSend (BinaryWriter request, uint lengthPos)
- Protected Member Functions inherited from EClient
void sendConnectRequest ()
bool CheckServerVersion (int requiredVersion)
bool CheckServerVersion (int requestId, int requiredVersion)
bool CheckServerVersion (int requiredVersion, string updatetail)
bool CheckServerVersion (int tickerId, int requiredVersion, string updatetail)
void CloseAndSend (BinaryWriter paramsList, uint lengthPos, CodeMsgPair error)
void CloseAndSend (int reqId, BinaryWriter paramsList, uint lengthPos, CodeMsgPair error)
bool CheckConnection ()
void ReportError (int reqId, CodeMsgPair error, string tail)
void ReportUpdateTWS (int reqId, string tail)
void ReportUpdateTWS (string tail)
void ReportError (int reqId, int code, string message)
void SendCancelRequest (OutgoingMessages msgType, int version, int reqId, CodeMsgPair errorMessage)
void SendCancelRequest (OutgoingMessages msgType, int version, CodeMsgPair errorMessage)
bool VerifyOrderContract (Contract contract, int id)
bool VerifyOrder (Order order, int id, bool isBagOrder)

Additional Inherited Members

- Protected Attributes inherited from EClient
int serverVersion
ETransport socketTransport
EWrapper wrapper
bool isConnected
int clientId
bool extraAuth
bool useV100Plus = true
bool allowRedirect = false
Stream tcpStream
- Properties inherited from EClient
EWrapper Wrapper [get]
 Reference to the EWrapper implementing object.
bool AllowRedirect [get, set]
int ServerVersion [get]
 returns the Host's version. Some of the API functionality might not be available in older Hosts and therefore it is essential to keep the TWS/Gateway as up to date as possible.
string ServerTime [get, set]
string optionalCapabilities [get, set]
bool AsyncEConnect [get, set]

Detailed Description

TWS/Gateway client class This client class contains all the available methods to communicate with IB. Up to 32 clients can be connected to a single instance of the TWS/Gateway simultaneously. From herein, the TWS/Gateway will be referred to as the Host.

Member Function Documentation

void eConnect ( string  host,
int  port,
int  clientId 

Creates socket connection to TWS/IBG. This earlier version of eConnect does not have extraAuth parameter.