[BOT] Neue Klasse für Indikator berechnungen eingeführt

This commit is contained in:
darkeye 2025-01-12 16:16:10 +01:00
parent 0117f0a563
commit ccc1945ee4

View File

@ -0,0 +1,33 @@
import AggregatedDataPoint from "../data/asset/AggregatedDataPoint";
export default class AssetInstrumentCalculator{
/**
* Calculate simple moving average
*
* Formula: SMA = (A1 + A2 + .An) / n
*
* @param {AggregatedDataPoint[]} dataPoints
* @returns {number}
*/
static calculateSMA(dataPoints) {
return dataPoints.map(dp => dp.avgPrice).reduce((a, b) => a+b, 0) / dataPoints.length;
}
/**
* Calculate exponential moving average
*
* Formula: EMA = [Closing Price EMA (Previous Time Period)] x Multiplier + EMA (Previous Time Period)
*
* SMA is taken as EMA of previous period; Multiplier ist 2/(n+1)
*
* @param {AggregatedDataPoint[]} dataPoints
* @returns {number}
*/
static caclulateEMA(dataPoints) {
const sma = AssetInstrumentCalculator.calculateSMA(dataPoints);
const multiplier = 2 / (dataPoints.length + 1);
return sma * (1 - multiplier) + dataPoints[dataPoints.length - 1] * multiplier;
}
}