
    Q-j                         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
mZmZmZmZ 	 	 	 ddeded	ed
edededefdZdeded
efdZy)    )nan)Series)DictLikeInt)Imports)v_driftv_offsetv_pos_defaultv_seriesv_talibNcloselengthtalibdriftoffsetkwargsreturnc                    t        |d      }t        | |dz         } | yt        |      }t        |      }t	        |      }| j
                  }d|dz   z  }t        d   r|rddlm}	 d |	| |      z  }
nt        | ||      }
|
j                         j                  t              }t        d	| j                  
      }t        ||      D ]Z  }||j                   |   z  | j                   |   z  |j                   |dz
     d||j                   |   z  z
  z  z   |j                   |<   \ |j#                  dt$        id       |dk7  r|j'                  |      }d|v r|j)                  |d   d       d| |_        d|_        |S )au  Variable Index Dynamic Average

    This indicator, by Tushar Chande, is similar to an EMA but it has a
    dynamically adjusted lookback period dependent based on CMO.

    Sources:
        * [perfecttrendsystem](https://www.perfecttrendsystem.com/blog_mt4_2/en/vidya-indicator-for-mt4)
        * [tradingview](https://www.tradingview.com/script/hdrf0fXV-Variable-Index-Dynamic-Average-VIDYA/)

    Parameters:
        close (Series): ```close``` Series
        length (int): The period. Default: ```14```
        talib (bool): If installed, use TA Lib. Default: ```True```
        drift (int): Difference amount. Default: ```1```
        offset (int): Post shift. Default: ```0```

    Other Parameters:
        fillna (value): ```pd.DataFrame.fillna(value)```

    Returns:
        (Series): 1 column

    Note:
        Sometimes used as a moving average or a trend identifier.
          N   r   r   )CMOg{Gz?g        )indexT)inplacefillnaVIDYA_overlap)r
   r   r   r   r	   sizer   r   r   _cmoabsastypefloatr   r   rangeilocreplacer   shiftr   namecategory)r   r   r   r   r   r   mode_talmalphar   cmo_abs_cmovidyais                 e/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/overlap/vidya.pyr.   r.      s{   > 62&FUFQJ'E}u~HENEfF 	

A!EwHc%((E65)hhj&G3ekk*E61Q/%**Q-?JJq1uUW\\!_%<!<=>

1  
MM1c(DM) {F# 6VH%t4 &"EJENL    xc                 R   | j                  |      }|j                         j                  d      }|j                         j                  d      j                         }|j	                  |      j                         }|j	                  |      j                         }||z
  ||z   z  S )a  Chande Momentum Oscillator Patch

    Unguarded CMO Patch

    Parameters:
        x (Series): ```x``` Series
        length (int): The period.
        drift (int): Difference amount.

    Returns:
        (Series): 1 column

    Info: Weird Circular TypeError!?
        For some reason: from pandas_ta.momentum import cmo causes
        pandas_ta.momentum.coppock to not be able to import it's _wma_ like
        from pandas_ta.overlap import wma?
    r   )lower)upper)diffcopyclipr    rollingsum)r2   r   r   mompositivenegativepos_sumneg_sums           r0   r   r   Y   s    $ &&-CxxzQ'HxxzQ'++-Hv&**,Gv&**,Gg'G"344r1   )NNNN)numpyr   pandasr   pandas_ta._typingr   r   pandas_ta.mapsr   pandas_ta.utilsr   r	   r
   r   r   boolr.   r    r1   r0   <module>rG      s      + "  "&%)FFFF"F F #+F 	FR5F 5C 5 5r1   