
    Q-jZ                        d dl mZ d dl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 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 d dl d dl dej6                  _         ed       G d de             Zy)    )	dataclass)	cpu_countPool)Path)perf_counter)simplefilter)loglog10ndarray)register_dataframe_accessor)PerformanceWarning)	DataFrameSeries)options)tqdm)*Ttac                      e Zd ZdZdZ e       ZdZ e       Z	e
d   rdndZdZ eed      ZdZd	efd
Z	 	 ddedededefdZedefd       Zej0                  deddfd       Zedefd       Zej0                  deddfd       Zedefd       Zej0                  deddfd       Zedefd       Zej0                  deddfd       Z	 ddededefdZ	 ddededefdZ d Z!d e"ez  dz  fd!Z#dede$fd"Z%d#e&fd$Z'de"ez  dede"ez  fd%Z(d&e)de&fd'Z*	 	 dd(ed)e+d*ed+ed,edefd-Z,de-fd.Z.d/ed0e/e$z  de0dz  fd1Z1defd2Z2dd3edde3z  fd4Z4dd5ed6e-de3e-z  fd7Z5defd8Z6dd9Z7d&e)dede8fd:Z9	 	 	 dd;ed<ed=ed>e:d?e;dedefd@Z<ddAZ=ddefdBZ>ddCZ?ddDZ@ddEZAddFZBddGZCddHZDddIZEddJZFddKZGddLZHddMZIddNZJddOZKddPZLddQZMddRZNddSZOddTZPddUZQddVZRddWZSddXZTddYZUddZZVdd[ZWdd\ZXdd]ZYdd^ZZdd_Z[dd`Z\ddaZ]ddbZ^ddcZ_dddZ`ddeZaddfZbddgZcddhZdddiZeddjZfddkZgddlZhddmZiddnZjddoZkddpZlddqZmddrZnddsZoddtZpdduZqddvZrddwZsddxZtddyZuddzZvdd{Zwdd|Zxdd}Zydd~ZzddZ{ddZ|ddZ}ddZ~ddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddÄZddĄZddńZddƄZddǄZddȄZddɄZddʄZdd˄Zdd̄Zdd̈́Zdd΄ZddτZddЄZddфZdd҄ZddӄZddԄZddՄZddքZddׄZd؄ ZddلZddڄZddۄZdd܄Zdd݄Zy)AnalysisIndicatorsa  Pandas DataFrame Extension: "ta"

    The "ta" extension simplifies the processing of concatenating
    Technical Analysis indicators onto the existing Pandas DataFrame.
    To do so, this extension assumes that the DataFrame includes a DateTime
    oriented index and columns named: "open", "high", "low", "close", "volume".

    Returns:
        (Series | DataFrame | None): See Notes

    Features:
        * Attributes and methods for _ohlcv_ data.
        * Indicator Wrappers for each. Simplifies
            ```sma = ta.sma(df["Close"]); df["sma"] = sma``` to ```df.ta.sma(append=True)```
        * A ```study``` method, that simplifies processing multiple indicators
            with or without multiprocessing. See: ```help(ta.study)```

    See Also:
        * Pandas TA [DataFrame Extension](http://127.0.0.1:8000/docs/api/dataframe/) Documention
        * [Pandas DataFrame Accessor](https://pandas.pydata.org/docs/reference/api/pandas.api.extensions.register_dataframe_accessor.html#pandas.api.extensions.register_dataframe_accessor)

    Notes:
        Most Indicators will return a Pandas Series. Others like MACD,
        BBANDS, KC, et al will return a Pandas DataFrame. Ichimoku on the
        other hand will return two DataFrames, the Ichimoku DataFrame for
        the known period and a Span DataFrame for the future of the Span values.

        Documentation is formatted for [mkdocs](https://www.mkdocs.org/) and [mkdocs-docstrings](https://mkdocstrings.github.io/).

    Tip:
        Remember to adjust the ```cores``` for maximum speed!
    NyfinanceyfNYSET	to_stringyearsobjc                 `    t        |       || _        t        | j                  d      | _        y )NTr   )v_dataframe_dfget_time	_exchange	_last_run)selfr   s     \/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/core.py__init__zAnalysisIndicators.__init__D   s#    C!$..DA    kindtimedversionkwargsc                 z   |rt        d|        	 t        |t              r{|j                         }t	        | |      }|r
t               } |di |}|r+t              |_        t        d| d|j                          t        | j                  d      | _
        |S | j                          y # t        $ r Y y w xY w)N-Pandas TA - Technical Analysis Indicators - vz[+] : Tr    )print
isinstancestrlowergetattrr   
final_timer(   r    exchanger"   helpBaseException)r#   r'   r(   r)   r*   fnstimeresults           r$   __call__zAnalysisIndicators.__call__K   s     A'KL	$$zz|
 T4((NE f#-e#4FLDb78!)$--4!H		 		s   B
B. B. .	B:9B:returnc                     | j                   S )zGet/Set the **adjusted_close** column.

        Parameters:
            name (str): The column ```name```, to set as the *adjusted*
                column. Default: ```None```

        Returns:
            (str): The *adjusted* column.
        )	_adjustedr#   s    r$   adjustedzAnalysisIndicators.adjustedo   s     ~~r&   namec                 F    |t        |t              r|| _        y d | _        y N)r0   r1   r>   r#   rA   s     r$   r@   zAnalysisIndicators.adjusted}   s    
4 5!DN!DNr&   c                     | j                   S )a  Manage the number of ```cpus``` to utilize for multiprocessing.

        Parameters:
            cpus (Int): Number of ```cores``` Default: ```cpu_count()```

        Returns:
            (Int): The number of ```cores``` set for multiprocessing

        !!! tip "Disable multiprocessing"
            Set: ```df.ta.cores = 0```

        !!! warning "Multiprocessing caveats"
            * Multiprocessing **will not** work when using the following keys: ```"col_names"```.
            * Multiprocessing **may not** work or complete as expected when indicator _chaining_.
                * Chained indicators use non-default, _ohlcv_, sources as input Series.
        )_coresr?   s    r$   coreszAnalysisIndicators.cores   s    $ {{r&   cpusc                     t               }|7t        |t              r'd|cxk  r|k  rn nt        |      | _        y || _        y || _        y )Nr   )r   r0   intrF   )r#   rH   _cpuss      r$   rG   zAnalysisIndicators.cores   s<    
4 5'(D'9E'9#d)DKuDKDKr&   c                     | j                   S )a6  A label property of the major _exchange_ the _ohlcv_ data is
        associated with.

        Parameters:
            value (str):  The ```exchange```.  Must be one of the following
                ```ta.EXCHANGE_TZ.keys()```. Default: ```"NYSE"```

        Returns:
            (str): Exchange label
        )r!   r?   s    r$   r5   zAnalysisIndicators.exchange   s     ~~r&   valuec                 h    |0t        |t              r|t        j                         v r|| _        y y y y rC   )r0   r1   EXCHANGE_TZkeysr!   r#   rM   s     r$   r5   zAnalysisIndicators.exchange   s4    E3!7E[EUEUEW<W"DN =X!7r&   c                 B    t        | j                  | j                        S )a  Useful for annualization.

        Parameters:
            value (str): ```"months", "weeks", "days", "hours", "minutes",
                "seconds"```. Default: ```"years"```

        Returns:
            (float): Time elapsed between the first and last DateTimeIndex
        )
total_timer   _time_ranger?   s    r$   
time_rangezAnalysisIndicators.time_range   s     $((D$4$455r&   c                 F    |t        |t              r|| _        y d| _        y )Nr   )r0   r1   rT   rQ   s     r$   rU   zAnalysisIndicators.time_range   s!    E3!7$D&Dr&   r:   c                    |ydx}}|j                  dd      }d|v r	|d    | }d|v r	| |d    }t        |t              r||j                  z   |z   |_        y|j                  D cg c]
  }||z   |z    c}|_        yc c}w )z.Add prefix and/or suffix to the result columnsN 	delimiter_prefixsuffix)
setdefaultr0   r   rA   columns)r#   r:   r*   r[   r\   rY   columns          r$   _add_prefix_suffixz%AnalysisIndicators._add_prefix_suffix   s     >  FV))+s;I6!"8,-i[96!%;vh'7&89&&)$v{{2V;IO!Xv&6/F":!X!Xs   *Bc                    |yd|v rt        |d   t              s	|d   f|d<   | j                  }t        |t              rt	        dt
               dt        j                  _        d|v rt        |d   t              rt        |d         t        |j                        k\  r8t        |j                  |d         D ]  \  }}|j                  dd|f   ||<    yt        dt        |d          dt        |j                         d       yt        |j                        D ])  \  }}|j                  dd|f   |j                  dd|f<   + yd|v rt        |d   t              r|d   d   n|j                   }||j                  dd|f<   y)	z9Appends a Pandas Series or DataFrame columns to self._df.N	col_namesignore)actioncategoryz.[!] Not enough col_names were specified : got z, expected .r   )r0   tupler   r   r   r   
pd_optionsmodechained_assignmentlenr^   ziplocr/   	enumerateilocrA   )r#   r:   r*   dfcolind_nameir_   s           r$   _appendzAnalysisIndicators._append   s    >6& F;4G)O#)+#6"8F;XXfi(3EF15JOO. f$F;4G)Ovk*+s6>>/BB),V^^VK=P)QX'-zz!S&'98 *R J3vVaObKcJddopstz  uC  uC  qD  pE  EF  G  H!*6>>!:IAv*0++ad*;BFF1v;' ";
 &(Z{8KU-S {#A&[[ 
 %+BFF1x=!r&   c                     | j                   j                  D cg c]+  }t        | j                   |   j                               s*|- c}S c c}w )z4Returns the columns in which all it's values are na.)r   r^   allisna)r#   xs     r$   _check_na_columnsz$AnalysisIndicators._check_na_columns  s>    88++G+as488A;3C3C3E/F+GGGs   +AAseriesc                 X   | j                   }|yt        |t              r|S || j                  || j                     S dS t        |t              r||j
                  v r||   S |j
                  j                  j                  |d      }t        |      D cg c]
  \  }}|s	| }}}d| d}dj                  t        |j
                              }t        |j
                        r	|d| z  }n|dz  }t        |      r|j                  dd|d	   f   S t        |       yyc c}}w )
z=Attempts to get the correct series or 'column' and return it.NF)casez	[X] The 'z' column was not found in, r-   z the DataFramer   )r   r0   r   r@   r1   r^   matchrn   joinlistrk   ro   r/   )	r#   rz   rp   matchesrs   rx   r~   	NOT_FOUNDcolss	            r$   _get_columnzAnalysisIndicators._get_column
  s!   XX:v ff%M^(,(A2dmm$KtK$#&z! **....vE.B'0'9?'9tq!Q'9?'x/HI	yybjj!12rzz?I2dV$<I$-1A$AIu:771eAh;//)$' % @s   
D&$D&c                 <    || j                         v r	t        |   S dS )z'Returns indicators by Categorical name.N)
categoriesCategoryrD   s     r$   _indicators_by_categoryz*AnalysisIndicators._indicators_by_category,  s    !%):!:x~DDr&   	argumentsc                 f    |\  }}}|dk7  r t        | |      |i |S  t        | |      |i |d   S )z3Multiprocessing Worker to handle different Methods.ichimokur   )r3   )r#   r   methodargsr*   s        r$   
_mp_workerzAnalysisIndicators._mp_worker1  sM    (fZ(74($9&99(74($9&9!<<r&   c                    |j                  dd      }t        |t        t        f      s|rt	        d       | j
                  S t        |t              r6d|v r2|d   -|j                  dd|d   D cg c]  }t        |       c}f   n|} | j                  dd|i| d|v r9t        |d   t              r&|d   st	        |       |S  | j                  dd|i| |S c c}w )	zApplies any additional modifications to the DataFrame

        * Applies prefixes and/or suffixes
        * Appends the result to main DataFrame
        verboseFz,[X] The result is not a Series or DataFrame.col_numbersNr:   appendr.   )popr0   r   r   r/   r   ro   rJ   r`   boolrt   )r#   r:   r*   r   ns        r$   _post_processz AnalysisIndicators._post_process;  s     **Y.&69"56DF88O fi0'}%1 A}0EF0E1A0EFFG 8>	  $D##<6<V<6!j1A4&Hh' &M  !DLL99&9!  Gs   0Cr   c                 ,   d}dddd}t        |      dk(  r	d|d<   ||fS | j                         }t        |d   t              r>|d   j	                         dk(  r|dc}|d<   |d   j	                         |v r|d   dc}|d<   t        |d   t
              r~|d   }|j                  |j                  j	                         dk(  r|dc}|d<   ||fS |j                  j	                         |v r|j                  dc}|d<   ||fS |j                  dc}|d<   ||fS )	z$Returns tuple: (name:str, mode:dict)AllF)rv   re   customr   Trv   re   r   )rk   r   r0   r1   r2   Studyr   rA   )r#   r   rA   ri   _categoriesstudy_s         r$   _study_modezAnalysisIndicators._study_mode_  sA   %5At9>DK$ Tz! //+K$q'3'7==?e+(,d%D$u+7==?k1-1!Wd*D$z*$q'5)a99$(9(9(;u(D(,d%D$u+ Tz [[&&(K7-3[[$*D$z* Tz ,2;;(D$x.Tzr&   zeroindexkto_logsavec                    | j                  d      }| j                  d      }| j                  d      }| j                  d      }	t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }|| j                  j
                  d   k\  r| j                  j
                  d   dz
  }|rj|r<|| j                  d<   || j                  d	<   || j                  d
<   |	| j                  d<   t        |      }t        |      }t        |      }t        |	      }	||z  |j                  |   z  | j                  j                  dd|j                  f<   ||z  |j                  |   z  | j                  j                  dd|j                  f<   ||z  |j                  |   z  | j                  j                  dd|j                  f<   ||	z  |	j                  |   z  | j                  j                  dd|	j                  f<   |r| j                  j                  dd|j                  fxx   |z  cc<   | j                  j                  dd|j                  fxx   |z  cc<   | j                  j                  dd|j                  fxx   |z  cc<   | j                  j                  dd|	j                  fxx   |z  cc<   yy)a  baseline

        This method updates the DataFrame _ohlc_ values with a baseline
        of ```k=1```. Useful for comparisons.

        Parameters:
            zero (bool): Zero the _ohlc_ data.
            index (bool): Index to baseline at.
            k (IntFloat): Scaler.
            to_log (bool): Pre apply ```np.log```.
            save (bool): Preserve _ohlc_ when using ```to_log```.
        openhighlowcloseFr      _open_high_low_closeN)
r   v_boolv_pos_defaultv_scalarr   shaper	   ro   rm   rA   )
r#   r   r   r   r   r   open_r   r   r   s
             r$   baselinezAnalysisIndicators.baseline{  sD       ('u%  )dE"eQ'QN&dE"DHHNN1%%HHNN1%)E$)!$(!#& %*"JEt9Dc(CJE()E	EJJu4E(EQ_%'(4x$))E2B'BQ^$&'#g&?Q]#()E	EJJu4E(EQ_%HHLLUZZ)Q.)HHLLTYY(A-(HHLLSXX'1,'HHLLUZZ)Q.)	 r&   c                 <    t        t        j                               S )z{categories

        List of categories.

        Returns:
            (ListStr): List of the indicator categories.
        )r   r   rP   r?   s    r$   r   zAnalysisIndicators.categories  s     HMMO$$r&   r   valuesc                    t        |t              st        |t              r_|rG|D ]  }|| j                  | <    | j                  | j                  j                  t        |       d    S |D ]  }| j                  | =  yy)a  constants

        Concatenate / Drop constant(s) to the DataFrame.

        Parameters:
            append (bool): Concatenate if ```True```. Drop if ```False```.
                Default: ```None```
            values (Array): List/Numpy array of ```values``` to append/drop from
                the DataFrame.

        Returns:
            (Series, DataFrame, None): Depends upon parameters.

        See Also:
            * [TA DataFrame Constants](../support/how-to.md)
        N)r0   r   r   r   r^   rk   )r#   r   r   rx   s       r$   	constantszAnalysisIndicators.constants  sx    " fg&*VT*BA'(DHHs$  xx 0 0#f+ ?@@AA3(   +Cr&   c                 ,    t        | j                        S )zdatetime_ordered

        DataFrame DateTime ordered?

        Returns:
            (bool): ```True``` if the DataFrame is DateTime ordered,
                otherwise ```False```.
        )v_datetime_orderedr   r?   s    r$   datetime_orderedz#AnalysisIndicators.datetime_ordered  s     "$((++r&   sc                     t        |      S )a  help

        Help!

        Parameters:
            s (str): String to search for. Default: ```""```

        Returns:
            (None | TextIO): Opens web browser to relevant Pandas TA website
                page or prints all search keywords.
        )r6   )r#   r   s     r$   r6   zAnalysisIndicators.help  s     Awr&   as_listexcludec                    t        |t              rt        |      nd}g }t        |t              rt        |      r|}g d}g d}t        d t	        t               j                        D              }||z   }t        |t              rt        |      dkD  r||z  }|D cg c]  }|j                  |       c} |r|S t        |      }	dt         }
|
 dd}}|	dkD  raddl	m
} |d	|	 d
dj                  |       dz  }||	z  }t        d   r2|dt        |       d
dj                  |       dz  }|t        |      z  }|d| z  }t        |       yc c}w )a`  indicators

        List indicators.

        Parameters:
            as_list (bool): Return as a list. Default: ```False```
            exclude (ListStr): The passed in list will be excluded
                from the indicators list. Default: ```None```

        Returns:
            (TextIO | ListStr): Prints list or returns a ```ListStr```.
        F)r   r   r   r   r6   
indicatorslast_runreversestudytickerto_utc)r@   rG   r5   rU   c              3   h   K   | ]*  }|j                  d       r|j                  d       r'| , yw)rZ   N)
startswithendswith).0rx   s     r$   	<genexpr>z0AnalysisIndicators.indicators.<locals>.<genexpr>  s.     n)<AALLQTDU^_^h^hil^ma)<s   222r   r,   
)ALL_PATTERNSz
Indicators and Utilities [z]:
    r}   talibz
Candle Patterns [z*
Total Candles, Indicators and Utilities: N)r0   r   r   rk   dirr   r   remover)   pandas_ta.candle.cdl_patternr   r   Importsr/   )r#   r   r   user_excludeddf_ext_methodsta_propertiesta_indicatorsremovedrx   indicator_countheaderr   _countr   s                 r$   r   zAnalysisIndicators.indicators  su    $.gt#<$w-%gt$W#M

 nY[^^)<no !=0 mT*s=/AA/E}$G +22'Q		a	 '2  m,@	JhbM16QA//@S`IaHbbdeeAo%Fw*3|+<*=XdiiP\F]E^^`aa#l++	:6(CCa# 	3s   Ec                     | j                   S )zlast_run

        Detailed string of last run time.

        Returns:
            (str): Detailed date and time of the lastest run.
        )r"   r?   s    r$   r   zAnalysisIndicators.last_run;  s     ~~r&   c                 n    | j                   j                  ddd   j                  | j                   _        y)zzreverse

        Reverse the DataFrame inplace.

        Returns:
            (None): DataFrame reversed inplace.
        N)r   ro   r   r?   s    r$   r   zAnalysisIndicators.reverseF  s&     tt,22r&   c                    |j                  dd      }|j                  dd       |j                  dd      }|j                  d| j                        }|j                  d| j                        }|| _        | j                  j                  d   }g d	} | j
                  | \  }	}
|j                  d
g       }t        |t              rt        |      dkD  r|g}|
d   s|
d   r||z  }|
d   rD| j                  |	j                               }|D cg c]  }||v s|j                  |       c} n|
d   rpt        |d   d      rEt        |d   j                  t              r(t        |d   j                  | j                        | _        |d   j                  }|D ]  }d|d<   	 n%|
d   r| j!                  d|      }nt#        d       y|j                  dd      }|rFt#        d|	 d|        |
d   s|
d   r+dj%                  |      }t#        dt        |       d|        |j                  dd      }g }| j                  dkD  rdnd}d}|r
t'               }|rH|
d   rCt        |D cg c]  }d|v rt        |d   t(              rd c}      rdnd}|rd}t#        d       |r$t        |      }t+        | j                        5 }||kD  r|dz
  }n|dkD  r|}nt        t-        |            dz   }|r*t#        d| d| d| j                   dt/                d	       d}|
d   r|D cg c]*  }|d    d!|v rt        |d!   t(              r|d!   nd"i ||f, }}|r5t1        |j3                  | j4                  ||      t        |      |z  #      }n|j3                  | j4                  ||      }n|D cg c]  }|t)               |f }}t        |      |z  }|rI|r)t1        |j7                  | j4                  ||      |#      }nf|j7                  | j4                  ||      }nH|r)t1        |j9                  | j4                  ||      |#      }n|j9                  | j4                  ||      }|t#        d$|	 d%       	 ddd       y|j;                          |j%                          t=        | j>                  d&      | _         ddd       n!|rd'}|rd(}t#        |       |
d   r|rSt1        |d)      }|D ]A  }d!|v rt        |d!   t(              r|d!   n	t)               } tC        | |d          |i i || C n|D ]A  }d!|v rt        |d!   t(              r|d!   n	t)               } tC        | |d          |i i || C nm|r.t1        |d)      }|D ]  } tC        | |      t)               i |  n!|D ]  } tC        | |      t)               i |  t=        | j>                  d&      | _         |D  cg c]  }  | jD                  | fi | c}  | j                  j                  d   }!|!|z
  }"|r=t#        d*t        |              t#        d+|"        t#        d,| j@                          |rGtG              }#|"dkD  rt'               |z
  |"z  }$nt'               |z
  }$t#        d-|# d.|" d/|$d0z  d1d2       |r| j                  S yc c}w c c}w c c}w c c}w # 1 sw Y   xY wc c} w )3a  study

        Applies the ```ta``` listed in a [```Study```](studies.md).

        Other Parameters:
            chunksize (int): Multiprocessing Pool chunksize.
                Default: ```df.ta.cores```
            cores (int): Number of Multiprocessing cores.
                Default: ```df.ta.cores```
            exclude (ListStr): List of indicator names. Default: ```[]```
            ordered (bool): Run ```ta``` in order. Default: ```True```
            returns (bool): Return the DataFrame. Default: ```False```
            timed (bool): Print the process time. Default: ```False```
            verbose (bool): More verbose output. Default: ```False```

        Note: Multiprocessing
            Multiprocessing is **not** viable or efficient for some cases.
            Customize for production. See [Multiprocessing](https://docs.python.org/3.12/library/multiprocessing.html)
            for more information.
        orderedTr   returnsF	chunksizerG   r   )long_run	short_runtsignalsxsignalsr   rv   re   r   r   )r   r   z[X] Study not available.Nr   z[+] Study: z
[i] Indicator arguments: r}   z[i] Excluded[z]: r(   rb   zH[i] Multiprocessing is disabled (cores=0) when using custom "col_names".z[i] Multiprocessing z indicators with chunksize z and /z cpus.r'   paramsr.   )totalz[X] ta.study('z') has no results.r   z#[i] No multiprocessing. (cores = 0)z<[i] No multiprocessing support with the 'col_names' keyword.z[i] Progressz[i] Total indicators: z[i] Columns added: z[i] Last Run: z[i] Pandas TA Time: z for z columns (avg i  z2.4fz
 ms / col))$r   r]   rG   r   r   r   r0   r1   rk   r   r2   r   hasattrrJ   minr   r   r/   r   r   rg   r   r
   r   r   mapr   imapimap_unorderedr   r    r5   r"   r3   r   r4   )%r#   r   r*   all_orderedr   mp_chunksizerG   initial_column_countexcludedrA   ri   r   r   rx   kwdsr   excluded_strr(   resultsuse_multiprocessinghas_col_namesr9   	_total_tapool
_chunksizeind	custom_ta
default_ta
tqdm_total_col_msgpbarr   rfinal_column_count_added_columnsftavgtds%                                        r$   r   zAnalysisIndicators.studyQ  s*   * jjD1(D)**Y.zz+tzz:

7DJJ/
  $xx~~a0D &T%%t,
d 

9b1mS)c-.@1.D*OM;$z*%H 
--djjl;B#+78aqBwRYYq\87(^tAw(ZQs-K a

;
aB!%X %[x@B,.**Y.Kv%@IJE{d:.#yy2c(m_C~FG

7E*&*jj1nd% NE4>%( * !#
1[>5(I b* &T  
 &+#bdBIdjj!T  )+!-!1J!A%!-J!$U9%5!6!:J0;VWaVbbghlhrhrgsstu~  vA  uB  BH  I  J> "$	!% "$# F)1SZHW\=]Hce)3)&)" "$	  !% "&txxJ'W_bcl_mq{_{"|"&((4??Iz"RDF!GBS3"8BJ!G!$ZJ!>J""&*499T__jR\+]eo&pG&*iiZ&XG"&*4+>+>tPZ\f+goy&zG&*&9&9$//:Wa&bG?N4&0BCDU "!X 

		!)$--4!H] "!d @ !]HhH~l4D#2:c/jQTU]Q^`eFfXlqls2c&k2FP>O>O>OP  $  "2:c/jQTU]Q^`eFfXlqls2c&k2FP>O>O>OP  " l4D#*c*EG>v>  $  "*c*EG>v>  "!)$--4!H 3::'Q			A	(	(':!XX^^A.+.BB*3r7)45''789N4>>"234E"B!%%/>A$.(E.1APUX\P\]aObblmn88O O 8<*4!% "H7 "!Z 	;sK   	[[) [A"[(/[A[2[B5[<[/[!
[[r   periodintervalr   proxyc                 L   | j                   t        d       yt        |d      }t        |d      }t        |d      }t        |t              r|ni }t        |d      }d\  }}	| j                   dk(  rA|?d	dl}
|
j                  |      }|r
t               }	 |j                  d|||d
|}||_
        ny|r7t        |	      |_        t        d| |j                   d|j                          || _        |%t        |t              r | j                   |fd|i| | j                  S )at  ticker

        Download Historical _ohlcv_ data as a Pandas DataFrame if _yfinance_
        package is installed. It also can run a ```ta.Study``` afterwards.

        Parameters:
            ticker (str): Any string for a ticker you would use
                with ```yfinance```. Default: ```"SPY"```
            period (str): See the yfinance ```history()``` method for
                more options. Default: ```"max"```
            interval (str): Default: ```"1d"```
            study (ta.Study | str): After downloading, apply ```Study```
                Default: ```None```
            proxy (dict): Proxy dictionary. Default: ```{}```
            timed (bool): Print download time to stdout. Default: ```False```

        Returns:
            (DataFrame | None): _ohlcv_ ```df``` or ```None```

        Tip: YFinance ```history``` parameters
            * [_yfinance_](https://ranaroussi.github.io/yfinance/index.html)
            * _yfinance_ [```history()```](https://github.com/ranaroussi/yfinance/blob/main/yfinance/scrapers/history.py)

        Example:
            ```py
            import panadas as pd
            import pandas_ta as ta

            # Simple
            df = pd.DataFrame().ta.ticker("SPY", period="2y", timed=True)

            # Built In Study
            df = pd.DataFrame().ta.ticker("SPY", period="2y", study=ta.AllStudy, timed=True)
            ```
        NzF[X] Please install yfinance to use this method. (pip install yfinance)SPYmax1dFNNr   r   )r  r  r  z	[+] yf | r-   r(   r.   )_dsr/   v_strr0   dictr   r   Tickerr   historyrA   r4   r(   r   r   r   r   )r#   r   r  r  r   r  r(   r*   rp   r9   r   yfts               r$   r   zAnalysisIndicators.ticker  s'   P 88Z\vu%vu%4(#E40bue$	E88t 2!))F#Clne %B BG!%(BHIfXbhhZr"((<=E5!9DJJu4E4V4xxr&   c                 8    t        | j                        | _        y)zvto_utc

        Set the DataFrame index to UTC.

        Returns:
            (None): Performs the operation.
        N)r   r   r?   s    r$   r   zAnalysisIndicators.to_utcX  s     $((#r&   c           
      T   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   r   )r   r   r   r   rA   offsetr.   )r   r   cdl_patternr   )	r#   rA   r  r*   r   r   r   r   r:   s	            r$   r  zAnalysisIndicators.cdl_patterni  s      FF!;<

66 :;vzz%78  GW!=>n5tEPT]cngmn!t!!&3F33r&   c           
      T   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   r   )r   r   r   r   fullr  r.   )r   r   cdl_zr   )	r#   r  r  r*   r   r   r   r   r:   s	            r$   r  zAnalysisIndicators.cdl_zq  s      FF!;<

66 :;vzz%78  GW!=>hU3e$W]hagh!t!!&3F33r&   c           	      R   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S Nr   r   r   r   )r   r   r   r   r  r.   )r   r   har   r#   r  r*   r   r   r   r   r:   s           r$   r  zAnalysisIndicators.hay  s      FF!;<

66 :;vzz%78  GW!=>Z%d5ZSYZ!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   lengthbarsr  r.   )r   r   ebswr   )r#   r   r  r  r  r*   r:   s          r$   r  zAnalysisIndicators.ebsw  sM      GW!=>UE&tFUfU!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S Nr   )r   r  smoothalphapisqrt2r  r.   )r   r   reflexr   
r#   r   r  r"  r#  r$  r%  r  r*   r:   s
             r$   r&  zAnalysisIndicators.reflex  sW      GW!=>|eF6SU]bkq|u{|!t!!&3F33r&   c           	          | j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S Nr   r   )r   r   fastslowr  r.   )r   r   aor   r#   r*  r+  r  r*   r   r   r:   s           r$   r,  zAnalysisIndicators.ao  sj    

66 :;vzz%78V3TVVvV!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   )r   r*  r+  mamoder  r.   )r   r   apor   )r#   r*  r+  r/  r  r*   r   r:   s           r$   r0  zAnalysisIndicators.apo  sP      GW!=>_5t$vf_X^_!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S Nr   )r   r  r/  r  r.   )r   r   biasr   r#   r  r/  r  r*   r   r:   s          r$   r3  zAnalysisIndicators.bias  N      GW!=>YE&YRXY!t!!&3F33r&   c           
      T   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   r   )r   r   r   r   
percentager  r.   )r   r   bopr   )	r#   r7  r  r*   r   r   r   r   r:   s	            r$   r8  zAnalysisIndicators.bop  s      FF!;<

66 :;vzz%78  GW!=>r5tEjagrkqr!t!!&3F33r&   c                 X   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }	t        d||||	||||d|}
 | j                  |
fi |S )Nr   r   r   r   )r   r   r   r   r  scalardriftr  r.   )r   r   brarr   )r#   r  r:  r;  r  r*   r   r   r   r   r:   s              r$   r<  zAnalysisIndicators.brar  s      FF!;<

66 :;vzz%78  GW!=>  HE#U6Z`hmv|  H  AG  H!t!!&3F33r&   c           
         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   )r   r   r   r  cr  r.   )r   r   ccir   )	r#   r  r>  r  r*   r   r   r   r:   s	            r$   r?  zAnalysisIndicators.cci  s    

66 :;vzz%78  GW!=>b$CuVqQWb[ab!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S Nr   )r   r  r  r.   )r   r   cfor   r#   r  r  r*   r   r:   s         r$   rB  zAnalysisIndicators.cfo  K      GW!=>I5I&I!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   cgr   rC  s         r$   rF  zAnalysisIndicators.cg  sK      GW!=>H%vHH!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S Nr   )r   r  r:  r;  r  r.   )r   r   cmor   r#   r  r:  r;  r  r*   r   r:   s           r$   rI  zAnalysisIndicators.cmo  Q      GW!=>e5eTZe^de!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S Nr   )r   r  r*  r+  r  r.   )r   r   coppockr   r#   r  r*  r+  r  r*   r   r:   s           r$   rN  zAnalysisIndicators.coppock  sQ      GW!=>cuV$TRXc\bc!t!!&3F33r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   )r   
rsi_lengthstreak_lengthrank_lengthr;  r  r.   )r   r   crsir   )	r#   rQ  rR  rS  r;  r  r*   r   r:   s	            r$   rT  zAnalysisIndicators.crsi  sf      GW!=>  VEjcnv{  EK  V  OU  V!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   ctir   rC  s         r$   rV  zAnalysisIndicators.cti  rD  r&   c           	          | j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   r   )r   r   r;  r/  r  r.   )r   r   dmr   )r#   r;  r  r/  r*   r   r   r:   s           r$   rX  zAnalysisIndicators.dm  sk    

66 :;vzz%78\3eF6\U[\!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S Nr   )r   r  r;  r  r.   )r   r   err   r#   r  r;  r  r*   r   r:   s          r$   r[  zAnalysisIndicators.er  sM      GW!=>U%eFUfU!t!!&3F33r&   c           	         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S Nr   r   r   r   r   r   r  r  r.   )r   r   erir   r#   r  r  r*   r   r   r   r:   s           r$   r`  zAnalysisIndicators.eri      

66 :;vzz%78  GW!=>]$CuVF]V\]!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   )r   r  capasintshow_allnozerosr  r.   )r   r   exhcr   )
r#   r  rd  re  rf  rg  r  r*   r   r:   s
             r$   rh  zAnalysisIndicators.exhc  sd      GW!=>  EE&cQYcjsy  E  ~D  E!t!!&3F33r&   c           	          | j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   r   )r   r   r  signalr  r.   )r   r   fisherr   )r#   r  rj  r  r*   r   r   r:   s           r$   rk  zAnalysisIndicators.fisher  sl    

66 :;vzz%78bTs6&QWb[ab!t!!&3F33r&   c	                 P   | j                  |	j                  dd            }
||Z| j                  |	j                  dd            }| j                  |	j                  dd            }t        d|
||||||||||d|	}nt        d|
||||||||d	|	} | j                  |fi |	S )Nr   r   r   )r   r   r   r  
rvi_lengthr:  refinedthirdsr/  r;  r  )	r   r  rm  r:  rn  ro  r/  r;  r  r.   )r   r   inertiar   )r#   r  rm  r:  rn  ro  r/  r;  r  r*   r   r   r   r:   s                 r$   rp  zAnalysisIndicators.inertia  s     GW!=>&"4##FJJvv$>?D""6::eU#;<C  H5tVXbkq  |C  LR  [a  in  w}  H  AG  HF  t5JW]gnw}  GM  UZ  ci  t  ms  tF!t!!&3F33r&   c           
         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   )r   r   r   r  rj  r  r.   )r   r   kdjr   )	r#   r  rj  r  r*   r   r   r   r:   s	            r$   rr  zAnalysisIndicators.kdj      

66 :;vzz%78  GW!=>l$CuVF[alekl!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||||||||	|
d|} | j                  |fi |S )Nr   )r   roc1roc2roc3roc4sma1sma2sma3sma4rj  r  r.   )r   r   kstr   )r#   ru  rv  rw  rx  ry  rz  r{  r|  rj  r  r*   r   r:   s                 r$   r}  zAnalysisIndicators.kst  sw      GW!=>  b5t$TSW^bimtx  BH  QW  b  [a  b!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   )r   r*  r+  rj  r  r.   )r   r   macdr   )r#   r*  r+  rj  r  r*   r   r:   s           r$   r  zAnalysisIndicators.macd  sP      GW!=>`E4v`Y_`!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   momr   rC  s         r$   r  zAnalysisIndicators.mom  rD  r&   c           	         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S r^  )r   r   pgor   ra  s           r$   r  zAnalysisIndicators.pgo  rb  r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   )r   r*  r+  r:  r/  r  r.   )r   r   ppor   )	r#   r*  r+  r:  r/  r  r*   r   r:   s	            r$   r  zAnalysisIndicators.ppo  S      GW!=>n5t$vf]cngmn!t!!&3F33r&   c           
          |!| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   )r   r   r  r:  r;  r  r.   )r   r   pslr   )	r#   r   r  r:  r;  r  r*   r   r:   s	            r$   r  zAnalysisIndicators.psl  su    $$VZZ%?@E  GW!=>r5fVSXagrkqr!t!!&3F33r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   )r   r  r"  factorr/  r  r.   )r   r   qqer   )	r#   r  r"  r  r/  r  r*   r   r:   s	            r$   r  zAnalysisIndicators.qqe$  sT      GW!=>v5vV\ekvouv!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   rocr   rC  s         r$   r  zAnalysisIndicators.roc)  rD  r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S rH  )r   r   rsir   rJ  s           r$   r  zAnalysisIndicators.rsi.  rK  r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S rZ  )r   r   rsxr   r\  s          r$   r  zAnalysisIndicators.rsx3  M      GW!=>V5uVVvV!t!!&3F33r&   c                 V   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   r   r   r   )r   r   r   r   r  swma_lengthr  r.   )r   r   rvgir   )
r#   r  r  r  r*   r   r   r   r   r:   s
             r$   r  zAnalysisIndicators.rvgi8  s      FF!;<

66 :;vzz%78  GW!=>  EE#U6_jsy  E  ~D  E!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   sloper   rC  s         r$   r  zAnalysisIndicators.slope@  K      GW!=>KU6&KFK!t!!&3F33r&   c
                 b   | j                  |
j                  dd            }| j                  |
j                  dd            }| j                  |
j                  dd            }| j                  |
j                  dd            }t        d|||||||||||||	d|
} | j                  |fi |
S )Nr   r   r   r   )r   r   r   r   
abr_lengthclose_length
vol_lengthpercent	vol_ratiore  r/  r   r  r.   )r   r   smcr   )r#   r  r  r  r  r  re  r/  r   r  r*   r   r   r   r   r:   s                   r$   r  zAnalysisIndicators.smcE  s      FF!;<

66 :;vzz%78  GW!=>  t5tEjgs  AK  U\  hq  y~  GM  UZ  ci  t  ms  t!t!!&3F33r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   )r   r*  r+  rj  r:  r  r.   )r   r   smir   )	r#   r*  r+  rj  r:  r  r*   r   r:   s	            r$   r  zAnalysisIndicators.smiM  r  r&   c
                    | j                  |
j                  dd            }| j                  |
j                  dd            }| j                  |
j                  dd            }t        d||||||||||||	d|
} | j                  |fi |
S )Nr   r   r   )r   r   r   	bb_lengthbb_std	kc_length	kc_scalar
mom_length
mom_smoothuse_trr/  r  r.   )r   r   squeezer   )r#   r  r  r  r  r  r  r  r/  r  r*   r   r   r   r:   s                  r$   r  zAnalysisIndicators.squeezeR  s    

66 :;vzz%78  GW!=>  md5IV\hq  ~G  T^  ku  ~D  MS  \b  m  fl  m!t!!&3F33r&   c                 "   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||||||||	|
|d|} | j                  |fi |S )Nr   r   r   )r   r   r   r  r  r  kc_scalar_widekc_scalar_normalkc_scalar_narrowr  r  r  r/  r  r.   )r   r   squeeze_pror   )r#   r  r  r  r  r  r  r  r  r  r/  r  r*   r   r   r   r:   s                    r$   r  zAnalysisIndicators.squeeze_proY  s    

66 :;vzz%78  GW!=>  A$Cu	Z`lu  GU  hx  K[  hr  I  RX  ag  pv  A  z@  A!t!!&3F33r&   c	                     | j                  |	j                  dd            }
t        d|
||||||||d	|	} | j                  |fi |	S )Nr   )	r   tclengthma1ma2oscr*  r+  r  r  r.   )r   r   stcr   )r#   r  r  r  r  r*  r+  r  r  r*   r   r:   s               r$   r  zAnalysisIndicators.stc`  sm      GW!=>  N58#3UY`dms  }C  N  GM  N!t!!&3F33r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }	| j                  |j                  dd            }
t        d||	|
||||||d	|} | j                  |fi |S )Nr   r   r   )	r   r   r   r   dsmooth_kr/  r   r  r.   )r   r   stochr   )r#   r   r  r  r/  r   r  r*   r   r   r   r:   s               r$   r  zAnalysisIndicators.stoche  s    

66 :;vzz%78  GW!=>  JDc!q8\bjox~  J  CI  J!t!!&3F33r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }	t        d|||	|||||d|}
 | j                  |
fi |S )Nr   r   r   )r   r   r   r   r  r/  r   r  r.   )r   r   stochfr   )r#   r   r  r/  r   r  r*   r   r   r   r:   s              r$   r  zAnalysisIndicators.stochfl  s    

66 :;vzz%78  GW!=>wTs%1&X]flwpvw!t!!&3F33r&   c                    | j                  |j                  dd            }	| j                  |j                  dd            }
| j                  |j                  dd            }t        d|	|
||||||||d
|} | j                  |fi |S )Nr   r   r   )
r   r   r   r  rQ  r   r  r/  r   r  r.   )r   r   stochrsir   )r#   r  rQ  r   r  r/  r   r  r*   r   r   r   r:   s                r$   r  zAnalysisIndicators.stochrsis  s    

66 :;vzz%78  GW!=>  `tE&U_cdhirx  AF  OU  `  Y_  `!t!!&3F33r&   c                     | j                  |j                  dd            }	| j                  |j                  dd            }
t        d|	|
|||||||d	|} | j                  |fi |S )Nr   r   )	r   r   
tmo_lengthcalc_lengthsmooth_lengthr/  compute_momentumnormalize_signalr  r.   )r   r   tmor   )r#   r  r  r  r/  r  r  r  r*   r   r   r:   s               r$   r  zAnalysisIndicators.tmoz  s      FF!;<  GW!=>  j5*R]mz  DJ  ]m  @P  Y_  j  ci  j!t!!&3F33r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   )r   r  rj  r:  r;  r  r.   )r   r   trixr   )	r#   r  rj  r:  r;  r  r*   r   r:   s	            r$   r  zAnalysisIndicators.trix  sT      GW!=>uE&V[djuntu!t!!&3F33r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   )r   r*  r+  r;  r/  r  r.   )r   r   tsir   )	r#   r*  r+  r;  r/  r  r*   r   r:   s	            r$   r  zAnalysisIndicators.tsi  sS      GW!=>l5t$eF[alekl!t!!&3F33r&   c	                    | j                  |	j                  dd            }
| j                  |	j                  dd            }| j                  |	j                  dd            }t        d|
||||||||||d|	} | j                  |fi |	S )Nr   r   r   )r   r   r   r*  mediumr+  fast_wmedium_wslow_wr;  r  r.   )r   r   uor   )r#   r*  r  r+  r  r  r  r;  r  r*   r   r   r   r:   s                 r$   r  zAnalysisIndicators.uo  s    

66 :;vzz%78  GW!=>  q3e$vTXagrz  DJ  RW  `f  q  jp  q!t!!&3F33r&   c           
         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   )r   r   r   r  r7  r  r.   )r   r   willrr   )	r#   r  r7  r  r*   r   r   r   r:   s	            r$   r  zAnalysisIndicators.willr  s    

66 :;vzz%78  GW!=>vDcvR\ekvouv!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   )r   jawteethlipsr  r.   )r   r   	alligatorr   )r#   r  r  r  r  r*   r   r:   s           r$   r  zAnalysisIndicators.alligator  sQ      GW!=>aCu4PVaZ`a!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   )r   r  sigmadistribution_offsetr  r.   )r   r   almar   )r#   r  r  r  r  r*   r   r:   s           r$   r  zAnalysisIndicators.alma  s[      GW!=>  AE&Sfou  Ay  A!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   demar   rC  s         r$   r  zAnalysisIndicators.dema  K      GW!=>JE&J6J!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   emar   rC  s         r$   r  zAnalysisIndicators.ema  rD  r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   fwmar   rC  s         r$   r  zAnalysisIndicators.fwma  r  r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   r   r   )r   r   r   high_length
low_lengthr/  r  r.   )r   r   hilor   )
r#   r  r  r/  r  r*   r   r   r   r:   s
             r$   r  zAnalysisIndicators.hilo  s    

66 :;vzz%78  GW!=>  O4S;[ent  ~D  O  HN  O!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        d|||d|} | j                  |fi |S )Nr   r   )r   r   r  r.   )r   r   hl2r   )r#   r  r*   r   r   r:   s         r$   r  zAnalysisIndicators.hl2  sf    

66 :;vzz%78A$CA&A!t!!&3F33r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||d|} | j                  |fi |S Nr   r   r   )r   r   r   r  r.   )r   r   hlc3r   r#   r  r*   r   r   r   r:   s          r$   r  zAnalysisIndicators.hlc3  s    

66 :;vzz%78  GW!=>O4SfOO!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S r2  )r   r   hmar   r4  s          r$   r  zAnalysisIndicators.hma  sN      GW!=>X5vXQWX!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   )r   nanbncr  r.   )r   r   hwmar   )r#   r  r  r  r  r*   r   r:   s           r$   r  zAnalysisIndicators.hwma  sO      GW!=>PEbRBvPP!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  phaser  r.   )r   r   jmar   )r#   r  r  r  r*   r   r:   s          r$   r  zAnalysisIndicators.jma  r  r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S rM  )r   r   kamar   rO  s           r$   r  zAnalysisIndicators.kama  sP      GW!=>`E&t$v`Y_`!t!!&3F33r&   c                 p   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }	t        d|||	|||||d|\  }
} | j                  |
fi |  | j                  |fi |  | j                  |
fi | |
|fS )Nr   r   r   )r   r   r   tenkankijunsenkouinclude_chikour  r.   )r   r   r   r`   rt   )r#   r  r  r  r  r  r*   r   r   r   r:   spans               r$   r   zAnalysisIndicators.ichimoku  s    

66 :;vzz%78  GW!=>  dTs%V[dj  |J  SY  d  ]c  d1&1//V&v&t|r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  r  adjustr.   )r   r   linregr   )r#   r  r  r  r*   r   r:   s          r$   r  zAnalysisIndicators.linreg  sN      GW!=>[eF6&[TZ[!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   )r   	fastlimit	slowlimitprenanr  r.   )r   r   mamar   )r#   r  r  r  r  r*   r   r:   s           r$   r  zAnalysisIndicators.mama  sR      GW!=>tEY)TZcitmst!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   mcgdr   rC  s         r$   r  zAnalysisIndicators.mcgd  r  r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   midpointr   rC  s         r$   r  zAnalysisIndicators.midpoint  K      GW!=>NfVNvN!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   r   )r   r   r  r  r.   )r   r   midpricer   )r#   r  r  r*   r   r   r:   s          r$   r  zAnalysisIndicators.midprice  sh    

66 :;vzz%78UtVFUfU!t!!&3F33r&   c           	      R   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S r  )r   r   ohlc4r   r  s           r$   r  zAnalysisIndicators.ohlc4  s      FF!;<

66 :;vzz%78  GW!=>]U3eF]V\]!t!!&3F33r&   c           
      T   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   r   )r   r   r   r   r   anchorr.   )r   r   pivotsr   )	r#   r   r  r*   r   r   r   r   r:   s	            r$   r  zAnalysisIndicators.pivots  s      FF!;<

66 :;vzz%78  GW!=>me$CuV\bmflm!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   pwmar   rC  s         r$   r  zAnalysisIndicators.pwma  r  r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   rmar   rC  s         r$   r  zAnalysisIndicators.rma  rD  r&   c           	          | j                  |j                  dd            }t        dt        t        |||d|} | j
                  |fi |S )Nr   r_  r.   )r   r   rwir   r   r   rC  s         r$   r  zAnalysisIndicators.rwi  sP      GW!=>]$CuVF]V\]!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   sinwmar   rC  s         r$   r  zAnalysisIndicators.sinwma  K      GW!=>LeF6LVL!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   smar   rC  s         r$   r  zAnalysisIndicators.sma#  rD  r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   smmar   rC  s         r$   r  zAnalysisIndicators.smma(  r  r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   )r   r  evergetr$  r%  r  r.   )r   r   ssfr   )	r#   r  r  r$  r%  r  r*   r   r:   s	            r$   r   zAnalysisIndicators.ssf-  sS      GW!=>n5Ru]cngmn!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   )r   r  r$  sqrt3r  r.   )r   r   ssf3r   )r#   r  r$  r"  r  r*   r   r:   s           r$   r#  zAnalysisIndicators.ssf32  sP      GW!=>^E&RuV^W]^!t!!&3F33r&   c           
         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   )r   r   r   r  
multiplierr  r.   r   r   
supertrendr   )	r#   r  r%  r  r*   r   r   r   r:   s	            r$   r'  zAnalysisIndicators.supertrend7      

66 :;vzz%78  GW!=>{3eFWajp{tz{!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   swmar   rC  s         r$   r*  zAnalysisIndicators.swma>  r  r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  ar  r.   )r   r   t3r   )r#   r  r,  r  r*   r   r:   s          r$   r-  zAnalysisIndicators.t3C  sM      GW!=>M%!FMfM!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   temar   rC  s         r$   r/  zAnalysisIndicators.temaH  r  r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   trimar   rC  s         r$   r1  zAnalysisIndicators.trimaM  r  r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   vidyar   rC  s         r$   r3  zAnalysisIndicators.vidyaR  r  r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||d|} | j                  |fi |S r  )r   r   wcpr   r  s          r$   r5  zAnalysisIndicators.wcpW  s    

66 :;vzz%78  GW!=>N$CuVNvN!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   wmar   rC  s         r$   r7  zAnalysisIndicators.wma^  rD  r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S r2  )r   r   zlmar   r4  s          r$   r9  zAnalysisIndicators.zlmac  r5  r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S Nr   )r   r  
cumulativer  r  r.   )r   r   
log_returnr   r#   r  r<  r  r  r*   r   r:   s           r$   r=  zAnalysisIndicators.log_returni  sR      GW!=>x%:W^gmxqwx!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S r;  )r   r   percent_returnr   r>  s           r$   r@  z!AnalysisIndicators.percent_returnn  sR      GW!=>|eFz[bkq|u{|!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  baser  r.   )r   r   entropyr   )r#   r  rB  r  r*   r   r:   s          r$   rC  zAnalysisIndicators.entropyt  sN      GW!=>XuV$vXQWX!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   kurtosisr   rC  s         r$   rE  zAnalysisIndicators.kurtosisy  r	  r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   madr   rC  s         r$   rG  zAnalysisIndicators.mad~  rD  r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   medianr   rC  s         r$   rI  zAnalysisIndicators.median  r  r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  qr  r.   )r   r   quantiler   )r#   r  rK  r  r*   r   r:   s          r$   rL  zAnalysisIndicators.quantile  sM      GW!=>Sf&SFS!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   skewr   rC  s         r$   rN  zAnalysisIndicators.skew  r  r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   stdevr   rC  s         r$   rP  zAnalysisIndicators.stdev  r  r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  stdsr  r.   )r   r   tos_stdevallr   )r#   r  rR  r  r*   r   r:   s          r$   rS  zAnalysisIndicators.tos_stdevall  sN      GW!=>]E&tF]V\]!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||d|} | j                  |fi |S rA  )r   r   variancer   rC  s         r$   rU  zAnalysisIndicators.variance  r	  r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  stdr  r.   )r   r   zscorer   )r#   r  rW  r  r*   r   r:   s          r$   rX  zAnalysisIndicators.zscore  sM      GW!=>UeFFUfU!t!!&3F33r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }	| j                  |j                  dd            }
t        d||	|
||||||d	|} | j                  |fi |S Nr   r   r   )	r   r   r   r  lensigr/  r:  r;  r  r.   )r   r   adxr   r#   r  r[  r/  r:  r;  r  r*   r   r   r   r:   s               r$   r\  zAnalysisIndicators.adx      

66 :;vzz%78  GW!=>  X$CuVF[ajpx}  GM  X  QW  X!t!!&3F33r&   c
                    | j                  |
j                  dd            }| j                  |
j                  dd            }| j                  |
j                  dd            }| j                  |
j                  dd            }|!| j                  |
j                  dd            }t        d|||||||||||||	d|
} | j                  |fi |
S )Nr   r   r   r   volume)r   r   r   r   r`  srcr  r%  	thresholdlagr/  r   r  r.   )r   r   
alphatrendr   )r#   r`  ra  r  r%  rb  rc  r/  r   r  r*   r   r   r   r   r:   s                   r$   rd  zAnalysisIndicators.alphatrend  s      FF!;<

66 :;vzz%78  GW!=>%%fjj8&DEF  [%d5QW]`io  }G  S\  be  nt  |A  JP  [  TZ  [!t!!&3F33r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   )r   r*  r+  r/  lookbackr  r.   )r   r   amatr   )	r#   r*  r+  r/  rf  r  r*   r   r:   s	            r$   rg  zAnalysisIndicators.amat  sT      GW!=>sE4QYbhslrs!t!!&3F33r&   c           	          | j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   r   )r   r   r  r:  r  r.   )r   r   aroonr   )r#   r  r:  r  r*   r   r   r:   s           r$   ri  zAnalysisIndicators.aroon  sl    

66 :;vzz%78aDc&PVaZ`a!t!!&3F33r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }	| j                  |j                  dd            }
t        d||	|
||||||d	|} | j                  |fi |S )Nr   r   r   )	r   r   r   r  
atr_lengthlnr:  r;  r  r.   )r   r   chopr   )r#   r  rk  rl  r:  r;  r  r*   r   r   r   r:   s               r$   rm  zAnalysisIndicators.chop  s    

66 :;vzz%78  GW!=>  Y4SfQ[`bkqy~  HN  Y  RX  Y!t!!&3F33r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }	t        d|||	|||||d|}
 | j                  |
fi |S )Nr   r   r   )r   r   r   prx   rK  r/  r  r.   )r   r   ckspr   )r#   ro  rx   rK  r/  r  r*   r   r   r   r:   s              r$   rp  zAnalysisIndicators.cksp  s    

66 :;vzz%78  GW!=>m4Sa1V\bmflm!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  ri   r  r.   )r   r   decayr   )r#   r  ri   r  r*   r   r:   s          r$   rr  zAnalysisIndicators.decay  sM      GW!=>VU6VVvV!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S Nr   )r   r  strictre  r  r.   )r   r   
decreasingr   r#   r  ru  re  r  r*   r   r:   s           r$   rv  zAnalysisIndicators.decreasing  Q      GW!=>l%vU[alekl!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  centeredr  r.   )r   r   dpor   )r#   r  rz  r  r*   r   r:   s          r$   r{  zAnalysisIndicators.dpo  sN      GW!=>\5(6\U[\!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r   r  r  r.   )r   r   ht_trendliner   )r#   r   r  r  r*   r   r:   s          r$   r}  zAnalysisIndicators.ht_trendline  sN      GW!=>_Evf_X^_!t!!&3F33r&   c           	          | j                  |j                  dd            }t        d|||||d|} | j                  |fi |S rt  )r   r   
increasingr   rw  s           r$   r  zAnalysisIndicators.increasing  rx  r&   c                 h    ||| j                   S t        d||||d|} | j                  |fi |S N)r*  r+  r  r  r.   )r   r   r   r#   r*  r+  r  r  r*   r:   s          r$   r   zAnalysisIndicators.long_run  sE    <DL88O[4d6&[TZ[F%4%%f777r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd             }	t        d|||	|||||d|}
 | j                  |
fi |S )Nr   r   r   )r   r   r   af0afmax_aftvr  r.   )r   r   psarr   )r#   r  r  r  r  r  r*   r   r   r   r:   s              r$   r  zAnalysisIndicators.psar  s    

66 :;vzz%78  GT!:;u4S32fY[djuntu!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   r   )r   r   r  r  r.   )r   r   qstickr   )r#   r  r  r*   r   r   r:   s          r$   r  zAnalysisIndicators.qstick  si      FF!;<  GW!=>Ye5YRXY!t!!&3F33r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }	| j                  |j                  dd            }
t        d||	|
||||||d	|} | j                  |fi |S rZ  )r   r   r  r   r]  s               r$   r  zAnalysisIndicators.rwi  r^  r&   c                 h    ||| j                   S t        d||||d|} | j                  |fi |S r  )r   r   r   r  s          r$   r   zAnalysisIndicators.short_run  sE    <DL88O\DtF6\U[\F%4%%f777r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }	t        d|||	|||||d|}
 | j                  |
fi |S )Nr   r   r   )r   r   r   r  r%  r/  r;  r  r.   r&  )r#   r  r%  r/  r;  r  r*   r   r   r   r:   s              r$   r'  zAnalysisIndicators.supertrend  s    

66 :;vzz%78  GW!=>  X3eFWajpx}  GM  X  QW  X!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S r!  )r   r   	trendflexr   r'  s
             r$   r  zAnalysisIndicators.trendflex  sW      GW!=>vfEVX`entx~!t!!&3F33r&   c                 f    || j                   S t        |f||||d|} | j                  |fi |S )N)asbooltrend_offsettrend_resetr  )r   r   r   )r#   trendr  r  r  r  r*   r:   s           r$   r   zAnalysisIndicators.tsignals  sN    =88Oe  AF[fou  Ay  AF%4%%f777r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S rZ  )r   r   vhfr   r\  s          r$   r  zAnalysisIndicators.vhf  r  r&   c           	         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S Nr   r   r   )r   r   r   r;  r  r.   )r   r   vortexr   r#   r;  r  r*   r   r   r   r:   s           r$   r  zAnalysisIndicators.vortex$  s    

66 :;vzz%78  GW!=>^Ts%uV^W]^!t!!&3F33r&   c
                 n    || j                   S t        d|||||||||	d	|
} | j                  |fi |
S )N)	rj  xaxbabovelongr  r  r  r  r.   )r   r   r   )r#   rj  r  r  r  r  r  r  r  r  r*   r:   s               r$   r   zAnalysisIndicators.xsignals+  sd    >88O  oVrTZ`o{  JU  ^d  o  hn  oF%4%%f777r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }	|!| j                  |j                  dd            }t        d||	||||||d|}
 | j                  |
fi |S )Nr   r   r   )r   r   r   legs	deviationretracelast_extremer  r.   )r   r   zigzagr   )r#   r   r  r  r  r  r  r*   r   r   r:   s              r$   r  zAnalysisIndicators.zigzag2  s    

66 :;vzz%78$$VZZ%ABE  ^Ts%diah  xD  MS  ^  W]  ^!t!!&3F33r&   c           
         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   )r   r   r   r  rk  r  r.   )r   r   
aberrationr   )	r#   r  rk  r  r*   r   r   r   r:   s	            r$   r  zAnalysisIndicators.aberration;  r(  r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   r   r   )r   r   r   r  r>  r/  r  r.   )r   r   accbandsr   )
r#   r  r>  r/  r  r*   r   r   r   r:   s
             r$   r  zAnalysisIndicators.accbandsB  s    

66 :;vzz%78  GW!=>vtE&AV\ekvouv!t!!&3F33r&   c           
         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   )r   r   r   r  r/  r  r.   )r   r   atrr   )	r#   r  r/  r  r*   r   r   r   r:   s	            r$   r  zAnalysisIndicators.atrI  rs  r&   c                    | j                  |j                  dd            }	| j                  |j                  dd            }
| j                  |j                  dd            }t        d|	|
||||||||d
|} | j                  |fi |S )Nr   r   r   )
r   r   r   r  	ma_lengthr%  r/  r   r;  r  r.   )r   r   atrtsr   )r#   r  r  r%  r/  r   r;  r  r*   r   r   r   r:   s                r$   r  zAnalysisIndicators.atrtsP  s    

66 :;vzz%78  GW!=>  uDcvQZgq  {A  IN  V[  dj  u  nt  u!t!!&3F33r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   )r   r  	lower_std	upper_stdr/  r  r.   )r   r   bbandsr   )	r#   r  r  r  r/  r  r*   r   r:   s	            r$   r  zAnalysisIndicators.bbandsW  sb    !!&**Wg">?  FeFiS\ektz  F  E  F!t!!&3F33r&   c
                    | j                  |
j                  dd            }| j                  |
j                  dd            }| j                  |
j                  dd            }t        d||||||||||||	d|
} | j                  |fi |
S )Nr   r   r   )r   r   r   r  r  rk  r%  r/  r   	use_closer;  r  r.   )r   r   chandelier_exitr   )r#   r  r  rk  r%  r/  r   r  r;  r  r*   r   r   r   r:   s                  r$   r  z"AnalysisIndicators.chandelier_exit\  s    

66 :;vzz%78  GW!=>   wd5kfp  ~H  U_  hn  v{  GP  X]  fl  w  pv  w!t!!&3F33r&   c           	          | j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S )Nr   r   )r   r   lower_lengthupper_lengthr  r.   )r   r   donchianr   )r#   r  r  r  r*   r   r   r:   s           r$   r  zAnalysisIndicators.donchianc  sm    

66 :;vzz%78|t<Vbkq|u{|!t!!&3F33r&   c                     | j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   )r   r  r  r  ndr:  r  r.   )r   r   hwcr   )
r#   r  r  r  r  r:  r  r*   r   r:   s
             r$   r  zAnalysisIndicators.hwci  sU      GW!=>e5RB2"VTZe^de!t!!&3F33r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   r   r   )r   r   r   r  r:  r/  r  r.   )r   r   kcr   )
r#   r  r:  r/  r  r*   r   r   r   r:   s
             r$   r  zAnalysisIndicators.kcn  s    

66 :;vzz%78  GW!=>z3eF6Z`iozsyz!t!!&3F33r&   c           	          | j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S r)  )r   r   massir   r-  s           r$   r  zAnalysisIndicators.massiu  sk    

66 :;vzz%78YDc4YRXY!t!!&3F33r&   c                    | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   r   r   )r   r   r   r  r/  r:  r  r.   )r   r   natrr   )
r#   r  r/  r:  r  r*   r   r   r   r:   s
             r$   r  zAnalysisIndicators.natr{  s    

66 :;vzz%78  GW!=>|4SfV\bkq|u{|!t!!&3F33r&   c           
      T   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r   r   r   )r   r   r   r   r;  r  r.   )r   r   pdistr   )	r#   r;  r  r*   r   r   r   r   r:   s	            r$   r  zAnalysisIndicators.pdist  s      FF!;<

66 :;vzz%78  GW!=>jU3e5Y_jcij!t!!&3F33r&   c                    | j                  |j                  dd            }	| j                  |j                  dd            }
| j                  |j                  dd            }t        d|	|
||||||||d
|} | j                  |fi |S )Nr   r   r   )
r   r   r   r  r:  rn  ro  r/  r;  r  r.   )r   r   rvir   )r#   r  r:  rn  ro  r/  r;  r  r*   r   r   r   r:   s                r$   r  zAnalysisIndicators.rvi  s    

66 :;vzz%78  GW!=>  i$CuVF\clr  |B  JO  X^  i  bh  i!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }	t        d||	||||||d|}
 | j                  |
fi |S )Nr   r   )r   r   r  shortr  r/  r;  r  r.   )r   r   thermor   )r#   r  r  r  r/  r;  r  r*   r   r   r:   s              r$   r  zAnalysisIndicators.thermo  s    

66 :;vzz%78  HTsU6Z`hmv|  H  AG  H!t!!&3F33r&   c           	         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||d|} | j                  |fi |S r  )r   r   
true_ranger   r  s           r$   r  zAnalysisIndicators.true_range  s    

66 :;vzz%78  GW!=>b3e5QWb[ab!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   )r   r  r:  r  r.   )r   r   uir   )r#   r  r:  r  r*   r   r:   s          r$   r  zAnalysisIndicators.ui  sN      GW!=>W%vfWPVW!t!!&3F33r&   c                    |!| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   r   r   r   r`  )r   r   r   r`  r   signedr  r.   )r   r   adr   )
r#   r   r  r  r*   r   r   r   r`  r:   s
             r$   r  zAnalysisIndicators.ad  s    $$VZZ%?@E

66 :;vzz%78  GW!=>!!&**Xx"@Ax3eF%X^gmxqwx!t!!&3F33r&   c                    |!| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }	| j                  |j                  dd            }
t        d|||	|
|||||d	|} | j                  |fi |S )Nr   r   r   r   r`  )	r   r   r   r`  r   r*  r+  r  r  r.   )r   r   adoscr   )r#   r   r*  r+  r  r  r*   r   r   r   r`  r:   s               r$   r  zAnalysisIndicators.adosc  s    $$VZZ%?@E

66 :;vzz%78  GW!=>!!&**Xx"@A  RDcvUY]dhqw  AG  R  KQ  R!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }	t        d||	||||||d|}
 | j                  |
fi |S )Nr   r`  )r   r`  r*  r+  r/  max_lookbackmin_lookbackr  r.   )r   r   aobvr   )r#   r*  r+  r/  r  r  r  r*   r   r`  r:   s              r$   r  zAnalysisIndicators.aobv  s      GW!=>!!&**Xx"@A  fE&t$vdp  @L  U[  f  _e  f!t!!&3F33r&   c                    |!| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   r   r   r   r`  )r   r   r   r`  r   r  r  r.   )r   r   cmfr   )
r#   r   r  r  r*   r   r   r   r`  r:   s
             r$   r  zAnalysisIndicators.cmf  s    $$VZZ%?@E

66 :;vzz%78  GW!=>!!&**Xx"@Ay$CuV5Y_hnyrxy!t!!&3F33r&   c           
          | j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r`  )r   r`  r  r  r/  r;  r.   )r   r   efir   )	r#   r  r/  r  r;  r*   r   r`  r:   s	            r$   r  zAnalysisIndicators.efi  so      GW!=>!!&**Xx"@At5vV\ditmst!t!!&3F33r&   c                 X   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }	t        d||||	||||d|}
 | j                  |
fi |S )Nr   r   r   r`  )r   r   r   r`  r  divisorr  r;  r.   )r   r   eomr   )r#   r  r  r  r;  r*   r   r   r   r`  r:   s              r$   r  zAnalysisIndicators.eom  s    

66 :;vzz%78  GW!=>!!&**Xx"@A  K$CuVF\clrz  K  DJ  K!t!!&3F33r&   c                 \   | j                  |j                  dd            }| j                  |j                  dd            }	| j                  |j                  dd            }
| j                  |j                  dd            }t        d||	|
|||||||d
|} | j                  |fi |S )Nr   r   r   r`  )
r   r   r   r`  r*  r+  
length_sigr/  r  r;  r.   )r   r   kvor   )r#   r*  r+  r  r/  r  r;  r*   r   r   r   r`  r:   s                r$   r  zAnalysisIndicators.kvo  s    

66 :;vzz%78  GW!=>!!&**Xx"@A  g$CuV$UYfpy  IO  W\  g  `f  g!t!!&3F33r&   c                 V   | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   r   r   r`  )r   r   r   r`  r  r;  r  r.   )r   r   mfir   )
r#   r  r;  r  r*   r   r   r   r`  r:   s
             r$   r  zAnalysisIndicators.mfi  s    

66 :;vzz%78  GW!=>!!&**Xx"@Ay$CuVFZ_hnyrxy!t!!&3F33r&   c           
          | j                  |j                  dd            }| j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr   r`  )r   r`  r  initialr  r  r.   )r   r   nvir   )	r#   r  r  r  r  r*   r   r`  r:   s	            r$   r  zAnalysisIndicators.nvi  so      GW!=>!!&**Xx"@Ax5X^gmxqwx!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        d|||d|} | j                  |fi |S Nr   r`  )r   r`  r  r.   )r   r   obvr   r#   r  r*   r   r`  r:   s         r$   r  zAnalysisIndicators.obv  f      GW!=>!!&**Xx"@AI5I&I!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        d|||||||d|}	 | j                  |	fi |S )Nr   r`  )r   r`  r  r  r/  overlayr  r.   )r   r   pvir   )
r#   r  r  r/  r  r  r*   r   r`  r:   s
             r$   r  zAnalysisIndicators.pvi  s      GW!=>!!&**Xx"@A  J5X^hox~  J  CI  J!t!!&3F33r&   c           
          | j                  |j                  dd            }t        d||||||d|} | j                  |fi |S )Nr`  )r`  r*  r+  rj  r:  r  r.   )r   r   pvor   )	r#   r*  r+  rj  r:  r  r*   r`  r:   s	            r$   r  zAnalysisIndicators.pvo  sT    !!&**Xx"@ApFDPV_epiop!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        d|||d|} | j                  |fi |S r  )r   r   pvolr   )r#   r`  r  r*   r   r:   s         r$   r  zAnalysisIndicators.pvol  sf      GW!=>!!&**Xx"@AJE&J6J!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        ||      } | j                  |fi |S )Nr   r`  )r   r`  )r   r   pvrr   )r#   r*   r   r`  r:   s        r$   r  zAnalysisIndicators.pvr  s\      GW!=>!!&**Xx"@A50!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        d|||d|} | j                  |fi |S r  )r   r   pvtr   r  s         r$   r  zAnalysisIndicators.pvt	  r  r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   r`  )r   r`  rj  r  r.   )r   r   tsvr   )r#   r  rj  r  r*   r   r`  r:   s           r$   r  zAnalysisIndicators.tsv  si      GW!=>!!&**Xx"@AX5vXQWX!t!!&3F33r&   c                     | j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr`  )r`  r  
std_lengthr  r.   )r   r   vhmr   )r#   r  r  r  r*   r`  r:   s          r$   r  zAnalysisIndicators.vhm  sO    !!&**Xx"@AbF6jQWb[ab!t!!&3F33r&   c           
         | j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                  |j                  dd            }| j                         s| j                  j                  |_        t        d||||||d|} | j                  |fi |S )Nr   r   r   r`  )r   r   r   r`  r  r  r.   )r   r   r   r   r   vwapr   )	r#   r  r  r*   r   r   r   r`  r:   s	            r$   r  zAnalysisIndicators.vwap  s    

66 :;vzz%78  GW!=>!!&**Xx"@A$$&88>>FLm4SfV\bmflm!t!!&3F33r&   c                     | j                  |j                  dd            }| j                  |j                  dd            }t        d||||d|} | j                  |fi |S )Nr   r`  )r   r`  r  r  r.   )r   r   vwmar   )r#   r`  r  r  r*   r   r:   s          r$   r  zAnalysisIndicators.vwma&  si      GW!=>!!&**Xx"@AYE&YRXY!t!!&3F33r&   )NFFrC   )Fr   r   FF)rX   r
  )r<   N)NNNNNF)rv   N)NNNN)NNNNNNN)NNN)FN)NNNNN)NNNNNN)NNNNNNNN)
NNNNNNNNNN)	NNNNNNNNN)NNNNNNNNNNN)NNNNFFN)NTN)NNNTN)NFFN)NNNFN)NNTN)__name__
__module____qualname____doc__r>   r   rF   _customr   r   r   r  r!   r    r"   rT   SeriesFramer%   r1   r   DictLiker;   propertyr@   setterIntrG   r5   IntFloatrU   MaybeSeriesFramer`   rt   ry   r   r   Listr   Tupler   r   Argsr   rJ   r   ListStrr   ArrayPandasDTypeLiker   r   TextIOr6   r   r   r   r   r   r   r  r   r   r  r  r  r  r&  r,  r0  r3  r8  r<  r?  rB  rF  rI  rN  rT  rV  rX  r[  r`  rh  rk  rp  rr  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r'  r*  r-  r/  r1  r3  r5  r7  r9  r=  r@  rC  rE  rG  rI  rL  rN  rP  rS  rU  rX  r\  rd  rg  ri  rm  rp  rr  rv  r{  r}  r  r   r  r  r   r  r   r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.   r&   r$   r   r      s   B I[FG
+C*%$4CId3IKBK B 38!!!+/!!-5!H 
# 
 
 __"S "T " " s  & \\ #  $     #   __#c #d # #
 
6H 
6 
6 ' ' ' ' $(Y Y3;Y	Y, $( +  +3; +	 +FH
%&3,"5 %DEC ED E
=E =!"!.6!	)	!H % : *+<A3/3/#&3/3/!%3/593/ 
3/l%G %) )edl )QU?U )6	,$ 	,c $- F$ F F6T[K[ FR# 3x4 x8 x	 xx AE+/II$'I:=II$(I I (0IX$"4 4444
444
4
4444
4
4
4
4
4
44
44
4	444
4
4
44
44
4
4
4
44
44
444
44444
4
444
4
4
4
4
4444
4
4
4
	4
4
4
4
4444
4
4
4
4
4
4
4
44
4
4
4
4
44
44
44
4
4
4
4
4
4
4
4
4444
4444
4
4
4
4
8444844
84
48444444
444
44444444444444444444
44444

44r&   r   N)dataclassesr   multiprocessingr   r   pathlibr   timer   warningsr   numpyr	   r
   r   pandas.api.extensionsr   pandas.errorsr   pandasr   r   r   rh   r   pandas_ta._typing	pandas_tari   copy_on_writeobjectr   r.   r&   r$   <module>r     s`    ! +   ! % % = , $ (    !%
  T"R4 R4 #R4r&   