pricehistory
Version:
Series data with technical indicators.
82 lines (81 loc) • 3.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const option_propsPrice_1 = __importDefault(require("./option.propsPrice"));
const option_propsVolume_1 = __importDefault(require("./option.propsVolume"));
function setCandleCrossover(option, candle, series) {
if (option.crossover !== true)
return;
const prev = series[series.length - 2];
if (!prev)
return;
for (const propA of option_propsPrice_1.default) {
for (const propB of option_propsPrice_1.default) {
if (propA === propB)
continue;
if (propA.startsWith("price") && propB.startsWith("price"))
continue;
const propAPrev = prev[propA];
const propACurr = candle[propA];
const propBPrev = prev[propB];
const propBCurr = candle[propB];
if (typeof propACurr !== "number" || typeof propBCurr !== "number") {
continue;
}
if (typeof propAPrev === "number" && typeof propBPrev === "number") {
if (propAPrev <= propBPrev && propACurr > propBCurr) {
candle[`${propA}_to_${propB}`] = "crossover";
continue;
}
else if (propAPrev >= propBPrev && propACurr < propBCurr) {
candle[`${propA}_to_${propB}`] = "crossunder";
continue;
}
}
if (propACurr === propBCurr) {
candle[`${propA}_to_${propB}`] = "equal";
}
else if (propACurr > propBCurr) {
candle[`${propA}_to_${propB}`] = "over";
}
else if (propACurr < propBCurr) {
candle[`${propA}_to_${propB}`] = "under";
}
}
}
for (const propA of option_propsVolume_1.default) {
for (const propB of option_propsVolume_1.default) {
if (propA === propB)
continue;
const propAPrev = prev[propA];
const propACurr = candle[propA];
const propBPrev = prev[propB];
const propBCurr = candle[propB];
if (typeof propACurr !== "number" || typeof propBCurr !== "number") {
continue;
}
if (typeof propAPrev === "number" && typeof propBPrev === "number") {
if (propAPrev <= propBPrev && propACurr > propBCurr) {
candle[`${propA}_to_${propB}`] = "crossover";
continue;
}
else if (propAPrev >= propBPrev && propACurr < propBCurr) {
candle[`${propA}_to_${propB}`] = "crossunder";
continue;
}
}
if (propACurr === propBCurr) {
candle[`${propA}_to_${propB}`] = "equal";
}
else if (propACurr > propBCurr) {
candle[`${propA}_to_${propB}`] = "over";
}
else if (propACurr < propBCurr) {
candle[`${propA}_to_${propB}`] = "under";
}
}
}
}
exports.default = setCandleCrossover;