
    Q-j:                     z    d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	m
Z
mZ d dlmZ 	 	 ddeded	ed
edededefdZy)    )Series)DictLikeInt)emasma)v_offsetv_pos_defaultv_series)atrNhighlowcloselengthoffsetkwargsreturnc           	      f   t        |d      }d|z  }t        | |      } t        ||      }t        ||      }| ||yt        |      }|t        ||      z
  t	        t        | |||      |      z  }|dk7  r|j                  |      }d|v r|j                  |d   d       d| |_        d	|_	        |S )
a4  Pretty Good Oscillator

    This indicator, by Mark Johnson, attempts to identify breakouts for longer
    time periods based on the distance of the current bar to its N-day
    SMA, expressed in terms of an ATR over a similar length.

    Sources:
        * [tradingtechnologies](https://library.tradingtechnologies.com/trade/chrt-ti-pretty-good-oscillator.html)

    Parameters:
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        close (Series): ```close``` Series
        length (int): The period. Default: ```14```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (Series): 1 column

    Note: Entry
        * Long when greater than 3.
        * Short when less than -3.
          Nr   fillnaT)inplacePGO_momentum)
r	   r
   r   r   r   r   shiftr   namecategory)r   r   r   r   r   r   _lengthpgos           d/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/momentum/pgo.pyr   r   
   s    > 62&F&jGD'"D
3
 CUG$E|s{emfF 3uf%%
c$UF+V
45C {ii 6

6(#T
2 fXCHCLJ    )NN)pandasr   pandas_ta._typingr   r   pandas_ta.overlapr   r   pandas_ta.utilsr   r	   r
   pandas_ta.volatilityr   r    r    r   <module>r'      s_     + & = = $
 =A:
::&,:69::"*: :r    