
    Q-j                         d dl mZ d dlmZmZ d dlmZ d dl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fdZy
)    )njit)float64
zeros_like)Series)DictLikeInt)v_offsetv_pos_defaultv_seriesv_strT)cachec                     | j                   dd|z  z
  }}t        | t              }| d   |d<   t        d|      D ]  }t	        d| |   ||dz
     |z        ||<     |S Ng      ?)dtyper      sizer   r   rangemaxxnmrateresultis         c/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/trend/decay.pynb_exponential_decayr      sj    ffcS1WotA)F!F1I1a[1Q4A!56q	  M    c                     | j                   d|z  }}t        | t              }| d   |d<   t        d|      D ]  }t	        d| |   ||dz
     |z
        ||<     |S r   r   r   s         r   nb_linear_decayr!      sf    ffcAgtA)F!F1I1a[1Q4A!56q	  Mr   Ncloselengthmodeoffsetkwargsreturnc                    t        | |      } | yt        |d      }t        |d      }t        |      }d| j	                         }}|dv rd}t        ||      }nt        ||      }t        || j                        }|dk7  r|j                  |      }d	|v r|j                  |d	   d
       | d| |_        d|_        |S )a$  Decay

    This function creates a decay moving forward from prior signals.

    Sources:
        * [tulipindicators](https://tulipindicators.org/decay)

    Parameters:
        close (Series): ```close``` Series
        length (int): The period. Default: ```1```
        mode (str): Either ```"linear"``` or ```"exp"``` (exponetional)
            Default: ```"linear"```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (Series): 1 column
    Nr   linearL)expexponentialEXP)indexr   fillnaT)inplaceDECAY_trend)r   r
   r   r	   to_numpyr   r!   r   r.   shiftr/   namecategory)r"   r#   r$   r%   r&   _modenp_closer   s           r   decayr9   &   s    2 UF#E}61%Fx DfF 5>>+8E%%%h7 62F%++.F {f% 6fX&5 G6&*FKFOMr   )NNN)numbar   numpyr   r   pandasr   pandas_ta._typingr   r   pandas_ta.utilsr	   r
   r   r   r   r!   strr9    r   r   <module>rA      s     %  + D D
 D	 	 D	 	 48999-099"*9 9r   