
    /i                         d Z ddlZddlZddlmZ  G d de          Z G d de          Z G d d	e          Z	ddZ
ddZddZdS )zi
.. module:: others
   :synopsis: Others Indicators.

.. moduleauthor:: Dario Lopez Padial (Bukosabino)

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

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.
    Fclosefillnac                 J    || _         || _        |                                  d S N_close_fillna_runselfr   r   s      O/var/www/html/crypto-bot/backend/venv/lib/python3.11/site-packages/ta/others.py__init__zDailyReturnIndicator.__init__   !    		    c                 z    | j         | j                             d          z  dz
  | _        | xj        dz  c_        d S )N   d   )r   shift_drr   s    r   r   zDailyReturnIndicator._run   s8    K$+"3"3A"6"66!;Cr   returnc                 f    |                      | j        d          }t          j        |d          S )z^Daily Return (DR)

        Returns:
            pandas.Series: New feature generated.
        r   valued_retname_check_fillnar   pdSeriesr   	dr_seriess     r   daily_returnz!DailyReturnIndicator.daily_return   s3     &&txq&99	y1111r   NF)
__name__
__module____qualname____doc__r#   r$   boolr   r   r'    r   r   r   r      ss          bi     
  2bi 2 2 2 2 2 2r   r   c                   J    e Zd ZdZd
dej        defdZd Zdej        fdZ	d	S )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                 J    || _         || _        |                                  d S r	   r
   r   s      r   r   z DailyLogReturnIndicator.__init__3   r   r   c                     t          j        t          j        | j                                                            | _        | xj        dz  c_        d S )Nr   )r#   r$   nplogr   diffr   r   s    r   r   zDailyLogReturnIndicator._run8   s>    9RVDK00116688Cr   r   c                 f    |                      | j        d          }t          j        |d          S )zcDaily Log Return (DLR)

        Returns:
            pandas.Series: New feature generated.
        r   r   d_logretr   r!   r%   s     r   daily_log_returnz(DailyLogReturnIndicator.daily_log_return<   s3     &&txq&99	y4444r   Nr(   )
r)   r*   r+   r,   r#   r$   r-   r   r   r8   r.   r   r   r0   r0   )   ss          bi     
  5") 5 5 5 5 5 5r   r0   c                   J    e Zd ZdZd
dej        defdZd Zdej        fdZ	d	S )CumulativeReturnIndicatorzCumulative Return (CR)

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.
    Fr   r   c                 J    || _         || _        |                                  d S r	   r
   r   s      r   r   z"CumulativeReturnIndicator.__init__N   r   r   c                 j    | j         | j         j        d         z  dz
  | _        | xj        dz  c_        d S )Nr   r   r   )r   iloc_crr   s    r   r   zCumulativeReturnIndicator._runS   s2    K$+"21"55:Cr   r   c                 f    |                      | j        d          }t          j        |d          S )zcCumulative Return (CR)

        Returns:
            pandas.Series: New feature generated.
        r   cum_retr   )r"   r>   r#   r$   )r   rA   s     r   cumulative_returnz+CumulativeReturnIndicator.cumulative_returnW   s3     $$TXR$88yy1111r   Nr(   )
r)   r*   r+   r,   r#   r$   r-   r   r   rB   r.   r   r   r:   r:   F   ss          bi     
  229 2 2 2 2 2 2r   r:   Fc                 H    t          | |                                          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'   rD   s     r   r'   r'   a   s#      eF;;;HHJJJr   c                 H    t          | |                                          S )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.
    rD   )r0   r8   rD   s     r   r8   r8   n   s#     #v>>>OOQQQr   c                 H    t          | |                                          S )zCumulative Return (CR)

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

    Returns:
        pandas.Series: New feature generated.
    rD   )r:   rB   rD   s     r   rB   rB   }   s#     %5@@@RRTTTr   r(   )r,   numpyr3   pandasr#   ta.utilsr   r   r0   r:   r'   r8   rB   r.   r   r   <module>rJ      s            # # # # # #2 2 2 2 2> 2 2 265 5 5 5 5n 5 5 5:2 2 2 2 2 2 2 26
K 
K 
K 
KR R R R
U 
U 
U 
U 
U 
Ur   