o
    ?Bi                     @   sr   d Z ddlZddlZddlmZ G dd deZG dd deZG dd	 d	eZ	dddZ
dddZdddZdS )zi
.. module:: others
   :synopsis: Others Indicators.

.. moduleauthor:: Dario Lopez Padial (Bukosabino)

    N)IndicatorMixinc                   @   >   e Zd ZdZddejdefddZdd Zd	ejfd
dZ	dS )DailyReturnIndicatorzDaily Return (DR)

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.
    Fclosefillnac                 C      || _ || _|   d S N_close_fillna_runselfr   r    r   I/var/www/html/Trade-python/venv/lib/python3.10/site-packages/ta/others.py__init__      zDailyReturnIndicator.__init__c                 C   s*   | j | j d d | _|  jd9  _d S )N   d   )r
   shift_drr   r   r   r   r         zDailyReturnIndicator._runreturnc                 C      | j | jdd}tj|ddS )z^Daily Return (DR)

        Returns:
            pandas.Series: New feature generated.
        r   valued_retname_check_fillnar   pdSeriesr   	dr_seriesr   r   r   daily_return      z!DailyReturnIndicator.daily_returnNF)
__name__
__module____qualname____doc__r"   r#   boolr   r   r&   r   r   r   r   r      
    r   c                   @   r   )DailyLogReturnIndicatorzDaily Log Return (DLR)

    https://stackoverflow.com/questions/31287552/logarithmic-returns-in-pandas-dataframe

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.
    Fr   r   c                 C   r   r   r	   r   r   r   r   r   3   r   z DailyLogReturnIndicator.__init__c                 C   s*   t t| j | _|  jd9  _d S )Nr   )r"   r#   nplogr
   diffr   r   r   r   r   r   8   r   zDailyLogReturnIndicator._runr   c                 C   r   )zcDaily Log Return (DLR)

        Returns:
            pandas.Series: New feature generated.
        r   r   d_logretr   r    r$   r   r   r   daily_log_return<   r'   z(DailyLogReturnIndicator.daily_log_returnNr(   )
r)   r*   r+   r,   r"   r#   r-   r   r   r4   r   r   r   r   r/   )   s
    	r/   c                   @   r   )CumulativeReturnIndicatorzCumulative Return (CR)

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.
    Fr   r   c                 C   r   r   r	   r   r   r   r   r   N   r   z"CumulativeReturnIndicator.__init__c                 C   s*   | j | j jd  d | _|  jd9  _d S )Nr   r   r   )r
   iloc_crr   r   r   r   r   S   r   zCumulativeReturnIndicator._runr   c                 C   r   )zcCumulative Return (CR)

        Returns:
            pandas.Series: New feature generated.
        r   cum_retr   )r!   r7   r"   r#   )r   r9   r   r   r   cumulative_returnW   r'   z+CumulativeReturnIndicator.cumulative_returnNr(   )
r)   r*   r+   r,   r"   r#   r-   r   r   r:   r   r   r   r   r5   F   r.   r5   Fc                 C      t | |d S )zDaily Return (DR)

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.

    Returns:
        pandas.Series: New feature generated.
    r   r   )r   r&   r<   r   r   r   r&   a      
r&   c                 C   r;   )a"  Daily Log Return (DLR)

    https://stackoverflow.com/questions/31287552/logarithmic-returns-in-pandas-dataframe

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.

    Returns:
        pandas.Series: New feature generated.
    r<   )r/   r4   r<   r   r   r   r4   n   s   r4   c                 C   r;   )zCumulative Return (CR)

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.

    Returns:
        pandas.Series: New feature generated.
    r<   )r5   r:   r<   r   r   r   r:   }   r=   r:   r(   )r,   numpyr0   pandasr"   ta.utilsr   r   r/   r5   r&   r4   r:   r   r   r   r   <module>   s    

