
    Q-jN	                         d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ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defdZy)    )Series)DictLikeIntIntFloat)Imports)rma)v_driftv_offsetv_pos_defaultv_scalarv_seriesv_talibNcloselengthscalartalibdriftoffsetkwargsreturnc                    t        |d      }t        | |dz         } | yt        |d      }t        |      }t	        |      }t        |      }t        d   r|rddlm}  || |      }	n| j                  |      }
|
j                         j                  d      }|
j                         j                  d	      j                         }|rt        ||      }t        ||      }n>|j                  |      j                         }|j                  |      j                         }|||z
  z  ||z   z  }	|dk7  r|	j!                  |      }	d
|v r|	j#                  |d
   d       d| |	_        d|	_        |	S )ab  Chande Momentum Oscillator

    This indicator attempts to capture momentum.

    Sources:
        * [tradingtechnologies](https://www.tradingtechnologies.com/help/x-study/technical-indicator-definitions/chande-momentum-oscillator-cmo/)
        * [tradingview](https://www.tradingview.com/script/hdrf0fXV-Variable-Index-Dynamic-Average-VIDYA/)

    Parameters:
        close (Series): ```close``` Series
        scalar (float): Scalar. Default: ```100```
        talib (bool): If installed, use TA Lib. Uses EMA if ```False```.
            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:
        * Overbought around 50
        * Oversold around -50.
          Nd   r   r   )CMO)lower)upperfillnaT)inplaceCMO_momentum)r   r   r   r   r	   r
   r   r   r   diffcopyclipabsr   rollingsumshiftr   namecategory)r   r   r   r   r   r   r   mode_talr   cmomompositivenegativepos_neg_s                  d/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/momentum/cmo.pyr,   r,      sd   @ 62&FUFQJ'E}fc"Fu~HENEfF wH% jj88:???+88:???+//1x(Dx(D##F+//1D##F+//1Dt$t4 {ii 6

6(#T
2 fXCHCLJ    )NNNNN)pandasr   pandas_ta._typingr   r   r   pandas_ta.mapsr   pandas_ta.overlapr   pandas_ta.utilsr	   r
   r   r   r   r   boolr,    r3   r2   <module>r;      s}     5 5 " !  ;?%)III/7II"I I #+I 	Ir3   