Detect hidden buying or selling pressure with accumulation distribution line
Developed by analyst Marc Chaikin, the accumulation-distribution line (ADL) measures the volume of money flowing into or out of a stock.
Technical traders use ADL as a proxy for underyling buying and selling pressure.
Excel can help you calculate and plot ADL using a little VBA. You can download a web-connected VBA-powered spreadsheet from the link at the bottom of this post, but first let’s review the key formula and calculations.
Step 1: For day n, calculate the Close Location Value (CLV), also known as the Money Flow Multiplier.
Step 2: Then calculate the money flow volume.
Step 3: Finally, calculate the accumulation-distribution line.
CLV measures the distance of the close price from the high or low, and ranges between -1 and 1. If CLV is
- positive, the close is nearer to the high than the low
- negative, the close is nearer to the low than the high
- equal to 0, the close is midway between the high and the low
ADL is often used to confirm trends or predict reversals. For example, if prices track upwards but the ADL falls, a price reversal might be imminent. This is because falling ADL is associated with selling pressure.
This Excel spreadsheet employs some clever VBA to
- downloads stock data from Yahoo Finance
- programatically write the formulas to calculate ADL and OBV
- and generate charts plotting both against the close price
Here’s a snippet of the VBA – the part that programmatically writes the formulas that calculate ADL and OBV into a range of cells.
'On Balance Volume dataSheet.Range("H1") = "OBV" dataSheet.Range("H2").FormulaR1C1 = "= RC[-2]" dataSheet.Range("H3:H" & nRows).FormulaR1C1 = _ "=IF(RC[-3] = R[-1]C[-3], R[-1]C, IF(RC[-3] > R[-1]C[-3], R[-1]C + RC[-2], R[-1]C - RC[-2] ))" 'Accumulation Distribution Line dataSheet.Range("I1") = "Money Flow Multiplier" dataSheet.Range("I2:I" & nRows).FormulaR1C1 = _ "=((RC[-4] - RC[-5]) - (RC[-6] - RC[-4])) / (RC[-6]-RC[-5]) " dataSheet.Range("J1") = "Money Flow Volume" dataSheet.Range("J2:J" & nRows).FormulaR1C1 = "= RC[-1] * RC[-4]" dataSheet.Range("K1") = "ADL" dataSheet.Range("K2").FormulaR1C1 = "=RC[-1]" dataSheet.Range("K3:K" & nRows).FormulaR1C1 = "= R[-1]C + RC[-1]"
This is the ADL and OBV of Microsoft (MSFT) from 28th November 2013 to 28th November 2014 generated by this spreadsheet . The ADL and OBV rise in tandem with the price, confirming a strong trend.
The code can be viewed, edited and modified. Please link to http://investexcel.net if you like this tool.