pricehistory
Version:
Series data with technical indicators.
61 lines (60 loc) • 2.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const simpul_1 = require("simpul");
const signals = ["signalA", "signalB", "signalC", "signalD"];
function signalizeCandles(option, candles) {
if (option.signalize !== true)
return;
for (let i = 0; i < candles.length; i++) {
const candle = candles[i];
candle.signalA = simpul_1.math.num(candle.sma10SignalPriceHigh * (candle.sma10ColorsGreen / 10));
candle.signalB = simpul_1.math.num(-candle.sma10SignalPriceLow * (candle.sma10ColorsRed / 10));
candle.signalC =
typeof candle.priceRangeDiff === "number" &&
typeof candle.candlestickUpper === "number"
? simpul_1.math.num(candle.priceRangeDiff *
(candle.candlestickUpper / 100) *
candle.sma10SignalPriceHigh *
candle.sma10ColorsGreen)
: undefined;
candle.signalD =
typeof candle.priceRangeDiff === "number" &&
typeof candle.candlestickLower === "number"
? simpul_1.math.num(candle.priceRangeDiff *
(candle.candlestickLower / 100) *
-candle.sma10SignalPriceLow *
candle.sma10ColorsRed)
: undefined;
for (const signal of signals) {
if (typeof candle[signal] !== "number")
candle[signal] = 0;
}
if (candle.signalA > candle.signalB) {
candle.signalB = 0;
}
else if (candle.signalB > candle.signalA) {
candle.signalA = 0;
}
if (option.normalize) {
for (const key of option.normalize) {
if (signals.includes(key))
candle[`${key}N`] = candle[key];
}
}
const prev = candles[i - 1];
for (const signal of signals) {
candle[`${signal}Change`] =
simpul_1.math.change.percent(prev === null || prev === void 0 ? void 0 : prev[signal], candle[signal]) || 0;
if (option.trend === true) {
candle[`${signal}Trend`] =
simpul_1.math.change.symbol(prev === null || prev === void 0 ? void 0 : prev[signal], candle[signal]) || [];
}
}
}
if (option.normalize) {
for (const key of option.normalize) {
(0, simpul_1.scale)(candles, `${key}N`);
}
}
}
exports.default = signalizeCandles;