Overzicht
Interactive Brokers is één van de meest gebruikte brokerageplatforms onder professionele handelaars, systematische handelsfirma's, hedgefondsen en individuele algoritmische handelaars die institutionele-grade uitvoering, brede instrumentdekking en programmatische handelstoegang vereisen. IB biedt handel over aandelen, opties, futures, forex, obligaties en cryptocurrencies via een uniforme account, met toegang tot meer dan 150 markten in 33 landen.
Het Interactive Brokers API-ecosysteem biedt twee primaire programmatische interfaces: de TWS API (Trader Workstation API), die verbinding maakt via een lokaal draaiende TWS of IB Gateway applicatie, en de Client Portal API, die REST-gebaseerde toegang biedt zonder dat een lokaal draaiende TWS-instantie vereist is.
De TWS API is de meest volwassen en meest capabele interface — die de volledige diepte van IB's functionaliteit biedt inclusief realtime streaming marktdata, orderbeheer met alle IB-ordertypes, accountdata, positietracking en historische data.
Wij bouwen Interactive Brokers integraties voor systematische handelsfirma's, algoritmische handelaars, portefeuillebeheersystemen en risicomonitoring applicaties die verbinding moeten maken met IB's uitvoerings- en data-infrastructuur.
Wat Interactive Brokers Integratie Dekt
TWS API verbindingsbeheer. De TWS API maakt verbinding via een persistente TCP-socket met een lokaal draaiende TWS of IB Gateway instantie.
Verbindingsopbouw: de EClient.connect() aanroep die de TCP-verbinding opbouwt met TWS/IB Gateway op de geconfigureerde host en poort (standaard 7497 voor TWS papiertransacties, 7496 voor live TWS, 4001 voor live IB Gateway, 4002 voor paper IB Gateway). De clientId parameter die de verbindende applicatie identificeert. De EReader thread die de berichtVerwerkingslus draait. De verbindingsbevestiging via de connectAck() en nextValidId() callbacks.
Verbreken afhandeling: de error() callback met foutcode 1100 (connectiviteit met IB-server verloren) en 1102 (connectiviteit met IB-server hersteld). De herverbindingslogica die de verbinding herinstelt na een verbreking, marktdata-abonnementen herinstelt en positie- en orderstatus reconcileert.
IB Gateway voor server-zijde implementatie: IB Gateway is een headloze versie van TWS ontworpen voor geautomatiseerde systemen. IB Gateway draait als een Java-process, geconfigureerd voor automatisch opnieuw starten bij aanmelding, en vereist geen GUI-omgeving.
Dagelijkse serverherstart: IB voert een dagelijkse serverherstart uit (typisch rond 23:45 EST) die alle TWS/Gateway-verbindingen verbreekt. De herverbindingslogica die de dagelijkse herstart afhandelt, wacht tot de server terugkomt en werking hervat.
Orderplaatsing en -beheer. Het TWS API-orderbeheer dat het volledige bereik van IB-ordertypes en uitvoeringsalgoritmen dekt.
Orderindiening: de EClient.placeOrder(orderId, contract, order) methode voor het plaatsen van orders. De orderId — een integer die uniek moet zijn en groter dan de nextValidOrderId. Het Contract object dat het instrument specificeert — het symbool, het beveiligingstype (STK, OPT, FUT, FOREX, CFD, CRYPTO), de beurs, de valuta. Het Order object dat de orderparameters specificeert.
Ordertypes: MKT voor marktorders, LMT voor limietorders, STP voor stoporders, STP LMT voor stop-limietorders, TRAIL voor trailing stop, VWAP voor VWAP-uitvoering, TWAP voor TWAP-uitvoering.
Orderstatus callbacks: de orderStatus() callback die afgaat wanneer de orderstatus verandert — de statusstring (PreSubmitted, Submitted, Filled, Inactive, Cancelled), de gevulde hoeveelheid, de resterende hoeveelheid en de gemiddelde vulprijs. De execDetails() callback die afgaat wanneer een uitvoering plaatsvindt.
Orderannulering: de EClient.cancelOrder(orderId) methode. De EClient.reqGlobalCancel() methode voor het annuleren van alle open orders tegelijkertijd.
Marktdata — realtime streaming. TWS API realtime marktdata-abonnementen voor live prijsdata.
Ticker abonnementen: de EClient.reqMktData(reqId, contract, genericTickList, snapshot, regulatorySnapshot, mktDataOptions) methode. De tickPrice(), tickSize() en andere callbacks die de geabonneerde data leveren.
Tick-types: de prijs-tick-types — BID (1), ASK (2), LAST (4), HIGH (6), LOW (7), CLOSE (9), OPEN (14) — en de grootte-tick-types.
Realtime bars: de EClient.reqRealTimeBars() methode voor het abonneren op 5-seconden OHLCV bars.
Marktdata — historisch. Historische prijsdata voor strategie backtesting, indicatorinitialisatie en analytics.
Historische data verzoek: de EClient.reqHistoricalData(reqId, contract, endDateTime, durationStr, barSizeSetting, whatToShow, useRTH, formatDate, keepUpToDate, chartOptions) methode. De historicalData() callback die elke bar levert met de datum, open, hoog, laag, sluit, volume en WAP.
Historische data tempo: IB handhaaft tempoversies op historische dataverzoeken — maximaal 60 verzoeken per 10 minuten per account. Het tempobeheer dat historische dataverzoeken in de wachtrij plaatst.
Account en portefeuilledata. Accountsaldo, positie en P&L-data van de TWS API.
Account samenvatting: de EClient.reqAccountSummary(reqId, group, tags) methode. De accountSummary() callback die accountwaarden levert — NetLiquidation, TotalCashValue, GrossPositionValue, MaintMarginReq, AvailableFunds, UnrealizedPnL.
Account updates: de EClient.reqAccountUpdates(subscribe, acctCode) methode voor het abonneren op realtime accountupdates.
Posities: de EClient.reqPositions() methode voor het aanvragen van alle huidige posities over alle accounts.
P&L abonnement: de EClient.reqPnL(reqId, account, modelCode) en EClient.reqPnLSingle(reqId, account, modelCode, conid) methoden voor het abonneren op realtime P&L-data.
Contract details en instrumentzoekopdracht. Instrumentidentificatoren oplossen en instrumentspecificaties ophalen.
Contract details: de EClient.reqContractDetails(reqId, contract) methode voor het ophalen van de volledige specificatie van een instrument — de conid, de handelstijden, de minimale tickgrootte.
Symbool zoeken: de EClient.reqMatchingSymbols(reqId, pattern) methode voor het zoeken naar instrumenten op naam of symboolpatroon.
Optiereeksen: de EClient.reqSecDefOptParams() methode voor het ophalen van de beschikbare optiestrikeprijzen en vervaldatums voor een onderliggende waarde.
ibapi Python client en ib_insync. De Python integrationsbibliotheken voor TWS API-toegang.
ibapi: de officiële IB Python-client die de basis EClient en EWrapper klassen biedt voor TWS API-connectiviteit.
ib_insync: de derde-partij asyncio-gebaseerde Python-wrapper rondom ibapi die de ontwikkelervaring aanzienlijk verbetert — de IB klasse met synchrone stijl methoden die de callback-complexiteit van de native ibapi verbergen. De aanbevolen aanpak voor Python TWS API-ontwikkeling.
.NET API (IBApi). De officiële IB .NET-client voor C# TWS API-integratie.
Client Portal API (IBKR Web API). De REST-gebaseerde API-alternatief voor de TWS API voor applicaties die geen TWS of IB Gateway lokaal kunnen draaien.
Authenticatie: de Client Portal API vereist authenticatie via IB's OAuth-gebaseerde authenticatiestroom.
Beperkingen versus TWS API: de Client Portal API heeft beperkingen vergeleken met de volledige TWS API — minder ordertypes, minder realtime data granulariteit. Voor productie geautomatiseerde handelssystemen wordt de TWS API via IB Gateway over het algemeen geprefereerd.
Financial Advisor Account Structuur
Voor handelsfirma's en portfoliomanagers die de Financial Advisor (FA) accountstructuur van IB gebruiken.
FA accountbeheer: de EClient.requestFA(faDataType) methode voor het ophalen van de FA accountgroepen, allocatieprofielen en accountaliassen configuratie.
Multi-account orderplaatsing: orders plaatsen in FA-accounts met allocatiemethoden — op percentage, op vermogen, op hoeveelheid of op aangepast profiel.
Sub-account positieaggregatie: posities aggregeren over alle sub-accounts voor de geaggregeerde portefeuilleweergave.
Gebruikte Technologieën
- Python / ib_insync — primaire IB TWS API-integratie voor strategie-ontwikkeling, signaalegeneratie en portefeuillebeheer in Python
- C# / IBApi — IB TWS API-integratie voor .NET-gebaseerde handelssystemen en portefeuillebeheerApplicaties
- Rust — hoge-prestatie orderbeheer en marktdataverwerking met maatwerk TWS API-client implementatie voor latentiekritieke applicaties
- Java — IB Gateway processbeheer en Java-gebaseerde TWS API-integratie
- IB Gateway — headloze TWS implementatie voor server-zijde geautomatiseerde handel
- REST / HTTP — IBKR Client Portal API voor niet-Gateway implementaties
- SQL (PostgreSQL / MySQL) — handelsgeschiedenis, positierecords, accountdata, orderrecords
- Redis — realtime positiestatus, ordertracking, marktdata caching
- Docker — gecontaineriseerde handelssysteem implementatie naast IB Gateway
- GitHub Actions — CI/CD pijplijn voor handelssysteem implementatie
IB Gateway Implementatiearchitectuur
Voor productie geautomatiseerde handelssystemen die de TWS API gebruiken is IB Gateway het passende implementatiemodel — het headloze Java-process dat TWS API-connectiviteit biedt zonder een GUI-omgeving te vereisen.
IB Gateway configuratie: het jts.ini configuratiebestand dat de aanmeldingsgegevens, de auto-herverbinding instellingen en het sessiebeheer voor de dagelijkse herstart instelt.
Docker implementatie: de IB Gateway Docker-afbeelding die IB Gateway verpakt voor container implementatie.
Sessiebeheer: IB Gateway voert een dagelijkse server-geïnitieerde verbreking uit op ongeveer 23:45 EST. Het sessiebeheer dat de verbreking detecteert, wacht op de serverherstart en werking hervat.
IB als Onderdeel van een Multi-Broker Architectuur
Voor handelssystemen die orders routeren naar meerdere brokers is de IB-connector één component van de multi-broker uitvoeringsarchitectuur. De normalisatielaag die het interne ordermodel vertaalt naar IB's Contract en Order objecten, IB's callback-events mapt naar het interne handelsevtentmodel en IB-specifieke foutcodes afhandelt.
Productie IB Integratie
Interactive Brokers TWS API-integraties gebouwd op productiestandaarden — correct verbindingslevenscyclusbeheer met dagelijkse herstartafhandeling, nauwkeurige orderstatusTracking via de volledige ordertoestandsmachine, realtime positie- en P&L-monitoring, naleving van historische data-tempo en de operationele monitoring die connectiviteits- en uitvoeringsproblemen oppervlakt voor ze handelsoperaties beïnvloeden.