@stoqey/ibkr

NodeJS Interactive Brokers wrapper & utilities


Keywords
interactive brokers, interactive-brokers, ibkr, ibkr api, stoqey, algorithms, stocks, market, trading-api, market-data, twsapi, stocks-api, price-updates, ibkr-api, forex-api, options-api
License
MIT
Install
npm install @stoqey/ibkr@1.8.3

Documentation

IBKR: Interactive Brokers

NPM

Run IBKR in style

This is an event-based ibkr client for node

  • Accounts
  • Portfolios
  • Orders/Trades
  • Historical Data + Realtime price updates
  • Contracts

1. Install

npm i @stoqey/ibkr

2. Usage

Initialize

import ibkr, { AccountSummary, IBKREVENTS, IbkrEvents, HistoryData, PortFolioUpdate, getContractDetails } from '@stoqey/ibkr';

const ibkrEvents = IbkrEvents.Instance;

// 1. Async 
await ibkr({ port: IB_PORT, host: IB_HOST });

// 2. Callback
ibkr({ port: IB_PORT, host: IB_HOST }).then(started => {
  
    if(!started){
          // Error IBKR has not started
          console.log('error cannot start ibkr');
        //   Not to proceed if not connected with interactive brokers
          return process.exit(1);
    }

    // Your code here

})

Accounts, Summary e.t.c

const accountId = AccountSummary.Instance.accountSummary.AccountId;
const totalCashValue = AccountSummary.Instance.accountSummary.TotalCashValue;

Portfolios

// Get current portfolios
const portfolios = Portfolios.Instance;
const accountPortfolios = await portfolios.getPortfolios();

// Subscribe to portfolio updates
ibkrEvents.on(IBKREVENTS.PORTFOLIOS, (porfolios: PortFolioUpdate[]) => {
      // use porfolios  updates here
})

Historical Data + Realtime price updates

  • Market data
import AccountHistoryData from '@stoqey/ibkr/dist/history/history.data';

// 1. Async 
const myData = await AccountHistoryData.Instance.getHistoricalData(symbol);

// 2. raw callback events
// Requeust market data
ibkrEvents.emit(IBKREVENTS.GET_MARKET_DATA, { symbol: 'AAPL' });

// Subscribe to market data
ibkrEvents.on(IBKREVENTS.ON_MARKET_DATA, ({ symbol, marketData }) => {
    //  Use the data here
})
  • Real-time price updates
import PriceUpdates from '@stoqey/ibkr/dist/realtime/price.updates';

PriceUpdates.Instance; // init

// subscribe for price updates
ibkrEvents.on(IBKREVENTS.ON_PRICE_UPDATES, (priceUpdates) => {
     // use the price updates here
 });

//  Request price updates
ibkrEvents.emit(IBKREVENTS.SUBSCRIBE_PRICE_UPDATES, { symbol: 'AAPL' });

Contracts

 const contractDetails = await getContractDetails('AAPL');

Orders/Trades (TODO doc)

see any .test.ts file for examples

Stoqey Inc