UNPKG

@stoqey/ibkr

Version:

NodeJS Interactive Brokers wrapper & utilities using @stoqey/ib

47 lines (46 loc) 1.85 kB
import { MarketData } from '../interfaces'; export interface AggregatedData extends MarketData { [key: string]: any; } type IntervalUnit = 's' | 'm' | 'h' | 'd' | 'w' | 'M' | 'y'; interface IntervalConfig { value: number; unit: IntervalUnit; } /** * Parse interval string like '1s', '5m', '1h', etc. */ export declare function parseInterval(interval?: string): IntervalConfig; /** * Get the start of an interval for a given date */ export declare function getIntervalStart(date: Date, config: IntervalConfig): Date; /** * Default aggregators using lodash */ export declare const defaultAggregators: { sum: (values: number[]) => number; mean: (values: number[]) => number; avg: (values: number[]) => number; average: (values: number[]) => number; median: (values: number[]) => number; min: (values: number[]) => number; max: (values: number[]) => number; first: (values: any[]) => any; last: (values: any[]) => any; count: (values: any[]) => number; stdDev: (values: number[]) => number; }; /** * Aggregate market data by time intervals * @param data Array of market data points * @param interval Interval string (e.g., '1s', '5m', '1h', '1d', '1w', '1M', '1y') * @param customAggregators Optional custom aggregation functions for additional fields */ export declare function aggregateByInterval(data: MarketData[], interval: string, customAggregators?: Record<string, (values: any[]) => any>): AggregatedData[]; /** * Helper function to create common aggregation patterns */ export declare function createAggregator(data: MarketData[], interval: string, fieldAggregators: Record<string, keyof typeof defaultAggregators | ((values: any[]) => any)>): AggregatedData[]; export declare function aggregateWithStats(data: MarketData[], interval: string): AggregatedData[]; export {};