
    i
                         S SK JrJr  S SKJr  S SKJrJrJr  S SK	J
r
JrJrJrJrJr  S SKJr     SS\S\S	\S
\S\S\S\S\S\S\S\4S jjrg)    )loglog10)Series)DictLikeIntIntFloat)v_boolv_driftv_offsetv_pos_defaultv_scalarv_series)atrNhighlowcloselength
atr_lengthlnscalardriftoffsetkwargsreturnc	                    [        US5      n[        XS-   5      n [        XS-   5      n[        X#S-   5      nU b  Ub  Uc  g[        US5      n[        US5      n[        US5      n[	        U5      n[        U5      nU R                  U5      R                  5       UR                  U5      R                  5       -
  n
[        XX$S9nUR                  U5      R                  5       nUnU(       a'  U[        U5      [        U
5      -
  [        U5      -  -  nO&U[        U5      [        U
5      -
  [        U5      -  -  nUS:w  a  UR                  U5      nSU	;   a  UR                  U	S   S	S
9  SU(       a  SOS SU SU SU 3Ul        SUl        U$ )a  Choppiness Index

This indicator, by E.W. Dreiss, attempts to determine choppiness.

Sources:
    * E.W. Dreiss an Australian Commodity Trader
    * [motivewave](https://www.motivewave.com/studies/choppiness_index.htm)
    * [tradingview](https://www.tradingview.com/scripts/choppinessindex/)

Parameters:
    high (Series): ```high``` Series
    low (Series): ```low``` Series
    close (Series): ```close``` Series
    length (int): The period. Default: ```14```
    atr_length (int): ATR period. Default: ```1```
    ln (bool): Use ```ln``` instead of ```log10```. Default: ```False```
    scalar (float): Scalar. Default: ```100```
    drift (int): Difference amount. Default: ```1```
    offset (int): Post shift. Default: ```0```

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

Returns:
    (Series): 1 column

Note:
    * Choppy: ```~ 100```
    * Trending: ```~ 0```
      Nd   F)r   r   r   r   r   fillnaT)inplaceCHOPr    _trend)r   r   r   r	   r
   r   rollingmaxminr   sumr   r   shiftr   namecategory)r   r   r   r   r   r   r   r   r   r   diffatr_atr_sumchops                 O/var/www/html/trading/venv/lib/python3.13/site-packages/pandas_ta/trend/chop.pyr/   r/      s   J 62&FD1*%D
3

#CUQJ'E|s{emz1-Jfc"F	E	BENEfF <<##%F(;(?(?(AADDBDll6"&&(GD	WD	)S[88w%+-v>> {zz&! 6F8$d3 rtr*!F81ZL&JDIDMK    )NNNNNN)numpyr   r   pandasr   pandas_ta._typingr   r   r   pandas_ta.utilsr	   r
   r   r   r   r   pandas_ta.volatilityr   boolr/    r1   r0   <module>r9      s      5 5  % +/;?	K
KK&,KK$'K 	K &K 69K 	K #+	K
 Kr1   