typescript
import { computeEmaSeries } from "./computeEma";
export type MacdResult = {
macd: number;
signalLine: number;
histogram: number;
};
export function computeMacd(values: number[]): MacdResult | null {
const emaFast = computeEmaSeries(values, 12);
const emaSlow = computeEmaSeries(values, 26);
if (emaFast.length === 0 || emaSlow.length === 0) return null;
const offset = emaFast.length - emaSlow.length;
const macdSeries = emaSlow.map((value, idx) => emaFast[idx + offset] - value);
const signalSeries = computeEmaSeries(macdSeries, 9);
if (signalSeries.length === 0) return null;
const macd = macdSeries[macdSeries.length - 1];
const signalLine = signalSeries[signalSeries.length - 1];
return {
macd,
signalLine,
histogram: macd - signalLine,
};
}