OpenPond
1Branch0Tags
GL
glucryptoMerge commit 'refs/tmp/prod-master'
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, }; }