UNPKG

quant-zero

Version:

Node-Quant is a powerful Node.js package for developing and testing quantitative trading strategies in cryptocurrency markets, offering tools for backtesting and performance analysis.

52 lines (44 loc) 1.15 kB
import { EventEmitter } from 'events' import { TimelineEventsInterface, IndicatorOptions, TimelineEvents, } from '@/types' import { OHLCV } from 'ccxt' export class Indicator extends EventEmitter { protected data: OHLCV[] = [] public name: string public key: string public description: string constructor({ name, key, description }: IndicatorOptions) { super() this.name = name this.key = key this.description = description } // Provides the first sample of data if not already provided public provide(data: OHLCV[]) { if (this.data.length === 0 && data.length > 0) { this.data = data this.emit(TimelineEvents.PROVIDED, this.data) } } // Feeds new data in public feed(data: OHLCV) { this.data.push(data) this.emit(TimelineEvents.FED, data) } // Generates the result public generate(): any { return null } public clear(): void { this.data = []; } on<K extends keyof TimelineEventsInterface>( event: K, listener: TimelineEventsInterface[K], ): this { return super.on(event, listener) } }