
    Q-j;                         d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZmZmZmZmZmZ  ed      d        Z	 	 	 dd
e
dededededededede	fdZy	)    )njit)clipcumsumint64nanwhere)	DataFrameSeries)DictLikeInt)nb_ffillnb_idiffv_boolv_intv_offsetv_pos_defaultv_seriesT)cachec                    t        | |      }|dk  |dkD  }}t        |      }	t        |      }
|	t        t        | |	t                    z
  }|
t        t        | |
t                    z
  }|dkD  rt        |d|      }t        |d|      }|r$t        |dk(  d|      }t        |dk(  d|      }||fS ||k\  ||k  z  }t        ||d      }t        ||d      }||fS )Nr   )r   r   r   r   r   r   )xncaplbubshow_allx_diffneg_diffpos_diffdn_csumup_csumdnup
between_lus                 e/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/momentum/exhc.pynb_exhcr%      s    a^F!VaZhHXGXG	8E8)Wc:;	;B	8E8)Wc:;	;B
Qw"a"a27Ar"27Ar" r6M	 Bh28,
:r1%:r1%r6M    Ncloselengthr   asintr   nozerosoffsetkwargsreturnc                 (   t        |d      }t        | |dz         } | yt        |dd      }t        |d      }t        |d      }t        |d      }t	        |      }| j                         }t        |||dd	|      \  }	}
|r*|	j                  t              }	|
j                  t              }
|rd
nd|	|rdnd|
i}t        || j                        }|rdnd|_        d|_        |r|j                  dt        id       |dk7  r|j                  |      }|S )aD  Exhaustion Count

    This indicator attempts to identify rising/falling exhaustion.

    Sources:
        * [demark](https://demark.com)
        * [practicaltechnicalanalysis](http://practicaltechnicalanalysis.blogspot.com/2013/01/tom-demark-sequential.html)

    Parameters:
        close (Series): Series of close's
        length (int): The period. Default: ```4```
        cap (int): Count cap. For no cap, set to ```0```. Default: ```13```
        show_all (bool): Counts 1 - 13. For 6 - 9, set to ```False```.
            Default: ```True```
        asint (bool): Returns as ```Int```. Default: ```False```
        nozeros (bool): Replace zeros with ```np.nan```. Default: ```False```
        offset (int): Post shift. Default: ```0```

    Returns:
        (DataFrame): 2 columns

    Note:
        Similar to TD Sequential
          N   TF   	   EXHC_DNaEXHC_DNEXHC_UPaEXHC_UP)indexEXHCaEXHCmomentumr   )inplace)r   r   r   r   r   to_numpyr%   astyper   r	   r9   namecategoryreplacer   shift)r'   r(   r   r)   r   r*   r+   r,   np_closer!   r"   datadfs                r$   exhcrG   ,   s   < 61%FUFQJ'E}
R
Ch%H5% EWe$GfF ~~HXvsAq(;FBYYuYYu 
Ir
IrD 
4u{{	+B!gvBGBK


As8T
* {XXfIr&   )NNNNNN)numbar   numpyr   r   r   r   r   pandasr	   r
   pandas_ta._typingr   r   pandas_ta.utilsr   r   r   r   r   r   r   r%   boolrG    r&   r$   <module>rO      s     1 1 $ +   D 4 37?CBBB,/BB"&B8<B B #+B 	Br&   