UNPKG

@stoqey/ib

Version:

Interactive Brokers TWS/IB Gateway API client library for Node.js (TS)

451 lines (450 loc) 15.3 kB
import { MarketDataType, OrderCancel, WhatToShow } from "../.."; import { Contract } from "../../api/contract/contract"; import WshEventData from "../../api/contract/wsh"; import TagValue from "../../api/data/container/tag-value"; import FADataType from "../../api/data/enum/fa-data-type"; import LogLevel from "../../api/data/enum/log-level"; import OptionExerciseAction from "../../api/data/enum/option-exercise-action"; import { BarSizeSetting } from "../../api/historical/bar-size-setting"; import { ScannerSubscription } from "../../api/market/scannerSubscription"; import { TickByTickDataType } from "../../api/market/tickByTickDataType"; import { Order } from "../../api/order/order"; import { ExecutionFilter } from "../../api/report/executionFilter"; /** * @internal * * Outgoing message IDs. */ export declare enum OUT_MSG_ID { REQ_MKT_DATA = 1, CANCEL_MKT_DATA = 2, PLACE_ORDER = 3, CANCEL_ORDER = 4, REQ_OPEN_ORDERS = 5, REQ_ACCOUNT_DATA = 6, REQ_EXECUTIONS = 7, REQ_IDS = 8, REQ_CONTRACT_DATA = 9, REQ_MKT_DEPTH = 10, CANCEL_MKT_DEPTH = 11, REQ_NEWS_BULLETINS = 12, CANCEL_NEWS_BULLETINS = 13, SET_SERVER_LOGLEVEL = 14, REQ_AUTO_OPEN_ORDERS = 15, REQ_ALL_OPEN_ORDERS = 16, REQ_MANAGED_ACCTS = 17, REQ_FA = 18, REPLACE_FA = 19, REQ_HISTORICAL_DATA = 20, EXERCISE_OPTIONS = 21, REQ_SCANNER_SUBSCRIPTION = 22, CANCEL_SCANNER_SUBSCRIPTION = 23, REQ_SCANNER_PARAMETERS = 24, CANCEL_HISTORICAL_DATA = 25, REQ_CURRENT_TIME = 49, REQ_REAL_TIME_BARS = 50, CANCEL_REAL_TIME_BARS = 51, REQ_FUNDAMENTAL_DATA = 52, CANCEL_FUNDAMENTAL_DATA = 53, REQ_CALC_IMPLIED_VOLAT = 54, REQ_CALC_OPTION_PRICE = 55, CANCEL_CALC_IMPLIED_VOLAT = 56, CANCEL_CALC_OPTION_PRICE = 57, REQ_GLOBAL_CANCEL = 58, REQ_MARKET_DATA_TYPE = 59, REQ_POSITIONS = 61, REQ_ACCOUNT_SUMMARY = 62, CANCEL_ACCOUNT_SUMMARY = 63, CANCEL_POSITIONS = 64, VERIFY_REQUEST = 65,// not implemented VERIFY_MESSAGE = 66,// not implemented QUERY_DISPLAY_GROUPS = 67, SUBSCRIBE_TO_GROUP_EVENTS = 68, UPDATE_DISPLAY_GROUP = 69, UNSUBSCRIBE_FROM_GROUP_EVENTS = 70, START_API = 71,// sent by [[Socket]] VERIFY_AND_AUTH_REQUEST = 72,// not implemented VERIFY_AND_AUTH_MESSAGE = 73,// not implemented REQ_POSITIONS_MULTI = 74, CANCEL_POSITIONS_MULTI = 75, REQ_ACCOUNT_UPDATES_MULTI = 76, CANCEL_ACCOUNT_UPDATES_MULTI = 77, REQ_SEC_DEF_OPT_PARAMS = 78, REQ_SOFT_DOLLAR_TIERS = 79, REQ_FAMILY_CODES = 80, REQ_MATCHING_SYMBOLS = 81, REQ_MKT_DEPTH_EXCHANGES = 82, REQ_SMART_COMPONENTS = 83, REQ_NEWS_ARTICLE = 84, REQ_NEWS_PROVIDERS = 85, REQ_HISTORICAL_NEWS = 86, REQ_HEAD_TIMESTAMP = 87, REQ_HISTOGRAM_DATA = 88, CANCEL_HISTOGRAM_DATA = 89, CANCEL_HEAD_TIMESTAMP = 90, REQ_MARKET_RULE = 91, REQ_PNL = 92, CANCEL_PNL = 93, REQ_PNL_SINGLE = 94, CANCEL_PNL_SINGLE = 95, REQ_HISTORICAL_TICKS = 96, REQ_TICK_BY_TICK_DATA = 97, CANCEL_TICK_BY_TICK_DATA = 98, REQ_COMPLETED_ORDERS = 99, REQ_WSH_META_DATA = 100, CANCEL_WSH_META_DATA = 101, REQ_WSH_EVENT_DATA = 102, CANCEL_WSH_EVENT_DATA = 103, REQ_USER_INFO = 104 } /** * @internal * * Callback interface of the [[Encoder]]. */ export interface EncoderCallbacks { /** Get the IB API server version. */ readonly serverVersion: number; /** * Send a message to the server connection. * * @param args Array of tokens to send. * Can contain nested arrays. */ sendMsg(...tokens: unknown[]): void; /** * Emit an error event to public API interface. * * @param errMsg The error test message. * @param data Additional error data (optional). */ emitError(errMsg: string, code: number, reqId: number): void; } /** * @internal * * Class for encoding messages and sending raw token data back to */ export declare class Encoder { private callback; /** * Create an [[Encoder]] object for encoding messages to token data. * * @param callback A [[EncoderCallbacks]] implementation. */ constructor(callback: EncoderCallbacks); /** Get the API server version. */ private get serverVersion(); /** * Send a message to the server connection. * * @param args Array of tokens to send. */ private sendMsg; /** * Emit an error event to public API interface. * * @param errMsg The error test message. * @param data Additional error data (optional). */ private emitError; /** * Encode a [[Contract]] to an array of tokens. */ private encodeContract; /** * Encode a [[TagValue]] array to a string token. */ private encodeTagValues; /** * @@internal * * Helper function convert an array of [[TagValue]] to a flat [tag,value] tuple array. */ /** * Encode a calculateImpliedVolatility message to an array of tokens. */ calculateImpliedVolatility(reqId: number, contract: Contract, optionPrice: number, underPrice: number, impliedVolatilityOptions?: TagValue[]): void; /** * Encode a calculateOptionPrice message to an array of tokens. */ calculateOptionPrice(reqId: number, contract: Contract, volatility: number, underPrice: number, optionPriceOptions?: TagValue[]): void; /** * Encode a CANCEL_ACCOUNT_SUMMARY message to an array of tokens. */ cancelAccountSummary(reqId: number): void; /** * Encode a CANCEL_ACCOUNT_UPDATES_MULTI message to an array of tokens. */ cancelAccountUpdatesMulti(reqId: number): void; /** * Encode a CANCEL_CALC_IMPLIED_VOLAT message to an array of tokens. */ cancelCalculateImpliedVolatility(reqId: number): void; /** * Encode a CANCEL_CALC_OPTION_PRICE message to an array of tokens. */ cancelCalculateOptionPrice(reqId: number): void; /** * Encode a CANCEL_FUNDAMENTAL_DATA message to an array of tokens. */ cancelFundamentalData(reqId: number): void; /** * Encode a CANCEL_HISTORICAL_DATA message to an array of tokens. */ cancelHistoricalData(reqId: number): void; /** * Encode a CANCEL_MKT_DATA message to an array of tokens. */ cancelMktData(reqId: number): void; /** * Encode a CANCEL_MKT_DEPTH message to an array of tokens. */ cancelMktDepth(reqId: number, isSmartDepth: boolean): void; /** * Encode a CANCEL_NEWS_BULLETINS message to an array of tokens. */ cancelNewsBulletins(): void; /** * Encode a CANCEL_ORDER message to an array of tokens. */ cancelOrder(orderId: number, orderCancel: OrderCancel): void; /** * Encode a CANCEL_POSITIONS message to an array of tokens. */ cancelPositions(): void; /** * Encode a CANCEL_REAL_TIME_BARS message to an array of tokens. */ cancelRealTimeBars(reqId: number): void; /** * Encode a CANCEL_SCANNER_SUBSCRIPTION message to an array of tokens. */ cancelScannerSubscription(reqId: number): void; /** * Encode a EXERCISE_OPTIONS message to an array of tokens. */ exerciseOptions(reqId: number, contract: Contract, exerciseAction: OptionExerciseAction, exerciseQuantity: number, account: string, override: number, manualOrderTime?: string, customerAccount?: string, professionalCustomer?: boolean): void; /** * Encode a PLACE_ORDER message to an array of tokens. */ placeOrder(id: number, contract: Contract, order: Order): void; /** * Encode a REPLACE_FA message to an array of tokens. */ replaceFA(reqId: number, faDataType: FADataType, xml: string): void; /** * Encode a REQ_ACCOUNT_SUMMARY message to an array of tokens. */ reqAccountSummary(reqId: number, group: string, tags: string): void; /** * Encode a REQ_PNL message to an array of tokens. */ reqPnL(reqId: number, account: string, modelCode: string | null): void; /** * Encode a REQ_PNL message. */ cancelPnL(reqId: number): void; /** * Encode a REQ_PNL_SINGLE message. */ reqPnLSingle(reqId: number, account: string, modelCode: string | null, conId: number): void; /** * Encode a CANCEL_PNL_SINGLE message. */ cancelPnLSingle(reqId: number): void; /** * Encode a REQ_ACCOUNT_DATA message. */ reqAccountUpdates(subscribe: boolean, acctCode: string): void; /** * Encode a REQ_ACCOUNT_UPDATES_MULTI message. */ reqAccountUpdatesMulti(reqId: number, acctCode: string, modelCode: string, ledgerAndNLV: boolean): void; /** * Encode a REQ_ALL_OPEN_ORDERS message. */ reqAllOpenOrders(): void; /** * Encode a REQ_AUTO_OPEN_ORDERS message. */ reqAutoOpenOrders(bAutoBind: boolean): void; /** * Encode a REQ_HEAD_TIMESTAMP message. */ reqHeadTimestamp(reqId: number, contract: Contract, whatToShow: WhatToShow, useRTH: boolean, formatDate: number): void; /** * Encode a REQ_CONTRACT_DATA message. */ reqContractDetails(reqId: number, contract: Contract): void; /** * Encode a REQ_CURRENT_TIME message. */ reqCurrentTime(): void; /** * Encode a REQ_EXECUTIONS message. */ reqExecutions(reqId: number, filter: ExecutionFilter): void; /** * Encode a REQ_FUNDAMENTAL_DATA message. */ reqFundamentalData(reqId: number, contract: Contract, reportType: string, fundamentalDataOptions: TagValue[]): void; /** * Encode a REQ_GLOBAL_CANCEL message. */ reqGlobalCancel(orderCancel: OrderCancel): void; /** * Encode a REQ_HISTORICAL_DATA message. */ reqHistoricalData(reqId: number, contract: Contract, endDateTime: string, durationStr: string, barSizeSetting: BarSizeSetting, whatToShow: WhatToShow, useRTH: number | boolean, formatDate: number, keepUpToDate: boolean, chartOptions?: TagValue[]): void; /** * Encode a REQ_HISTORICAL_TICKS message. */ reqHistoricalTicks(reqId: number, contract: Contract, startDateTime: string, endDateTime: string, numberOfTicks: number, whatToShow: WhatToShow, useRth: number | boolean, ignoreSize: boolean, miscOptions?: TagValue[]): void; /** * Encode a REQ_TICK_BY_TICK_DATA message. */ encodeReqTickByTickData(reqId: number, contract: Contract, tickType: TickByTickDataType, numberOfTicks: number, ignoreSize: boolean): unknown[]; reqTickByTickData(reqId: number, contract: Contract, tickType: TickByTickDataType, numberOfTicks: number, ignoreSize: boolean): void; /** * Encode a CANCEL_TICK_BY_TICK_DATA message. */ cancelTickByTickData(reqId: number): void; /** * Encode a REQ_IDS message. */ reqIds(numIds: number): void; /** * Encode a REQ_IDS message. */ reqManagedAccts(): void; /** * Encode a REQ_MARKET_DATA_TYPE message. */ reqMarketDataType(marketDataType: MarketDataType): void; /** * Encode a REQ_MKT_DATA message. */ reqMktData(reqId: number, contract: Contract, genericTickList: string, snapshot: boolean, regulatorySnapshot: boolean): void; /** * Encode a REQ_MKT_DEPTH message. */ reqMktDepth(reqId: number, contract: Contract, numRows: number, isSmartDepth: boolean, mktDepthOptions?: TagValue[]): void; /** * Encode a REQ_NEWS_BULLETINS message. */ reqNewsBulletins(allMsgs: boolean): void; /** * Encode a REQ_OPEN_ORDERS message. */ reqOpenOrders(): void; /** * Encode a REQ_POSITIONS message. */ reqPositions(): void; /** * Encode a REQ_POSITIONS_MULTI message. */ reqPositionsMulti(reqId: number, account: string, modelCode: string | null): void; /** * Encode a CANCEL_POSITIONS_MULTI message. */ cancelPositionsMulti(reqId: number): void; /** * Encode a REQ_REAL_TIME_BARS message. */ reqRealTimeBars(reqId: number, contract: Contract, barSize: number, whatToShow: WhatToShow, useRTH: boolean, realTimeBarsOptions: TagValue[]): void; /** * Encode a REQ_SCANNER_PARAMETERS message. */ reqScannerParameters(): void; /** * Encode a REQ_SCANNER_SUBSCRIPTION message. */ reqScannerSubscription(reqId: number, subscription: ScannerSubscription, scannerSubscriptionOptions: TagValue[], scannerSubscriptionFilterOptions?: TagValue[]): void; /** * Encode a REQ_FA message. */ requestFA(faDataType: FADataType): void; /** * Encode a SET_SERVER_LOGLEVEL message. */ setServerLogLevel(logLevel: LogLevel): void; /** * Encode a QUERY_DISPLAY_GROUPS message. */ queryDisplayGroups(reqId: number): void; /** * Encode a UPDATE_DISPLAY_GROUP message. */ updateDisplayGroup(reqId: number, contractInfo: string): void; /** * Encode a SUBSCRIBE_TO_GROUP_EVENTS message. */ subscribeToGroupEvents(reqId: number, groupId: number): void; /** * Encode a UNSUBSCRIBE_FROM_GROUP_EVENTS message. */ unsubscribeToGroupEvents(reqId: number): void; /** * Encode a REQ_SEC_DEF_OPT_PARAMS message. */ reqSecDefOptParams(reqId: number, underlyingSymbol: string, futFopExchange: string, underlyingSecType: string, underlyingConId: number): void; /** * Encode a REQ_SOFT_DOLLAR_TIERS message. */ reqSoftDollarTiers(reqId: number): void; /** * Encode a REQ_FAMILY_CODES message. */ reqFamilyCodes(): void; /** * Encode a REQ_MATCHING_SYMBOLS message. */ reqMatchingSymbols(reqId: number, pattern: string): void; /** * Encode a REQ_MKT_DEPTH_EXCHANGES message. */ reqMktDepthExchanges(): void; /** * Encode a REQ_SMART_COMPONENTS message. */ reqSmartComponents(reqId: number, bboExchange: string): void; /** * Encode a REQ_NEWS_ARTICLE message. */ reqNewsArticle(reqId: number, providerCode: string, articleId: string, newsArticleOptions: TagValue[]): void; /** * Encode a REQ_NEWS_PROVIDERS message. */ reqNewsProviders(): void; /** * Encode a REQ_HISTORICAL_NEWS message. */ reqHistoricalNews(reqId: number, conId: number, providerCodes: string, startDateTime: string, endDateTime: string, totalResults: number, historicalNewsOptions: TagValue[]): void; /** * Encode a REQ_HISTOGRAM_DATA message. */ reqHistogramData(reqId: number, contract: Contract, useRTH: boolean, timePeriod: string): void; /** * Encode a CANCEL_HISTOGRAM_DATA message. */ cancelHistogramData(reqId: number): void; /** * Encode a CANCEL_HISTOGRAM_DATA message. */ cancelHeadTimestamp(reqId: number): void; /** * Encode a REQ_MARKET_RULE message. */ reqMarketRule(marketRuleId: number): void; /** * Encode a REQ_MARKET_RULE message. */ reqCompletedOrders(apiOnly: boolean): void; reqWshMetaData(reqId: number): void; reqCancelWshMetaData(reqId: number): void; reqWshEventData(reqId: number, wshEventData: WshEventData): void; reqCancelWshEventData(reqId: number): void; reqUserInfo(reqId: number): void; }