@showr/indicators
Version:
Technical indicators for Trading made with Showr
29 lines (28 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AverageLoss = void 0;
const core_1 = require("@showr/core");
const utils_1 = require("../utils");
class AverageLoss extends core_1.Indicator {
constructor(name = 'AverageLoss', params) {
super(name, function (dataset) {
const { attribute, period } = params;
const datasetLength = dataset.value.length;
const lastAverageLoss = dataset.at(-2)?.getIndicator(this.name);
if (lastAverageLoss && datasetLength > period) {
const lastQuoteValue = dataset.valueAt(-1, attribute);
const secondLastQuoteValue = dataset.valueAt(-2, attribute);
const difference = lastQuoteValue - secondLastQuoteValue;
const currentLoss = difference < 0 ? -difference : 0;
return (lastAverageLoss * (period - 1) + currentLoss) / period;
}
else {
const flattenDataset = dataset.flatten(attribute);
return (0, utils_1.getAverageLoss)(flattenDataset, period) || NaN;
}
}, {
params,
});
}
}
exports.AverageLoss = AverageLoss;