
    i0                         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  S SKJrJrJrJr  SSKJr      SS
\S\S\S\S\S\S\S\S\S\S\4S jjrg	)    )	DataFrameSeries)DictLikeInt)ma)long_run)	short_run)v_mamodev_offsetv_pos_defaultv_series   )obvNclosevolumefastslowmax_lookbackmin_lookbackmamode
run_lengthoffsetkwargsreturnc	                    [        US5      n[        US5      n[        US5      n[        US5      nX2:  a  X2p2[        XE5      U-   n
[        X
5      n [        X5      nU b  Uc  g[        US5      n[        US5      n[	        U5      nSU	;   a  U	R                  S5        [        SXS.U	D6n[        Xk4SU0U	D6n[        Xk4SU0U	D6n[        XUS9n[        XUS9nUS	:w  aU  UR                  U5      nUR                  U5      nUR                  U5      n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  UR                  U	S
   SS9  UR                  U	S
   SS9  UR                  U	S
   SS9  [        U5      (       a  UR                  5       S	   OSnUR                  USU 3UR                  U5      R!                  5       SU 3UR                  U5      R                  5       SU SU 3USU SU 3USU 3USU 3U0n[#        UU R$                  S9nSU SU SU SU SU SU 3Ul        SUl        U$ )a  Archer On Balance Volume

This indicator, by Kevin Johnson, attempts to identify OBV trends using
two moving averages. It also attempts to identify if the moving averages
are in a long_run or short_run. Finally, it also calculates the rolling
maximum and minimum of OBV.

Sources:
    * Kevin Johnson
    * [tradingview](https://www.tradingview.com/script/Co1ksara-Trade-Archer-On-balance-Volume-Moving-Averages-v1/)

Parameters:
    close (Series): ```close``` Series
    volume (Series): ```volume``` Series
    fast (int): Fast MA period. Default: ```4```
    slow (int): Slow MA period. Default: ```12```
    max_lookback (int): Maximum OBV period. Default: ```2```
    min_lookback (int): Minimum OBV period. Default: ```2```
    run_length (int): Long and short run period. Default: ```2```
    mamode (str): See ```help(ta.ma)```. Default: ```"ema"```
    offset (int): Post shift. Default: ```0```

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

Returns:
    (DataFrame): 6 columns

Note:
    * [long_run](../api/trend.md/#src.pandas_ta.trend.long_run.long_run)
    * [short_run](../api/trend.md/#src.pandas_ta.trend.short_run.short_run)
         Nemalength)r   r   )r    r   fillnaT)inplace OBV_min_OBV_max_OBV_AOBV_LR_AOBV_SR_)indexAOBVr    )r   maxr   r
   r   popr   r   r   r	   shiftr!   lenlowernamerollingminr   r*   category)r   r   r   r   r   r   r   r   r   r   _lengthobv_mafmasobv_long	obv_short_modedatadfs                      P/var/www/html/trading/venv/lib/python3.13/site-packages/pandas_ta/volume/aobv.pyaobvr@      s   N q!Dr"D q1L q1L{d,-4GU$Ef&F}fe$Fz1-JfF6

8 4U4V4D
V
1$
1&
1C
V
1$
1&
1C4H#:6I {zz&!iiii>>&)OOF+	 6F8$d3

6(#T
2

6(#T
2x($7)48!$VFLLN1"E		4
<.!4<<#=#A#A#C
<.!4<<#=#A#A#C
eWAdVc
eWAdVc
:,
:,D 
4u{{	+B UG1TF!D6<.,qUBGBKI    )NNNNNNN)pandasr   r   pandas_ta._typingr   r   pandas_ta.mar   pandas_ta.trend.long_runr   pandas_ta.trend.short_runr	   pandas_ta.utilsr
   r   r   r   r   strr@   r,   rA   r?   <module>rI      s    $ +  - / G G 
 BF26*.	ee!e),e;>ee,/e e %(e 	e #+	e
 erA   