
    i                         S SK Jr  S SKJrJr  S SKJrJr  S SKJ	r	  S SK
Jr  S SKJrJrJrJrJrJr     SS\S	\S
\S\S\S\S\S\S\S\S\S\4S jjrg)    )isnan)	DataFrameSeries)DictLikeInt)ma)hlc3)signed_seriesv_driftv_mamodev_offsetv_pos_defaultv_seriesNhighlowclosevolumefastslowsignalmamodedriftoffsetkwargsreturnc
                 J   [        US5      n[        US5      n[        US5      n[        XE5      U-   n[        X5      n [        X5      n[        X+5      n[        X;5      nU b	  Ub  Ub  Uc  g[        US5      n[	        U5      n[        U	5      n	U[        [        XU5      S5      -  nUR                  UR                  5       S24   n[        X}US9[        X}US9-
  nUb'  [        [        UR                  5       5      5      (       a  g[        X~R                  UR                  5       S24   US9nUb'  [        [        UR                  5       5      5      (       a  gU	S:w  a"  UR                  U	5      nUR                  U	5      nS	U
;   a&  UR                  U
S	   S
S9  UR                  U
S	   S
S9  SU SU SU 3nSU 3Ul        SU 3Ul        S=Ul        Ul        UR                   XR                   U0n[%        UUR&                  S9nSU 3Ul        UR"                  Ul        U$ )a"  Klinger Volume Oscillator

This indicator, by Stephen J. Klinger., attempts to predict
price reversals.

Sources:
    * [daytrading](https://www.daytrading.com/klinger-volume-oscillator)
    * [investopedia](https://www.investopedia.com/terms/k/klingeroscillator.asp)

Parameters:
    high (Series): ```high``` Series
    low (Series): ```low``` Series
    close (Series): ```close``` Series
    volume (Series): ```volume``` Series
    fast (int): Fast MA period. Default: ```34```
    slow (int): Slow MA period. Default: ```55```
    signal (int): Signal period. Default: ```13```
    mamode (str): See ```help(ta.ma)```. Default: ```"ema"```
    offset (int): Post shift. Default: ```0```

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

Returns:
    (DataFrame): 2 columns
"   7      Nema)lengthr   fillnaT)inplace_KVOKVOsr   )index)r   maxr   r   r   r   r
   r	   locfirst_valid_indexr   allr   to_numpyshiftr#   namecategoryr   r(   )r   r   r   r   r   r   r   r   r   r   r   _lengthsigned_volumesvkvo
kvo_signal_propsdatadfs                      O/var/www/html/trading/venv/lib/python3.13/site-packages/pandas_ta/volume/kvo.pyr4   r4      s'   B r"Dr"D62&F$o&GD"D
3
 CU$Ef&F|s{emv~fe$FENEfF ]45+A2FFM			=::<=>	@B
V
%6d(C
CC
{c%/00FGGC$9$9$;$<$=?OJSz':':'<!=>> {ii%%f-
 6

6(#T
2&*D9 avQvh'FVH~CHVHoJO)11CL:&HHc??J7D	4u{{	+BF8nBG,,BKI    )NNNNNN)numpyr   pandasr   r   pandas_ta._typingr   r   pandas_ta.mar   pandas_ta.overlapr	   pandas_ta.utilsr
   r   r   r   r   r   strr4    r:   r9   <module>rC      s     $ +  "  7;%)	R
RR&,R6<R
RR03R R  #R 	R #+	R
 Rr:   