
    Q-j                         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mZ 	 	 	 	 ddeded	ed
ededededededefdZy)    )Series)DictLikeIntIntFloat)Imports)rsi)consecutive_streakpercent_rankv_driftv_offsetv_pos_defaultv_scalarv_seriesv_talibNclose
rsi_lengthstreak_lengthrank_lengthscalartalibdriftoffsetkwargsreturnc           	         t        |d      }t        |d      }t        |d      }t        |||      }	t        | |	      } d|v r|j                  d       | yt	        |d      }t        |      }
t        |      }t        |      }| j                         }t        t        |      | j                        }t        d   r|
rdd	lm}  || |      } |||      }n$t        | f|||||d
|}t        |f|||||d
|}||z   t!        | |      z   dz  }t        || j                        }|dk7  r|j#                  |      }d|v r|j%                  |d   d       d| d| d| |_        d|_        |S )ae  Connors Relative Strength Index

    This indicator attempts to identify momentum and potential reversals at
    "overbought" or "oversold" conditions.

    Sources:
        * [alvarezquanttrading](https://alvarezquanttrading.com/blog/connorsrsi-analysis/)
        * [tradingview](https://www.tradingview.com/support/solutions/43000502017-connors-rsi-crsi/)
        * An Introduction to ConnorsRSI. Connors Research Trading Strategy Series.
          Connors, L., Alvarez, C., & Radtke, M. (2012). ISBN 978-0-9853072-9-5.

    Parameters:
        close (Series): ```close``` Series
        rsi_length (int): The RSI period. Default: ```3```
        streak_length (int): Streak RSI period. Default: ```2```
        rank_length (int): Percent Rank length. Default: ```100```
        scalar (float): Scalar. Default: ```100```
        talib (bool): If installed, use TA Lib. Default: ```True```
        drift (int): Difference amount. Default: ```1```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (Series): 1 column
          d   lengthN)indexr   r   )RSI)r   r   r   r   r   g      @fillnaT)inplaceCRSI__momentum)r   maxr   popr   r   r   r   to_numpyr   r	   r    r   r   r!   r   r
   shiftr"   namecategory)r   r   r   r   r   r   r   r   r   _lengthmode_talnp_closestreakr!   _rsi_streak_rsi_crsicrsis                     e/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/momentum/crsi.pyr4   r4      s   D z1-J!-3MS1K*m[9GUG$E6

8}fc"Fu~HENEfF ~~H&x0DFwH5*%&-0 
$V5
*0

 
(u
*0

 K,uk"BBcIE%u{{+D {zz&! 6F8$d3 
|1]O1[MBDIDMK    )NNNNNNN)pandasr   pandas_ta._typingr   r   r   pandas_ta.mapsr   pandas_ta.momentum.rsir   pandas_ta.utilsr	   r
   r   r   r   r   r   r   boolr4    r6   r5   <module>r>      s     5 5 " &	 	 	 AE04%)	WW"W:=WW%-W W  #W 	W #+	W
 Wr6   