@stoqey/ibkr (High-Level Wrapper)Accounts & Portfolios
Accounts & Portfolio Positions
Accessing automatically updated account summaries and portfolio position caches in @stoqey/ibkr.
Managing Account Summaries (AccountSummary)
AccountSummary.Instance automatically maintains cached account values (Net Liquidation Value, Total Cash Value, Buying Power, Margin Requirements) so you never need to manually manage subscription streams.
Accessing Account Balances
import ibkr, { AccountSummary } from "@stoqey/ibkr";
await ibkr();
const accountInstance = AccountSummary.Instance;
// Access cached account summary snapshot
const summary = accountInstance.accountSummary;
console.log("Account ID:", summary.accountId);
console.log("Net Liquidation Value:", summary.NetLiquidation.value, summary.NetLiquidation.currency);
console.log("Total Cash Value:", summary.TotalCashValue.value);
console.log("Buying Power:", summary.BuyingPower.value);Listening for Account Updates
import { IBKREvents, IBKREVENTS, AccountSummary } from "@stoqey/ibkr";
IBKREvents.Instance.on(IBKREVENTS.IBKR_ACCOUNT_UPDATED, () => {
const latestNetLiquidation = AccountSummary.Instance.accountSummary.NetLiquidation.value;
console.log("Updated Net Liquidation Value:", latestNetLiquidation);
});Managing Portfolio Positions (Portfolios)
Portfolios.Instance automatically tracks all open positions across managed accounts.
Accessing Open Positions Snapshot
import ibkr, { Portfolios } from "@stoqey/ibkr";
await ibkr();
const portfolios = Portfolios.Instance;
// Get snapshot of current open positions
const openPositions = portfolios.positions;
openPositions.forEach((pos) => {
console.log(`Account: ${pos.account} | ${pos.position} x ${pos.symbol} @ $${pos.marketPrice}`);
});Listening for Position Updates
import { IBKREvents, IBKREVENTS, Portfolios } from "@stoqey/ibkr";
IBKREvents.Instance.on(IBKREVENTS.IBKR_POSITIONS_UPDATED, () => {
const updatedPositions = Portfolios.Instance.positions;
console.log("Portfolio updated! Total positions:", updatedPositions.length);
});