
    Q-j
                         d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	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fdZy)    )nan)Series)DictLikeInt)ma)non_zero_rangev_driftv_mamodev_offsetv_pos_defaultv_seriesNcloselengthfastslowmamodedriftoffsetkwargsreturnc                 B   t        |d      }t        |d      }t        |d      }t        | t        |||            } | yt        |d      }t	        |      }t        |      }dt        dt        fd} ||      }	 ||      }
t        | | j                  |            j                         }t        | | j                  |            j                         }|j                  |      j                         }||z  }||	|
z
  z  |
z   }||z  }| j                  }t        || j                  d| fd|i|j                  d	   }t!        d
|dz
        D cg c]  }t"        
 c}|gz   }t!        ||      D ]L  }|j%                  |j&                  |   | j&                  |   z  d|j&                  |   z
  ||dz
     z  z          N t)        || j*                        }|d
k7  r|j                  |      }d|v r|j-                  |d   d       d| d| d| |_        d|_        |S c c}w )a  Kaufman's Adaptive Moving Average

    This indicator, by Perry Kaufman, attempts to find the overall trend by
    adapting to volatility.

    Sources:
        * [stockcharts](https://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:kaufman_s_adaptive_moving_average)
        * [tradingview](https://www.tradingview.com/script/wZGOIz9r-REPOST-Indicators-3-Different-Adaptive-Moving-Averages/)

    Parameters:
        close (Series): ```close``` Series
        length (int): The period. Default: ```10```
        fast (int): Fast MA period. Default: ```2```
        slow (int): Slow MA period. Default: ```30```
        mamode (str): See ```help(ta.ma)```. Default: ```"sma"```
        drift (int): Difference amount. Default: ```1```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (Series): 1 column
    
         Nsmar   r   c                     d| dz   z  S )Nr       )r   s    d/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/overlap/kama.pyweightzkama.<locals>.weight<   s    FQJ    r   r   )indexfillnaT)inplaceKAMA__overlap)r   r   maxr
   r	   r   intfloatr   shiftabsrollingsumsizer   ilocranger   appendiatr   r#   r$   namecategory)r   r   r   r   r   r   r   r   r    frsrabs_diff	peer_diffpeer_diff_sumerxscmma0r'   resultikamas                          r   rC   rC      s,   < 62&Fq!Dr"DUCdF34E}fe$FENEfF s  u   
B	BeU[[%89==?Huekk%&89==?I%%f-113M	M	!B
b2gA	
QB

A
VUZZ(
B
B6
B
G
G
KC FQJ/0/ac/0C58F61bffQi%))A,.266!9}q1u-. 	/  &,D {zz&! 6F8$d3 xqav.DIDMK' 1s   H)NNNNNN)numpyr   pandasr   pandas_ta._typingr   r   pandas_ta.mar   pandas_ta.utilsr   r	   r
   r   r   r   strrC   r   r!   r   <module>rJ      s      +   FJ%)MMM-0M?BMM"M M #+M 	Mr!   