Source code for pandas_ta.volume.pvr
# -*- coding: utf-8 -*- from pandas_ta.utils import verify_series from numpy import nan as npNaN from pandas import Series[docs]def pvr(close, volume): """ Indicator: Price Volume Rank""" # Validate arguments close = verify_series(close) volume = verify_series(volume) # Calculate Result close_diff = close.diff().fillna(0) volume_diff = volume.diff().fillna(0) pvr_ = Series(npNaN, index=close.index) pvr_.loc[(close_diff >= 0) & (volume_diff >= 0)] = 1 pvr_.loc[(close_diff >= 0) & (volume_diff < 0)] = 2 pvr_.loc[(close_diff < 0) & (volume_diff >= 0)] = 3 pvr_.loc[(close_diff < 0) & (volume_diff < 0)] = 4 # Name and Categorize it pvr_.name = f"PVR" pvr_.category = "volume" return pvr_pvr.__doc__ = \ """Price Volume Rank The Price Volume Rank was developed by Anthony J. Macek and is described in his article in the June, 1994 issue of Technical Analysis of Stocks & Commodities Magazine. It was developed as a simple indicator that could be calculated even without a computer. The basic interpretation is to buy when the PV Rank is below 2.5 and sell when it is above 2.5. Sources: https://www.fmlabs.com/reference/default.htm?url=PVrank.htm Calculation: return 1 if 'close change' >= 0 and 'volume change' >= 0 return 2 if 'close change' >= 0 and 'volume change' < 0 return 3 if 'close change' < 0 and 'volume change' >= 0 return 4 if 'close change' < 0 and 'volume change' < 0 Args: close (pd.Series): Series of 'close's volume (pd.Series): Series of 'volume's Returns: pd.Series: New feature generated. """