react-financial-charts
Version:
React charts specific to finance.
30 lines • 1.21 kB
JavaScript
import { merge, rebind } from "../utils";
import { macd } from "../calculator";
import baseIndicator from "./baseIndicator";
import { MACD as appearanceOptions } from "./defaultOptionsForAppearance";
const ALGORITHM_TYPE = "MACD";
export default function () {
const base = baseIndicator()
.type(ALGORITHM_TYPE)
.fill(appearanceOptions.fill)
.stroke(appearanceOptions.stroke)
.accessor((d) => d.macd);
const underlyingAlgorithm = macd();
const mergedAlgorithm = merge()
.algorithm(underlyingAlgorithm)
.merge((datum, i) => { datum.macd = i; });
const indicator = (data, options = { merge: true }) => {
if (options.merge) {
if (!base.accessor()) {
throw new Error(`Set an accessor to ${ALGORITHM_TYPE} before calculating`);
}
return mergedAlgorithm(data);
}
return underlyingAlgorithm(data);
};
rebind(indicator, base, "id", "accessor", "stroke", "fill", "echo", "type");
rebind(indicator, underlyingAlgorithm, "options", "undefinedLength");
rebind(indicator, mergedAlgorithm, "merge", "skipUndefined");
return indicator;
}
//# sourceMappingURL=macd.js.map