
    Q-j                         d dl 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lmZ d dlmZ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dedefdZy)    )isnan)	DataFrameSeries)DictLikeIntIntFloat)ma)Imports)tal_mav_mamodev_offsetv_pos_defaultv_scalarv_seriesv_talibNclosefastslowsignalscalarmamodetaliboffsetkwargsreturnc                    t        |d      }t        |d      }t        |d      }||k  r||}}t        |||      }	t        | |	      } | yt        |d      }t	        |d      }t        |      }
t        |      }t        d   r|
rdd	lm	}  || ||t        |            }n)t        || ||

      }t        || ||

      }|||z
  z  |z  }t        t        |            ryt        d|||

      }||z
  }|dk7  r3|j                  |      }|j                  |      }|j                  |      }d|v rB|j                  |d   d       |j                  |d   d       |j                  |d   d       d| d| d| }d| |_        d| |_        d| |_        dx|_        x|_        |_        |j                   ||j                   ||j                   |i}t%        || j&                        }d| |_        |j"                  |_        |S )a  Percentage Price Oscillator

    Similar to MACD.

    Sources:
        * [investopedia](https://www.investopedia.com/terms/p/ppo.asp)

    Parameters:
        close (Series): ```close``` Series
        fast (int): Fast MA period. Default: ```12```
        slow (int): Slow MA period. Default: ```26```
        signal (int): Signal period. Default: ```9```
        scalar (float): Scalar. Default: ```100```
        mamode (str): See ```help(ta.ma)```. Default: ```"sma"```
        talib (bool): If installed, use TA Lib. Default: ```True```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (DataFrame): 3 columns
          	   Nd   smar   r   )PPO)lengthr   emafillnaT)inplace_r"   PPOhPPOsmomentum)index)r   maxr   r   r   r   r   r
   r   r"   r   r	   allr   shiftr%   namecategoryr   r+   )r   r   r   r   r   r   r   r   r   _lengthmode_talr"   ppofastmaslowmasignalma	histogram_propsdatadfs                       d/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/momentum/ppo.pyr3   r3      s,   : r"Dr"D61%Fd{4d$f%GUG$E}fc"Ffe$Fu~HfF wH%tVF^4FE$h?FE$h?(61
5:%V8<HhI {iiOOF+	>>&) 6

6(#T
2)48x($7 avQvh'FVH~CHF8_IN6(OHM<FFCLF9%(9 	#	xD
 
4u{{	+BF8nBG,,BKI    )NNNNNNN)numpyr   pandasr   r   pandas_ta._typingr   r   r   pandas_ta.mar	   pandas_ta.mapsr
   pandas_ta.utilsr   r   r   r   r   r   r   strboolr3    r<   r;   <module>rF      s     $ 5 5  "   FJ?CXXX+.X?BXX%(X8<X X #+X 	Xr<   