
    Q-jd                         d dl mZ d dlmZmZmZmZ 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 d dl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dede
defdZy)    )njit)isnannanuintc
zeros_like)Series)DictLikeIntIntFloat)ma)Imports)v_driftv_mamodev_offsetv_pos_defaultv_seriesv_talib)atrT)cachec                    | j                   }t        ||      }| j                         }t        | t              }t        | t              }	| |kD  }
d\  ||
<   |	|
 <   d\  |d | |	d | t
        |d | t        ||      D ]L  }||dz
     }||   r| |   ||   z
  ||<   ||   |k  r|||<   |	|   s1| |   ||   z   ||<   ||   |kD  sH|||<   N ||z  ||	z  }}t
        t
        c||dk(  <   ||dk(  <   |||fS )N)dtype)   r   )r   r   r   r   )sizemaxcopyr   r   r   range)xr   atr_length	ma_lengthmkresultupdnexpniprlongshorts                  h/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/volatility/atrts.pynb_atrtsr,      s1   	AFIAVVXF	AU	#B	AU	#Br6DBtHb$iNBrFBrFF2AJ1a[AE]a5!tAwF1Iay2~q	a5!tAwF1Iay2~q	  2+v{%D),c&DOU5A:&4    Nhighlowcloser   r    r"   mamodetalibdriftoffsetkwargsreturnc
                 V   t        |d      }t        |d      }||z   }t        | |      } t        ||      }t        ||      }| ||yt        |d      }t        |d      }t        |      }t	        |      }t        |	      }	t        d   r|rddlm}  || |||      }nt        d| |||||||	d	|
}t        t        |            ry||z  }t        ||||
      }|j                         |j                         |j                         }}}t        |||||      \  }}}|
j                  dd      }|r|d|z  z  }t!        ||j"                        }|	dk7  r|j%                  |	      }d|
v r|j'                  |
d   d       d|d    |rdnd }| d| d| d| |_        d|_        |S )a  ATR Trailing Stop

    This indicator attempts to identify exits for long and short positions.
    To determine trend, it uses a moving average with a scalable ATR.

    Sources:
        * [motivewave](https://www.motivewave.com/studies/atr_trailing_stops.htm)

    Parameters:
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        close (Series): ```close``` Series
        length (int): The period. Default: ```14```
        ma_length (int): MA Length. Default: ```20```
        k (int): ATR multiplier. Default: ```3```
        mamode (str): See ```help(ta.ma)```. Default: ```"ema"```
        talib (bool): If installed, use TA Lib. Default: ```True```
        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
          Ng      @emar2   r   )ATR)r.   r/   r0   r   r1   r3   r2   r4   )r   r2   percentFd   )indexfillnaT)inplaceATRTSp _
volatility )r   r   r   r   r   r   r   r2   r;   r   allr   _mato_numpyr,   popr   r>   shiftr?   namecategory)r.   r/   r0   r   r    r"   r1   r2   r3   r4   r5   _lengthmode_talr;   r   ma_np_closenp_manp_atr	np_atrts_rD   r<   atrts_propss                           r+   rU   rU   3   s   D 62&Fi,Iy GD'"D
3
 CUG$E|s{emaAfe$Fu~HENEfF wH4eV, 
3eFh
 $
 5;AID
feIX
>C#nn.VeHx	JOIq!jjE*GS8^#	9EKK0E {F# 6VH%t4 VAYKwB78F81VHAi[!5EJ!ENLr-   )NNNNNNN)numbar   numpyr   r   r   r   pandasr   pandas_ta._typingr	   r
   r   pandas_ta.mar   rH   pandas_ta.mapsr   pandas_ta.utilsr   r   r   r   r   r   pandas_ta.volatilityr   r,   strboolrU   rF   r-   r+   <module>ra      s     / /  5 5 " "  % D > =A)-9=	Y
YY&,Y69YY&Y Y  $Y 47Y 	Y #+	Y
 Yr-   