MACD, moving average convergence divergence, is the difference between a fast exponential moving average and a slow one, which rises when the two are pulling apart and falls when they converge. A signal line, itself an average of that difference, is plotted alongside it. Massive calculates it for you on the macd indicator endpoint, so you pass a ticker, a timespan and three separate windows rather than pulling bars and computing it yourself.
Applies to
- Plans: every plan, including the free Basic tier.
- Endpoints: /v1/indicators/macd/{ticker}, with timespan, short_window, long_window and signal_window.
- Asset classes: stocks, options, indices, forex and crypto, using that asset class's ticker format.
How to call it
curl -X GET "https://api.massive.com/v1/indicators/macd/AAPL?timespan=day&short_window=12&long_window=26&signal_window=9&limit=1&apiKey=YOUR_API_KEY"
Response
{
"results": {
"values": [
{ "timestamp": 1789012800000, "value": 2.3605662226668187, "signal": 1.5719231323333052, "histogram": 0.7886430903335135 }
]
},
"status": "OK"
}
MACD does not take a single window, because it is built from two moving averages and a signal line. It takes short_window, long_window and signal_window, which default to 12, 26 and 9. Passing window instead is ignored rather than refused, so you silently get the defaults.
How to read it
The three outputs answer different questions. value is the gap between the averages, signal is the smoothed version of that gap, and histogram is the difference between the two, which is what crosses zero when the MACD crosses its signal line.
Choosing the windows
Shorter windows react sooner and produce more signals, most of which are noise; longer ones are steadier and later. The 12, 26 and 9 defaults are a convention rather than a finding. Pick them from the horizon you actually trade or analyze on, keep them consistent, and resist tuning them until the history looks good, which is the quickest route to a result that does not repeat.
If you see an error
An empty values array usually means you asked for fewer bars than the long window needs. MACD cannot produce its first point until long_window bars have closed, and its signal line needs signal_window more after that.
A jump on a single date is usually a stock split rather than the market. Bars are split-adjusted by default, so mixing adjusted and unadjusted history will show up here.
{"status":"NOT_AUTHORIZED"} is about the asset class rather than the indicator: it follows the same subscription as the bars underneath.

