
    Q-j:                         d dl mZ d dl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 d dlmZ d dlmZmZ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dededededede
fdZy)    )njit)isnannan
zeros_like)	DataFrameSeries)DictLikeIntIntFloat)rsi)atr)mfi)v_mamodev_offsetv_pos_defaultv_seriesv_strv_talibT)cachec                     |j                   }t        |       }t        d|      D ]L  }||   r#| |   ||dz
     k  r||dz
     ||<   "| |   ||<   +||   ||dz
     kD  r||dz
     ||<   E||   ||<   N t        |d<   |S )N   r   )sizer   ranger   )low_atrhigh_atrmomo_thresholdmresultis         h/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/trend/alphatrend.pynb_alphar!      s    A F1a[!qzF1q5M)"1q5Mq	#AJq	{VAE]*"1q5Mq	$QKq	  F1IM    Nopen_highlowclosevolumesrclength
multiplier	thresholdlagmamodetaliboffsetkwargsc                 &   t        |d      }t        | |      } t        ||      }t        ||      }t        ||      }| |||y| |||d}t        |d      }||j                         v r|nd}t        |d      }t        |d      }t        |	d      }	t	        |
d      }
t        |      }t        |      }|t        |      }|yt        |||||
|	      }|t        t        |            ry|||z  z
  }|||z  z   }d}|t        ||   ||
|
      }nt        ||||||      }|y|j                         |j                         }}t        |||j                         |k\        }t        ||j                        }|j!                  |	      }t        t        |            st        t        |            ry|dk7  r"|j!                  |      }|j!                  |      }d|v r,|j#                  |d   d       |j#                  |d   d       d| d| d| }d| |_        d| d|	 |_        dx|_        |_        |j$                  ||j$                  |i}t)        ||j                        }|j$                  |_        |j&                  |_        |S )a  Alpha Trend

    This indicator attempts to filter sideways movement for accurate signals.

    Sources:
        * [OnlyFibonacci](https://github.com/OnlyFibonacci/AlgoSeyri/blob/main/alphaTrendIndicator.py)
        * [tradingview](https://www.tradingview.com/script/o50NYLAZ-AlphaTrend/)

    Parameters:
        open_ (Series): ```open``` Series
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        close (Series): ```close``` Series
        volume (Series): ```volume``` Series. Default: ```None```
        src (str): One of: "open", "high", "low" or "close".
            Default: ```"close"```
        length (int): ATR, MFI, or RSI period. Default: ```14```
        multiplier (float): Trailing ATR multiple. Default: ```1```
        threshold (float): Momentum threshold. Default: ```50```
        lag (int): Lag period of main trend. Default: ```2```
        mamode (str): See ```help(ta.ma)```. Default: ```"sma"```
        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
       N)openr$   r%   r&   r&   r   2      sma)r$   r%   r&   r)   r-   r.   )r&   r)   r-   r.   )r$   r%   r&   r'   r)   r.   )indexr   fillnaT)inplace_ALPHATALPHATltrend)r   r   r   keysr   r   r   r   allr   r   r   to_numpyr!   r   r7   shiftr8   namecategoryr   )r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   _srcmode_talatr_	lower_atr	upper_atrmomonp_upper_atrnp_lower_atratatl_propsdatadfs                              r    
alphatrendrQ   )   s   N 62&FUF#ED&!D
3
CUF#E}u}4eDD
W
C		##Cz1-Ji,I
Q
Cfe$Fu~HfF&!> s%XD
 |s5;'dZ''Itj((ID~c6&Q3eF

 |!*!3!3!5y7I7I7K,L	,dmmo.J	KB	%++	&B
((3-C
59~U3Z {XXfii 6
		&"D	1

6(#T
2 *Qyk2FvhBG#'CH!((BK#,GGR3'D	4u{{	+BggBG++BKIr"   )	NNNNNNNNN)numbar   numpyr   r   r   pandasr   r   pandas_ta._typingr	   r
   r   pandas_ta.momentumr   pandas_ta.volatilityr   pandas_ta.volume.mfir   pandas_ta.utilsr   r   r   r   r   r   r!   strintboolrQ    r"   r    <module>r^      s     ( ( $ 5 5 " $ $  D , '+/3+/&*xxx&,x5;xx #x x %-x 	x &)	x
 x
  $x x #+xr"   