@stoqey/ibkr
Version:
NodeJS Interactive Brokers wrapper & utilities using @stoqey/ib
47 lines (46 loc) • 1.85 kB
TypeScript
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 {};