
    i{                         S SK Jr  S SKJrJrJrJr  S SKJrJ	r	  S SK
JrJrJr  S SKJr  S SKJrJrJrJr  \" SS9S	 5       r   SS\	S\S\S\S\S\S\S\	4S jjrg
)    )njit)arctanisnannan
zeros_like)	DataFrameSeries)DictLikeIntIntFloat)Imports)v_offsetv_pos_defaultv_seriesv_talibT)cachec                 (   SSU R                   penSu  pxn	[        U 5      n
[        U 5      [        U 5      p[        U 5      [        U 5      p[        U 5      [        U 5      nn[        U 5      [        U 5      nn[        U 5      [        U 5      [        U 5      nnn[        U 5      [        U 5      nn[        U 5      [        U 5      nn[        SU5       GH)  nSUUS-
     -  S-   nSU U   -  S	U US-
     -  -   S
U US-
     -  -   SU US-
     -  -   U
U'   UXJU   -  XZUS-
     -  -   XZUS-
     -  -
  XJUS-
     -  -
  -  UU'   UXKU   -  X[US-
     -  -   X[US-
     -  -
  XKUS-
     -  -
  -  UU'   UUS-
     UU'   UXMU   -  X]US-
     -  -   X]US-
     -  -
  XMUS-
     -  -
  -  UU'   UUUU   -  UUUS-
     -  -   UUUS-
     -  -
  UUUS-
     -  -
  -  UU'   UU   UU   -
  UU'   UU   UU   -   UU'   X~U   -  SU-
  UUS-
     -  -   UU'   UUU   -  SU-
  UUS-
     -  -   UU'   UU   UUS-
     -  UU   UUS-
     -  -   UU'   UU   UUS-
     -  UU   UUS-
     -  -   UU'   UUU   -  SU-
  UUS-
     -  -   UU'   UUU   -  SU-
  UUS-
     -  -   UU'   UU   S:w  a$  UU   S:w  a  S[        UU   UU   -  5      -  UU'   OSUU'   UU   SUUS-
     -  :  a  SUUS-
     -  UU'   UU   SUUS-
     -  :  a  SUUS-
     -  UU'   UU   S:  a  SUU'   UU   S:  a  SUU'   UUU   -  SU-
  UUS-
     -  -   UU'   UUU   -  XUS-
     -  -   UU'   UU   S:w  a  [        UU   UU   -  5      UU'   UUS-
     UU   -
  nUS:  a  SnUU-  UU'   UU   U:  a  UUU'   UU   U:  a  UUU'   UU   U U   -  SUU   -
  UUS-
     -  -   UU'   SUU   -  UU   -  SSUU   -  -
  UUS-
     -  -   UU'   GM,     [        [        sUS U& US U& UU4$ )Ng-?g.!u?)皙?gQ?q=
ףp?   g333333?   gHzG?g?g333333?r      g?      g        ih  r   g      ?r   2         ?)sizer   ranger   r   )x	fastlimit	slowlimitprenanabmp_wsmp_wsmp_w_cwma4dtsmpi1i2jijqq1q2reimalphaperiodphasemamafamaiadj_prev_perioddphases                                Q/var/www/html/trading/venv/lib/python3.13/site-packages/pandas_ta/overlap/mama.pynb_mamar=      s   faff!A)Ca=DmZ]]JqM]JqMB]JqMBqM:a=*Q-EBqM:a=EFA
1$D 1a[&Q-/$6 !*sQq1uX~-aAh>qQxOQ1Aw;!a%[#@1APQE{?#RUV^_bc^cYdUd#de1  1!u9qa!e9}#<qa!e9}#LqVWZ[V[S\}#\]11q5	1  1!u9qa!e9}#<qa!e9}#LqVWZ[V[S\}#\]11r!u9q2a!e9}#<q2a!e9}#LqSUVWZ[V[S\}#\]1 111111 eq3w"QU)331beq3w"QU)331 11q5	!BqEBq1uI$55111q5	!BqEBq1uI$551 beq3w"QU)331beq3w"QU)331a5C<BqESLfRURU]33F1IF1I!9sVAE]**fQUm+F1I!9tfQUm++va!e},F1I!9q=F1I!9r>F1I&)Oq3w&Q-&??q	"W1q5z%99Aa5C<bebem,E!Hq1ua(A:Fv%a8i E!H8i E!H(QqT/Qq\T!a%[$@@Qa.47*a#a..@DQK-OOQ} @ $' D&M4=:    Ncloser    r!   r"   taliboffsetkwargsreturnc                 Z   [        U S5      n U c  g[        US5      n[        US5      n[        US5      n[        U5      n[        U5      nU R	                  5       n[
        S   (       a  U(       a  SSKJn	  U	" XU5      u  pO[        XX#5      u  p[        [        U
5      5      (       d  [        [        U5      5      (       a  gS	U S	U 3nS
U 3U
SU 3U0n[        XR                  S9nS
U 3Ul        SUl        US:w  a  UR                  U5      nSU;   a  UR!                  US   SS9  U$ )a  MESA Adaptive Moving Average

This indicator, aka the Mother of All Moving Averages by John Ehlers,
attempts to adapt to volatility by using a Hilbert Transform Discriminator

Sources:
    * [Ehlers's Mother of Adaptive Moving Averages](http://traders.com/documentation/feedbk_docs/2014/01/traderstips.html)
    * [tradingview](https://www.tradingview.com/script/foQxLbU3-Ehlers-MESA-Adaptive-Moving-Average-LazyBear/)

Parameters:
    close (Series): ```close``` Series
    fastlimit (float): Fast limit. Default: ```0.5```
    slowlimit (float): Slow limit. Default: ```0.05```
    prenan (int): Prenans to apply. TV-LB ```3```, Ehler's ```6```,
        TA Lib ```32```. Default: ```3```
    talib (bool): If installed, use TA Lib. Default: ```True```
    offset (int): Post shift. Default: ```0```

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

Returns:
    (DataFrame): 2 columns

Tip:
    **FAMA** also included
r   Nr   g?r   r@   r   )MAMA_rE   FAMA)indexoverlapfillnaT)inplace)r   r   r   r   to_numpyr   r@   rE   r=   allr   r   rH   namecategoryshiftrJ   )r?   r    r!   r"   r@   rA   rB   mode_talnp_closerE   r7   r8   _propsdatadfs                  r<   r7   r7   `   s4   B UAE}i-Ii.I61%Fu~HfF ~~HwH(y9
dX)D

5;3uT{++ 1YK(F6(OTT&?D9D	4{{	+BVHoBGBK {XXf 6
		&"D	1Ir>   )NNNNN)numbar   numpyr   r   r   r   pandasr   r	   pandas_ta._typingr
   r   r   pandas_ta.mapsr   pandas_ta.utilsr   r   r   r   r=   boolr7    r>   r<   <module>r^      s     0 0 $ 5 5 " F F DO Of FJ&*GG&G:BGG#G G #+G 	Gr>   