o
    OÊÆhã  ã                   @   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 )ÚDailyReturnIndicatorz‡Daily 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   úV/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/ta/others.pyÚ__init__   ó   zDailyReturnIndicator.__init__c                 C   s4   | j | j jd| j  ¡ d� d | _|  jd9  _d S )Né   )Ú
fill_valueéd   )r
   ÚshiftÚmeanÚ_dr©r   r   r   r   r      s   þ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      s
    r   c                   @   r   )ÚDailyLogReturnIndicatorzæ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.
    Fr   r   c                 C   r   r   r	   r   r   r   r   r   5   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   :   ó   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   r5   r   r   r   r   r/   +   s
    	r/   c                   @   r   )ÚCumulativeReturnIndicatorzŒCumulative 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   P   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   U   r3   zCumulativeReturnIndicator._runr   c                 C   r   )zcCumulative Return (CR)

        Returns:
            pandas.Series: New feature generated.
        éÿÿÿÿr   Úcum_retr   )r"   r8   r#   r$   )r   r:   r   r   r   Úcumulative_returnY   r(   z+CumulativeReturnIndicator.cumulative_returnNr)   )
r*   r+   r,   r-   r#   r$   r.   r   r   r;   r   r   r   r   r6   H   s
    r6   Fc                 C   ó   t | |d� ¡ S )zÃDaily 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'   c   ó   
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/   r5   r=   r   r   r   r5   p   s   r5   c                 C   r<   )zÈCumulative Return (CR)

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

    Returns:
        pandas.Series: New feature generated.
    r=   )r6   r;   r=   r   r   r   r;      r>   r;   r)   )r-   Únumpyr0   Úpandasr#   Úta.utilsr   r   r/   r6   r'   r5   r;   r   r   r   r   Ú<module>   s    

