
    i                         S SK Jr  S SKJrJr  S SKJrJrJr  S SK	J
r
  S SKJrJrJrJr  S\S\S\S	\4S
 jr   SS\S\S\S\S	\S\S\S\4S jjrg)    )nan)	DataFrameSeries)DictLikeIntIntFloat)ema)non_zero_rangev_offsetv_pos_defaultv_seriescloseseed	tc_lengthfactorc           	         UR                  U5      R                  5       n[        UR                  U5      R                  5       U5      n[	        U5      nS/U-  S/U-  pS/U-  S/U-  p[        SU5       GH  nUR                  U   S:  a5  SUR                  U   UR                  U   -
  UR                  U   -  -  X{'   O	X{S-
     X{'   [        XS-
     X7U   XS-
     -
  -  -   S5      X'   X:  a#  [        US US-    5      n[        US US-    5      nO,[        XU-
  S-   US-    5      n[        XU-
  S-   US-    5      nX-
  S:  a  X-
  OSnUS:  a  SX   U-
  U-  -  X'   O	XS-
     X'   [        XS-
     X9U   XS-
     -
  -  -   S5      X'   GM     [        XR                  S9n[        XR                  S9nUU4$ )Nr      d      index)
rollingminr
   maxlenrangeilocroundr   r   )r   r   r   r   lowest_xmacdxmacd_rangemstoch1pfstoch2pffi	lowest_pf
highest_pfpf_range	pf_series
pff_seriess                    Q/var/www/html/trading/venv/lib/python3.13/site-packages/pandas_ta/momentum/stc.py	schaff_tcr-      s   <<	*..0L i!8!<!<!>MKD	A q1#'B#'A37C1a[Q!#		!|/@/@/C C{GWGWXYGZZ[FI1uFIbQi6AYE-B#CDaH = Bt!HIR1XJB9}q0Q78IRI 1!a%89J .8-Ca-G:)Q a<	 1X=>FI1uFIsq5zVay31u:/E%FGK7 : r-I;;/Jy      Nfastslowoffsetkwargsreturnc                 :   [        US5      n[        US5      n[        US5      nX2:  a  X2p2[        XU5      n[        X5      n U c  g[        US5      n[        U5      nUR	                  SS5      nUR	                  SS5      n	UR	                  S	S5      n
[        U[        5      (       a>  [        U	[        5      (       a)  U
(       d"  [        X5      n[        X5      n	Ub  U	c  gX-
  nO=[        U
[        5      (       a  [        X5      n
U
c  gU
nO[        XS
9n[        XS
9nX-
  n[        XX5      u  p[        USUS-
  & [        XR                  S9n[        XR                  S9n[        XR                  S9n[        UR                  SUS-
  & US:w  a3  UR                  U5      nUR                  U5      nUR                  U5      nSU;   a9  UR                  US   SS9  UR                  US   SS9  UR                  US   SS9  SU SU SU SU 3nSU 3Ul        SU 3Ul        SU 3Ul        S=Ul        =Ul        Ul        UR                  UUR                  UUR                  U0n[!        UU R                  S9nSU 3Ul        UR                  Ul        U$ )a>  Schaff Trend Cycle

This indicator is an evolved MACD with additional smoothing.

Sources:
    * [rengel8](https://github.com/rengel8)
    * [prorealcode](https://www.prorealcode.com/prorealtime-indicators/schaff-trend-cycle2/)

Parameters:
    close (Series): ```close``` Series
    tc_length (int): TC period. (Adjust to the half of cycle)
        Default: ```10```
    fast (int): Fast MA period. Default: ```12```
    slow (int): Slow MA period. Default: ```26```
    factor (float): Smoothing factor for last stoch. calculation.
        Default: ```0.5```
    offset (int): How many bars to shift the results. Default: ```0``

Other Parameters:
    ma1 (Series): User chosen MA. Default: ```False```
    ma2 (Series): User chosen MA. Default: ```False```
    osc (Series): User chosen oscillator. Default: ```False```
    fillna (value): ```pd.DataFrame.fillna(value)```

Returns:
    (DataFrame): 3 columns

Note:
    Can also seed STC with two MAs, ```ma1``` and ```ma2```, or an oscillator ```osc```.

    * ```ma1``` and ```ma2``` are **both** required if this option is used.
      
   Ng      ?ma1Fma2osc)lengthr   r   r   fillnaT)inplace_STCSTCmacdSTCstochmomentum)r   r   r   r   pop
isinstancer   r	   r-   r   r   r   shiftr<   namecategoryr   )r   r   r/   r0   r   r1   r2   _lengthr8   r9   r:   r   fastmaslowmar%   r#   stcmacdstoch_propsdatadfs                         r,   rK   rK   ;   s   L r"Dr"Di,I{d)4(GU$E}63'FfF **UE
"C
**UE
"C
**UE
"C#v:c6#:#:3s$s$;#+y	C	 	 s$; U(U(Y7GCB|!
KK
(C$kk*D2[[)E CHH\gk {iizz&!F# 6

6(#T
2F8$d3VH%t4 1TF!D66(3FVH~CH&"DIF8$EJ4>>CL>4=5> 	#		4

ED
 
4u{{	+BF8nBG,,BKIr.   )NNNNN)numpyr   pandasr   r   pandas_ta._typingr   r   r   pandas_ta.overlapr	   pandas_ta.utilsr
   r   r   r   intr-   rK    r.   r,   <module>rX      s     $ 5 5 ! )!V )!6 )!c )!8 )!Z %);?tt!t
tt08t t #+t 	tr.   