
    Q-j
                         d dl mZmZ d dlmZ d dlmZmZmZ d dl	m
Z
mZmZmZmZmZ d dlmZ 	 	 	 d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)    )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	                    t        |d      }t        | |dz         } t        ||dz         }t        ||dz         }| ||yt        |d      }t        |d      }t        |d      }t	        |      }t        |      }| j                  |      j                         |j                  |      j                         z
  }
t        | |||      }|j                  |      j                         }|}|r'|t        |      t        |
      z
  t        |      z  z  }n&|t        |      t        |
      z
  t        |      z  z  }|dk7  r|j                  |      }d|	v r|j                  |	d   d	
       d|rdnd d| d| d| |_        d|_        |S )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                 b/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/trend/chop.pyr/   r/      s   J 62&FD&1*%D
3

#CUFQJ'E|s{emz1-Jfc"F	E	BENEfF <<##%F(;(?(?(AADDcz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   