
    Q-j
                         d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	 d dl
mZmZmZmZ 	 	 ddeded	ed
edededededefdZy)    )isnan)	DataFrameSeries)DictLikeInt)swma)non_zero_rangev_offsetv_pos_defaultv_seriesNopen_highlowcloselengthswma_lengthoffsetkwargsreturnc                    t        |d      }t        |d      }||z   dz
  }t        | |      } t        ||      }t        ||      }t        ||      }| |||yt        |      }t        ||      }	t        ||       }
t	        |
|      j                  |      j                         }t	        |	|      j                  |      j                         }||z  }t	        ||      }t        t        |j                                     ry|dk7  r"|j                  |      }|j                  |      }d|v r,|j                  |d   d	       |j                  |d   d	       d
| d| |_        d| d| |_        dx|_        |_        |j                  ||j                  |i}t        ||j                        }d
| d| |_        |j                  |_        |S )a  Relative Vigor Index

    This indicator attempts to quantify the strength of a trend relative to
    its trading range.

    Sources:
        * [investopedia](https://www.investopedia.com/terms/r/relative_vigor_index.asp)

    Parameters:
        open_ (Series): ```open``` Series
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        close (Series): ```close``` Series
        length (int): The period. Default: ```14```
        swma_length (int): SWMA period. Default: ```4```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (Series): 1 column
             N)r   r   fillnaT)inplaceRVGI__RVGIs_momentum)index)r   r   r
   r	   r   rollingsumallr   to_numpyshiftr   namecategoryr   r    )r   r   r   r   r   r   r   r   _lengthhigh_low_rangeclose_open_range	numeratordenominatorrvgisignaldatadfs                    e/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/momentum/rvgi.pyr-   r-   
   s   : 62&FQ/K{"Q&GUG$ED'"D
3
 CUG$E}u}fF $D#.N%eU3%k:	 ~k:	  {"D${+F
5"#$ {zz&!f% 6F8$d3fX&5 xq.DI6(!K=1FK&00DMFOIItV[[&1D	4u{{	+BfXQ{m,BG--BKI    )NNN)numpyr   pandasr   r   pandas_ta._typingr   r   pandas_ta.overlapr   pandas_ta.utilsr	   r
   r   r   r-    r2   r1   <module>r9      s|     $ + " M M ,0MMM&,M5;MM%(M M #+M 	Mr2   