trading-signals
Version:
Technical indicators to run technical analysis with JavaScript / TypeScript.
43 lines • 1.7 kB
JavaScript
import { TrendIndicatorSeries, TradingSignal } from '../../base/Indicator.js';
import { pushUpdate } from '../../util/pushUpdate.js';
export class OBV extends TrendIndicatorSeries {
candles = [];
interval;
constructor(interval) {
super();
this.interval = interval;
}
getRequiredInputs() {
return this.interval;
}
update(candle, replace) {
pushUpdate(this.candles, replace, candle, this.getRequiredInputs());
if (this.candles.length < this.getRequiredInputs()) {
return null;
}
const prevCandle = this.candles[this.candles.length - 2];
const prevPrice = prevCandle.close;
const prevResult = this.result ?? 0;
const currentPrice = candle.close;
const nextResult = currentPrice > prevPrice ? candle.volume : currentPrice < prevPrice ? -candle.volume : 0;
return this.setResult(prevResult + nextResult, false);
}
calculateSignalState(result) {
const hasResult = result !== null && result !== undefined;
const previousResult = this.previousResult;
const hasPreviousResult = previousResult !== undefined;
const isBullish = hasResult && hasPreviousResult && result > previousResult;
const isBearish = hasResult && hasPreviousResult && result < previousResult;
switch (true) {
case !hasResult:
return TradingSignal.UNKNOWN;
case isBullish:
return TradingSignal.BULLISH;
case isBearish:
return TradingSignal.BEARISH;
default:
return TradingSignal.SIDEWAYS;
}
}
}
//# sourceMappingURL=OBV.js.map