UpSide DownSide Volume

UpSide DownSide Volume (UDVOL) was authored by Aldo A. Palles for Omega Research 1997. This indicator gives volume a direction. If prices are rising volume is assigned a plus value; if prices are falling volume is assigned a minus value. The ratio of the plus-minus volume over a time period creates an oscillator. The user may change the input (close) and period length. This indicator’s definition is further expressed in the condensed code given in the calculation below.

UpSide DnSide Volume1

How To Trade Using UpSide DnSide Volume

If the udVol crosses above the midGuide a buy signal will be generated. Conversely, if the udVol crosses below the midGuide a sell signal will be given. The 0 line divides the bulls above from the bears below.

UpSide DnSide Volume2

How To Access in MotiveWave

Go to the top menu, choose Study>Volume Based>>UpSide DnSide Volume

or go to the top menu, choose Add Study, start typing in this study name until you see it appear in the list, click on the study name, click OK.

Important Disclaimer: The information provided on this page is strictly for informational purposes and is not to be construed as advice or solicitation to buy or sell any security. Please see our Risk Disclosure and Performance Disclaimer Statement.


//input = price, user defined, default is closing price
//period = user defined, default is 50
//index = current bar number
//prev = previous

lastU = udVol[index-1];
udVol = upDnVol(index, period, input);
Plot: udVol = upDnVol(index, period, key);
sell = (udVol moreThan midGuide) AND ( lastU lessThan midGuide);
buy = (udVol lessThan midGuide) AND ( lastU moreThan midGuide);
Method upDnVol(int index, int period, Object input){
ivolume =  0, iprice = 0, prevP = 0;
upVol = 0, dnVol = 0, upDnVol = 0;
for (i = index-period+1; i LOE index; i++) {
    ivolume =  volume[i];
    iprice = price[i];
    prevP = price[i-1];
    if (iprice MOE prevP) upVol = upVol + ivolume;
    if (iprice lessThan prevP) dnVol = dnVol + ivolume;
if (dnVol != 0) upDnVol = upVol / dnVol;
return upDnVol;