
    Q-j                         d dl mZmZ d dlmZ d dl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 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	)    )isnannan)Series)DictLikeInt)ma)Imports)v_boolv_driftv_mamodev_offsetv_pos_defaultv_seriesv_talib   )
true_rangeNhighlowcloselengthmamodetalibprenandriftoffsetkwargsreturnc	                    t        |d      }|dz   }
t        | |
      } t        ||
      }t        ||
      }| ||yt        |d      }t        |      }t	        |d      }t        |      }t        |      }t        d   r|rddlm	}  || |||      }nzt        | |||||	      }t        t        |            ry|	j                  d
d      }|r1|d| j                         }t        |d|dz
   ||j                   |dz
  <   t#        ||||      }t        t        |            ry|	j                  dd      }|r|d|z  z  }|dk7  r|j%                  |      }d|	v r|j'                  |	d   d       d|d    |rdnd d| |_        d|_        |S )a  Average True Range

    This indicator attempts to quantify volatility with a focus on gaps or
    limit moves.

    Sources:
        * [tradingview](https://www.tradingview.com/wiki/Average_True_Range_(ATR))

    Parameters:
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        close (Series): ```close``` Series
        length (int): The period. Default: ```14```
        mamode (str): See ```help(ta.ma)```. Default: ```"rma"```
        talib (bool): If installed, use TA Lib. Default: ```True```
        prenan (bool): Sets initial values to ```np.nan``` based
            on ```drift```. Default: ```False```
        drift (int): Difference amount. Default: ```1```
        offset (int): Post shift. Default: ```0```

    Other Parameters:
        percent (bool): Return as percent. Default: ```False```
        fillna (value): ```pd.DataFrame.fillna(value)```

    Returns:
        (Series): 1 column
       r   NrmaFr   r   )ATR)r   r   r   r   r   r   presmaT)r   r   percentd   fillna)inplacer!   p _
volatility)r   r   r   r   r
   r   r   r	   r   r!   r   allr   popmeanr   ilocr   shiftr%   namecategory)r   r   r   r   r   r   r   r   r   r   _lengthmode_talr!   atrtrr"   sma_nthr#   s                     f/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/volatility/atr.pyr4   r4      s   D 62&FqjGD'"D
3
 CUG$E|s{emfe$Fu~HFE"FENEfF wH$UF+3e6
 uRy>Hd+6l'')G!B{
O")BGGFQJF(;
5:jjE*GsU{ {ii 6

6(#T
2 VAYKwB7qACHCLJ    )NNNNNN)numpyr   r   pandasr   pandas_ta._typingr   r   pandas_ta.mar   pandas_ta.mapsr	   pandas_ta.utilsr
   r   r   r   r   r   r   r   strboolr4    r8   r7   <module>rB      s      +  "   #
 =A&*&*	W
WW&,W69WW#W W !$W 	W #+	W
 Wr8   