
    Q-j}                         d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZ d Z	 	 	 	 	 dd	ed
ededededededededededefdZy)    )isnan)Series)DictLikeIntIntFloat)ma)stdev)unsigned_differencesv_boolv_driftv_mamodev_offsetv_pos_defaultv_seriesc                     t        | |      }t        | |      \  }}||z  }||z  }	t        |||      }
t        ||	|      }||
z  |
|z   z  }|S )N)length)r	   r
   r   )sourcer   scalarmodedriftstdposnegpos_stdneg_stdpos_avgneg_avgresults                f/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/volatility/rvi.py_rvir       se    

C#FE2HCCiGCiGwv.Gwv.Gg7!23FM    Nclosehighlowr   r   refinedthirdsmamoder   offsetkwargsreturnc
                    t        |d      }t        | |dz         } | yt        |d      }t        |d      }t        |d      }t        |d      }t	        |      }t        |	      }	|s|rt        |      }t        |      }d}|r)t        |||||      }t        |||||      }d||z   z  }d	}nL|r;t        |||||      }t        |||||      }t        | ||||      }||z   |z   d
z  }d}nt        | ||||      }t        t        |            ry|	dk7  r|j                  |	      }d|
v r|j                  |
d   d       d| d| |_        d|_        |S )a  Relative Volatility Index

    This indicator attempts to quantify volatility using standard deviation.

    Sources:
        * [motivewave](https://www.motivewave.com/studies/relative_volatility_index.htm)
        * [tradingview A](https://www.tradingview.com/script/mLZJqxKn-Relative-Volatility-Index/)
        * [tradingview B](https://www.tradingview.com/support/solutions/43000594684-relative-volatility-index/)

    Parameters:
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        close (Series): ```close``` Series
        length (int): The period. Default: ```14```
        scalar (float): Bands scalar. Default: ```100```
        refined (bool): Use 'refined' calculation which is the average of
            RVI(high) and RVI(low) instead of RVI(close). Default: ```False```
        thirds (bool): Average of ```high```, ```low``` and ```close```.
            Default: ```False```
        mamode (str): See ```help(ta.ma)```. Default: ```"ema"```
        offset (int): Post shift. Default: ```0```

    Other Parameters:
        fillna (value): ```pd.DataFrame.fillna(value)```

    Returns:
        (DataFrame): 3 columns
          Nd   Fema g      ?rg      @tr   fillnaT)inplaceRVI_
volatility)r   r   r   r   r   r   r    allr   shiftr3   namecategory)r"   r#   r$   r   r   r%   r&   r'   r   r(   r)   _modehigh_rvilow_rvirvi	close_rvis                   r   r?   r?   !   s   H 62&FUFQJ'E}63'FWe$GFE"Ffe$FENEfF&~sm Efffe<sFFFE:X'(	fffe<sFFFE:>	'!I-45&&&%8
5: {ii 6

6(#T
2 UG1VH%CHCLJr!   )	NNNNNNNNN)numpyr   pandasr   pandas_ta._typingr   r   r   pandas_ta.mar   pandas_ta.statisticsr	   pandas_ta.utilsr
   r   r   r   r   r   r   r    boolstrr?    r!   r   <module>rJ      s      5 5  &   7;+/)-%)TTT-3TT (T T #'T 	T  #	T
 T
 #+T Tr!   