
    Q-j                         d dl mZmZ 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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	de	defdZy)    )isnannan)Series	DataFrame)atr)IntIntFloatDictLike)v_boolv_driftv_mamodev_pos_defaultv_offsetv_seriesv_talibNhighlowclosehigh_length
low_length
atr_length
multipliermamodetalib	use_closedriftoffsetkwargsc           
         t        |d      }t        |d      }t        |d      }t        ||      }t        ||      dz   }t        | |      } t        ||      }t        ||      }| ||yt        |d      }t        |d      }t	        |      }t        |	d      }	t        |
      }
t        |      }t        | ||||||
|      }|t        t        |            ry||z  }|	rI|j                  |d	      j                         |z
  }|j                  |d	      j                         |z   }nH| j                  |d	      j                         |z
  }|j                  |d	      j                         |z   }||j                  |
      kD  j                  t              }||j                  |
      k  j                  t               }||z   }|j                   d
   d
k(  rd|j                   d
<   |j#                  d
t$              j'                         }|d
k7  r3|j                  |      }|j                  |      }|j                  |      }d|v rB|j)                  |d   d       |j)                  |d   d       |j)                  |d   d       d}d| d| d| d| }|	rd| }| d| || d| || d| |i}t+        ||j,                        }| | |_        d|_        |S )a  Chandelier Exit

    This indicator attempts to identify trailing stop-losses based on ATR.

    Sources:
        * [stockcharts](https://school.stockcharts.com/doku.php?id=technical_indicators:chandelier_exit)
        * [tradingview](https://in.tradingview.com/scripts/chandelier/)

    Parameters:
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        close (Series): ```close``` Series
        high_length (int): Highest high period. Default: ```22```
        low_length (int): Lowest low period. Default: ```22```
        atr_length (int) : ATR length. Default: ```14```
        multiplier (float): Lower & Upper Bands scalar. Default: ```2.0```
        mamode (str): See ```help(ta.ma)```. Default: ```"rma"```
        talib (bool): If installed, use TA Lib. Default: ```True```
        use_close (bool): Use  ```max(high_length, low_length)``` for
            the ```close```. Default: ```False```
        drift (int): Difference amount. Default: ```1```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (DataFrame): 3 columns
             Ng       @rmaF)r   r   r   lengthr   r   r   r   )min_periodsr   fillnaT)inplaceCHDLREXT__CLOSE_lsd)index
volatility)r   maxr   r   r   r   r   r   r   allr   rollingminshiftastypeintilocreplacer   ffillr&   r   r.   namecategory)r   r   r   r   r   r   r   r   r   r   r   r   r   roll_length_lengthmode_talatr_atr_multlongshortuptrend	downtrend	direction_name_propsdatadfs                              r/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/volatility/chandelier_exit.pychandelier_exitrK      s   J z2.JR0Kz2.Jk:.K*k*Q.GD'"D
3
 CUG$E|s{emz3/Jfe$Fu~Hy%(IENEfF s%
XU6D |s5;'j H}}[a}8<<>Ikq9==?(J||KQ|7;;=HJA6::<xGtzz%((005G%++e,,44S99I)#I~~aA	q!!!S)//1I {zz&!F#OOF+	 6F8$d3VH%t4)48 EQzl!J<qEF6(# '6(T'6(U'6(YD
 
4u{{	+Bx BGBKI    )	NNNNNNNNN)numpyr   r   pandasr   r   pandas_ta.volatilityr   pandas_ta._typingr   r	   r
   pandas_ta.utilsr   r   r   r   r   r   r   strboolrK    rL   rJ   <module>rU      s     $ $ 5 5   0437>B%)m
mm&,mm),m m )1m 	m  $	m 8<	m
 m
  #m
 6>mrL   