
    Q-jQ                         d dl mZ d dl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mZmZmZ  ed      d        Z ed      d	        Z	 	 	 ddede
dededede
de	defdZy
)    )njit)copycosexp)Series)DictLikeIntIntFloat)v_boolv_offsetv_pos_defaultv_seriesT)cachec                     | j                   ||z  t        |       }}}t        | |z        }d|z  t        d|z        z  }||z  |z
  dz   }	t	        d|      D ]4  }
d|	z  | |
   | |
dz
     z   z  |||
dz
     z  z   ||z  ||
dz
     z  z
  ||
<   6 |S )N               ?sizer   r   r   range)xnpisqrt2mratioresultabcis              c/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/overlap/ssf.pynb_ssfr$      s    vvuqy$q'fuARC%KA	AC%K  A	A	AA 1a[!GqtaAh/!fQUm2CC!efQUm#$q	  M    c                    | j                   ||z  |z  t        |       }}}t        |       }d|z  t        |      z  }t	        d|      D ]=  }	d||z  |z
  dz   z  | |	   | |	dz
     z   z  |||	dz
     z  z   ||z  ||	dz
     z  z
  ||	<   ? |S )Nr   r   r   r   )
r   r   r   r   r   argr   r   r    r"   s
             r#   nb_ssf_evergetr(      s    VVR%Z!^T!WFsASD	A	ACA 1a[1q519q=)QqTAa!eH_=&Q- "#a%&Q-"78q	  Mr%   Ncloselengthevergetr   r   offsetkwargsreturnc                    t        |d      }t        | |      } | yt        |d      }t        |d      }t        |d      }t        |      }| j	                         }|rt        ||||      }nt        ||||      }t        || j                        }|dk7  r|j                  |      }d|v r|j                  |d   d	
       d|rdnd d| |_        d|_        |S )u  Ehlers's Super Smoother Filter

    This indicator, by John F. Ehlers's © 2013, is a (Recursive) Digital
    Filter that attempts to reduce lag and remove aliases. This version
    has two poles.

    Sources:
        * [mql5](https://www.mql5.com/en/code/588)
        * [traders.com](http://traders.com/documentation/feedbk_docs/2014/01/traderstips.html)
        * [tradingview](https://www.tradingview.com/script/VdJy0yBJ-Ehlers-Super-Smoother-Filter/)

    Parameters:
        close (Series): ```close``` Series
        length (int): The period. Default: ```20```
        everget (bool): Everget's implementation of ssf that uses pi
            instead of 180 for the b factor of ssf. Default: ```False```
        pi (float): The default is Ehlers's truncated value: ```3.14159```.
            Default: ```3.14159```
        sqrt2 (float): The default is Ehlers's truncated value: ```1.414```.
            Default: ```1.414```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (Series): 1 column

    Note:
        * Everget's calculation on TradingView:
            ```pi=np.pi```, ```sqrt2=np.sqrt(2)```

    Danger:
        Possible Data Leak
       Ngn!	@g9v?F)indexr   fillnaT)inplaceSSFe _overlap)r   r   r   r   to_numpyr(   r$   r   r1   shiftr2   namecategory)	r)   r*   r+   r   r   r,   r-   np_closessfs	            r#   r>   r>   +   s    R 62&FUF#E}	r7	#B%'EWe$GfF ~~HXvr59Xvr51
EKK
(C {ii 6

6(#T
2 GS,AfX6CHCLJr%   )NNNNN)numbar   numpyr   r   r   pandasr   pandas_ta._typingr   r	   r
   pandas_ta.utilsr   r   r   r   r$   r(   boolr>    r%   r#   <module>rF      s          5 5 E E D   D
 
 "&AEHHHH&H6>H H #+H 	Hr%   