
    5i                     ~    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y)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Zd Zdej
                  fdZ	y)
DailyReturnIndicatorzDaily Return (DR)

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.
    closefillnac                 @    || _         || _        | j                          y N_close_fillna_runselfr   r   s      G/var/www/app/trading-bot/venv/lib/python3.12/site-packages/ta/others.py__init__zDailyReturnIndicator.__init__       		    c                     | j                   | j                   j                  d      z  dz
  | _        | xj                  dz  c_        y )N   d   )r   shift_drr   s    r   r   zDailyReturnIndicator._run   s3    KK$++"3"3A"66!;Cr   returnc                 j    | j                  | 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   s.     &&txxq&9	yy11r   NF)
__name__
__module____qualname____doc__r#   r$   boolr   r   r'    r   r   r   r      s3    bii  
2bii 2r   r   c                   \    e Zd ZdZd	dej
                  defdZd Zdej
                  fdZ	y)
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.
    r   r   c                 @    || _         || _        | j                          y r	   r
   r   s      r   r   z DailyLogReturnIndicator.__init__3   r   r   c                     t        j                  t        j                  | j                              j                         | _        | xj                  dz  c_        y )Nr   )r#   r$   nplogr   diffr   r   s    r   r   zDailyLogReturnIndicator._run8   s5    99RVVDKK01668Cr   r   c                 j    | j                  | 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<   s.     &&txxq&9	yy44r   Nr(   )
r)   r*   r+   r,   r#   r$   r-   r   r   r8   r.   r   r   r0   r0   )   s3    bii  
5")) 5r   r0   c                   \    e Zd ZdZd	dej
                  defdZd Zdej
                  fdZ	y)
CumulativeReturnIndicatorzCumulative Return (CR)

    Args:
        close(pandas.Series): dataset 'Close' column.
        fillna(bool): if True, fill nan values.
    r   r   c                 @    || _         || _        | j                          y r	   r
   r   s      r   r   z"CumulativeReturnIndicator.__init__N   r   r   c                     | j                   | j                   j                  d   z  dz
  | _        | xj                  dz  c_        y )Nr   r   r   )r   iloc_crr   s    r   r   zCumulativeReturnIndicator._runS   s3    KK$++"2"21"55:Cr   r   c                 j    | j                  | 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   s.     $$TXXR$8yyy11r   Nr(   )
r)   r*   r+   r,   r#   r$   r-   r   r   rB   r.   r   r   r:   r:   F   s3    bii  
2299 2r   r:   c                 8    t        | |      j                         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Jr   c                 8    t        | |      j                         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Qr   c                 8    t        | |      j                         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Tr   r(   )r,   numpyr3   pandasr#   ta.utilsr   r   r0   r:   r'   r8   rB   r.   r   r   <module>rJ      sK      #2> 265n 5:2 26
KR
Ur   