@stoqey/ibkr (High-Level Wrapper)Advanced Features
Market Data Only Mode
Using IBKR_MD_ONLY=true for lightweight market data feeders, scanners, and symbol lookup clients.
What is Market Data Only Mode?
In default mode, @stoqey/ibkr initializes account summary listeners, portfolio position tracking, open order tracking, and filled trade historical indexing.
However, if you are building a market data feeder, screener, scanner, or pricing ticker, you don't need account balance or order execution overhead.
Setting IBKR_MD_ONLY=true disables account and order tracking subscriptions while keeping contract lookup and market data streaming fully functional.
Enabling Market Data Only Mode
Method 1: Environment Variable
Set IBKR_MD_ONLY=true (or MD_ONLY=true) in your .env file:
IBKR_MD_ONLY=trueMethod 2: Programmatic Initialization
import ibkr from "@stoqey/ibkr";
await ibkr({
host: "127.0.0.1",
port: 7497,
// Additional options...
});Features Available in MD Only Mode
| Feature | Available in MD Only Mode? |
|---|---|
Contract Search & Resolution (getContract, searchContracts) | ✅ |
Historical Bars (getHistoricalData) | ✅ |
Real-time Bar Streaming (getHistoricalDataUpdates) | ✅ |
Tick-by-tick Streaming (getTickByTickDataUpdates) | ✅ |
Instant Quotes (getQuote) | ✅ |
Account Summary Updates (AccountSummary) | ❌ Disabled |
Portfolio Positions Cache (Portfolios) | ❌ Disabled |
Order Placement & Trades (Orders) | ❌ Disabled |
Example Usage
import ibkr, { MarketDataManager, IBKREvents, IBKREVENTS } from "@stoqey/ibkr";
import type { MarketData } from "@stoqey/ibkr";
// 1. Enable MD Only mode via env before initialization
process.env.IBKR_MD_ONLY = "true";
// 2. Initialize
await ibkr();
const mkdManager = MarketDataManager.Instance;
// 3. Resolve contract and stream prices without account overhead
const contract = await mkdManager.getContract({
symbol: "NVDA",
secType: "STK",
exchange: "SMART",
currency: "USD",
});
IBKREvents.Instance.on(IBKREVENTS.IBKR_BAR, (bar: MarketData) => {
console.log(`[NVDA Bar] Close: $${bar.close} | Volume: ${bar.volume}`);
});
await mkdManager.getHistoricalDataUpdates(contract);