
    i                         S SK JrJrJr  S SKJrJr  S SKJrJ	r	J
r
  S SKJrJrJrJr     SS\S\S\S	\
S
\
S\
S\	S\S\4S jjrSS\4S jjrg)    )fullnanzeros)	DataFrameSeries)DictLikeIntIntFloat)v_offsetv_pos_defaultv_serieszeroNhighlowcloseaf0afmax_afoffsetkwargsreturnc           	      :   Sn	[        X	5      n [        X5      nU b  Uc  gU R                  5       n
UR                  5       nU R                  5       UR                  5       p[        US5      n[        X<5      nUn[        US5      n[	        U5      nU R
                  n[        U5      n[        U[        5      n[        U[        5      n[        U[        S9n[        U5      nUUSS& [        U
R                  SS UR                  SS 5      nU(       a  US   OU S   nUb  [        U5      nUR                  S   US'   OU(       a  U S   OUS   US'   [        SU5       H  nUUS-
     UUUUS-
     -
  -  -   UU'   U(       a@  U U   UU   :  nUU   U:  a  UU   n[        XC-   U5      n[        U US-
     UU   5      UU'   O?UU   UU   :  nU U   U:  a  U U   n[        XC-   U5      n[        UUS-
     UU   5      UU'   U(       a  UUU'   UnU(       + nU(       a  UU   OU U   nU(       a	  UU   UU'   OUU   UU'   UUU'   [        U5      UU'   M     [        UU
R                   S9n[        XR                   S9n[        UU
R                   S9n[        UU
R                   S9nUS:w  aD  UR#                  U5      nUR#                  U5      nUR#                  U5      nUR#                  U5      nS	U;   aL  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  SnSU SU 3nU SU 3UU SU 3UU SU 3UU SU 3U0n['        UU
R                   S9nU U 3Ul        S=Ul        =Ul        Ul        U$ )a  Parabolic Stop and Reverse

This indicator, by J. Wells Wilder, attempts to identify trend direction
and potential reversals.

Sources:
    * [sierrachart](https://www.sierrachart.com/index.php?page=doc/StudiesReference.php&ID=66&Name=Parabolic)
    * [tradingview](https://www.tradingview.com/pine-script-reference/#fun_sar)

Parameters:
    high (Series): ```high``` Series
    low (Series): ```low``` Series
    close (Series): Optional ```close``` Series
    af0 (float): Initial Acceleration Factor. Default: ```0.02```
    af (float): Acceleration Factor. Default: ```0.02```
    max_af (float): Maximum Acceleration Factor. Default: ```0.2```
    offset (int): Post shift. Default: ```0```

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

Returns:
    (DataFrame): 4 columns

Warning:
    TA-Lib Correlation: ```np.float64(0.9837617513753181)```

Tip:
    Corrective contributions welcome!
   Ng{Gz?g?)dtype   r   )indexfillnaT)inplacePSAR_lsr   rtrend)r   copyto_numpyr   r   sizer   r   r   int_fallingilocrangeminmaxr   r   shiftr   r   namecategory)r   r   r   r   r   r   tvr   r   _length	orig_highorig_lowpafmsarlongshortreversal_affallingepireverse_name_propsdatadfs                              O/var/www/html/trading/venv/lib/python3.13/site-packages/pandas_ta/trend/psar.pypsarrE   	   s   H GD"D
3
 C|s{		IxxzH#
D
!C

!C	B63'FfF 			A
(C3<DCLEQc"H
(CCGy~~bq)8==!+<=GQQBAA#aQA 1a[QUbBQUO44A1gA&G1v{V6*a!ec!f-CF!fs1voGAw|!W6*QUSV,CFCFB!kG"QQB 1vE!H!fDGA'l; > IOO
,C$oo.D5	0Ehioo6H {iizz&!F#>>&) 6

6(#T
2F8$d3VH%t4x($7 EQvhF '6(T'6(U'F8c'6(X	D 
4y	/Bx BG3::BK:$-%.I    driftc                     X R                  U5      -
  nUR                  U5      U-
  nXC:  US:  -  U-  R                  [        5      R                  S   nUS:  $ )zReturns the last -DM valuer   )r.   applyr   r*   )r   r   rG   updn_dmns         rD   r)   r)      s\     


5!	!B	5	C	Bg"q&!R'..t499"=D!8OrF   )NNNNFN)r   )numpyr   r   r   pandasr   r   pandas_ta._typingr   r	   r
   pandas_ta.utilsr   r   r   r   rE   r(   r)    rF   rD   <module>rS      s    " " $ 5 5 C C
 04KPH
HH&,H	H&H7?H H #+H 	HVs rF   