UNPKG

trading-signals

Version:

Technical indicators to run technical analysis with JavaScript / TypeScript.

51 lines 1.68 kB
import { TradingSignal, TrendIndicatorSeries } from '../../base/Indicator.js'; import { SMA } from '../../trend/SMA/SMA.js'; import { pushUpdate } from '../../util/pushUpdate.js'; export class VWMA extends TrendIndicatorSeries { #candles = []; #signalLine; interval; constructor(interval, SignalIndicator = SMA, signalInterval = interval) { super(); this.interval = interval; this.#signalLine = new SignalIndicator(signalInterval); } getRequiredInputs() { return this.interval; } update(candle, replace) { pushUpdate(this.#candles, replace, candle, this.interval); if (this.#candles.length < this.interval) { return null; } let sumPriceVolume = 0; let sumVolume = 0; for (const c of this.#candles) { sumPriceVolume += c.close * c.volume; sumVolume += c.volume; } if (sumVolume === 0) { return null; } const vwma = sumPriceVolume / sumVolume; this.#signalLine.update(vwma, replace); return this.setResult(vwma, replace); } calculateSignalState(result) { if (result === null || result === undefined) { return TradingSignal.UNKNOWN; } const signalValue = this.#signalLine.getResult(); if (signalValue === null) { return TradingSignal.SIDEWAYS; } if (result > signalValue) { return TradingSignal.BULLISH; } if (result < signalValue) { return TradingSignal.BEARISH; } return TradingSignal.SIDEWAYS; } } //# sourceMappingURL=VWMA.js.map