
    Q-j{                         d dl mZ d dlmZmZmZmZ d dlmZ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m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)arctanisnannan
zeros_like)	DataFrameSeries)DictLikeIntIntFloat)Imports)v_offsetv_pos_defaultv_seriesv_talibT)cachec                 4   dd| j                   }}}d\  }}}	t        |       }
t        |       t        |       }}t        |       t        |       }}t        |       t        |       }}t        |       t        |       }}t        |       t        |       t        |       }}}t        |       t        |       }}t        |       t        |       }}t        d|      D ],  }d||dz
     z  dz   }d| |   z  d	| |dz
     z  z   d
| |dz
     z  z   d| |dz
     z  z   |
|<   |||
|   z  ||
|dz
     z  z   ||
|dz
     z  z
  ||
|dz
     z  z
  z  ||<   ||||   z  |||dz
     z  z   |||dz
     z  z
  |||dz
     z  z
  z  ||<   ||dz
     ||<   ||||   z  |||dz
     z  z   |||dz
     z  z
  |||dz
     z  z
  z  ||<   ||||   z  |||dz
     z  z   |||dz
     z  z
  |||dz
     z  z
  z  ||<   ||   ||   z
  ||<   ||   ||   z   ||<   |||   z  d|z
  ||dz
     z  z   ||<   |||   z  d|z
  ||dz
     z  z   ||<   ||   ||dz
     z  ||   ||dz
     z  z   ||<   ||   ||dz
     z  ||   ||dz
     z  z   ||<   |||   z  d|z
  ||dz
     z  z   ||<   |||   z  d|z
  ||dz
     z  z   ||<   ||   dk7  r#||   dk7  rdt        ||   ||   z        z  ||<   nd||<   ||   d||dz
     z  kD  rd||dz
     z  ||<   ||   d||dz
     z  k  rd||dz
     z  ||<   ||   dk  rd||<   ||   dkD  rd||<   |||   z  d|z
  ||dz
     z  z   ||<   |||   z  |	||dz
     z  z   ||<   ||   dk7  rt        ||   ||   z        ||<   ||dz
     ||   z
  }|dk  rd}||z  ||<   ||   |kD  r|||<   ||   |k  r|||<   ||   | |   z  d||   z
  ||dz
     z  z   ||<   d||   z  ||   z  dd||   z  z
  ||dz
     z  z   ||<   / t        t        c|d | |d | ||fS )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                                d/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/overlap/mama.pynb_mamar=      s   faff!qA)Ca=DmZ]B]JqMB]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1tAw;T!a%[#@1tAPQE{?#RUVY]^_bc^cYdUd#de1  1r!u9q2a!e9}#<q2a!e9}#LqSUVWZ[V[S\}#\]11q5	1  1r!u9q2a!e9}#<q2a!e9}#LqSUVWZ[V[S\}#\]11r!u9q2a!e9}#<q2a!e9}#LqSUVWZ[V[S\}#\]1 111111 b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	"Ws1q5z%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                 B   t        | d      } | yt        |d      }t        |d      }t        |d      }t        |      }t        |      }| j	                         }t
        d   r|rddlm}	  |	|||      \  }
}nt        ||||      \  }
}t        t        |
            st        t        |            ryd	| d	| }d
| |
d| |i}t        || j                        }d
| |_        d|_        |dk7  r|j                  |      }d|v r|j!                  |d   d       |S )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   `   s8   B UAE}i-Ii.I61%Fu~HfF ~~HwH(Iy9
dXy)VD
d
5;3uT{+ 1YK(F6(OTT&?D9D	4u{{	+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>   