
    i                         S SK JrJr  S SKJrJrJr  S SKJr  S SK	J
r
JrJrJrJr      SS\S\S\S	\S
\S\S\S\S\S\S\S\S\S\4S jjrg)    )	DataFrameSeries)DictLikeIntIntFloat)Imports)v_driftv_offsetv_pos_defaultv_seriesv_talibNhighlowclosefastmediumslowfast_wmedium_wslow_wtalibdriftoffsetkwargsreturnc                    [        US5      n[        US5      n[        US5      n[        X4U5      S-   n[        X5      n [        X5      n[        X-5      nU b  Ub  Uc  g[        US5      n[        US5      n[        US5      n[        U	5      n[	        U
5      n
[        U5      n[        S	   (       a  U(       a  S
SKJn  U" XX#XE5      nGOWUR                  U
5      n[        SU SUSU
 3U05      nUR                  SS2SSU
 3/4   R                  SS9nUR                  SS2SSU
 3/4   R                  SS9nAUU-
  nUU-
  nUR                  U5      R                  5       UR                  U5      R                  5       -  nUR                  U5      R                  5       UR                  U5      R                  5       -  nUR                  U5      R                  5       UR                  U5      R                  5       -  nXg-   U-   nUU-  UU-  -   UU-  -   nSU-  U-  nUS
:w  a  UR                  U5      nSU;   a  UR                  US   SS9  SU SU SU 3Ul        SUl        U$ )a  Ultimate Oscillator

This indicator, by Larry Williams, attempts to identify momentum.

Sources:
    * [tradingview](https://www.tradingview.com/wiki/Ultimate_Oscillator_(UO))

Parameters:
    high (Series): ```high``` Series
    low (Series): ```low``` Series
    close (Series): ```close``` Series
    fast (int): The Fast %K period. Default: ```7```
    medium (int): The Slow %K period. Default: ```14```
    slow (int): The Slow %D period. Default: ```28```
    fast_w (float): The Fast %K period. Default: ```4.0```
    medium_w (float): The Slow %K period. Default: ```2.0```
    slow_w (float): The Slow %D period. Default: ```1.0```
    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
            Ng      @g       @g      ?r   r   )ULTOSCr   r   close_)axisd   fillnaT)inplaceUO__momentum)r   maxr   r   r	   r
   r   r   r!   shiftr   locminrollingsumr%   namecategory)r   r   r   r   r   r   r   r   r   r   r   r   r   _lengthmode_talr!   uoclose_drifttdfmax_h_or_pcmin_l_or_pcbptrfast_avg
medium_avgslow_avgtotal_weightweightss                               P/var/www/html/trading/venv/lib/python3.13/site-packages/pandas_ta/momentum/uo.pyr4   r4      s   F q!D62&Fr"D$%)GD"D
3
 CU$E|s{em63'FXs+H63'Fu~HENEfF wH DuF9kk%(D%ug&6
  gga&F5'*:!;;<@@a@Hgga%6%)9!::;??Q?G[ ;&::d#'')BJJt,<,@,@,BBZZ'++-

60B0F0F0HH
::d#'')BJJt,<,@,@,BB(61H$J)>? "7]\) {XXf 6
		&"D	1 D66(!D6*BGBKI    )	NNNNNNNNN)pandasr   r   pandas_ta._typingr   r   r   pandas_ta.mapsr   pandas_ta.utilsr	   r
   r   r   r   boolr4    rA   r@   <module>rH      s    $ 5 5 "  7;KO%)Z
ZZ&,Z
Z!Z03Z Z (0Z AIZ 	Z  #	Z
 Z
 #+Z ZrA   