
    i@                         S SK Jr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  S SKJrJrJrJrJrJr  SSKJr      SS	\S
\
S\
S\S\S\
S\
S\	S\4S jjrg)    )isnanmaximumminimumnan)	DataFrameSeries)DictLikeIntIntFloat)ma)v_driftv_mamodev_offsetv_pos_defaultv_scalarv_series   )rsiNcloselengthsmoothfactormamodedriftoffsetkwargsreturnc                 
   [        US5      n[        US5      nSU-  S-
  nX-   n	[        X	5      n U c  g[        US5      n[        US5      n[	        U5      n[        U5      n[        X5      n
US:w  a  UR                  5       S   OS	n[        XJUS
9nUR                  U5      R                  5       n[        [        U5      5      (       a  g[        SXS
9n[        [        U5      5      (       a  gU[        SXS
9-  n[        [        U5      5      (       a  gX-   nX-
  nU R                  n[        SU R                  S9n[        SU R                  S9n[        SU R                  S9n[        UR                   S   U R                  S9n[        ["        U R                  S9n[        ["        U R                  S9n[%        SU5       GH@  nUR                   U   UR                   US-
     nnUR                   US-
     UR                   US-
     nnUR                   US-
     UR                   US-
     nnUU:  a-  UU:  a'  ['        UUR                   U   5      UR                   U'   OUR                   U   UR                   U'   UU:  a-  UU:  a'  [)        UUR                   U   5      UR                   U'   OUR                   U   UR                   U'   UU:  a  UU:  d  UU::  aC  UU:  a=  SUR                   U'   UR                   U   =UR                   U'   UR                   U'   GM`  UU:  a  UU:  d  UU::  aC  UU:  a=  SUR                   U'   UR                   U   =UR                   U'   UR                   U'   GM  UR                   US-
     UR                   U'   UR                   U   S:X  a.  UR                   U   =UR                   U'   UR                   U'   GM  UR                   U   =UR                   U'   UR                   U'   GMC     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  U SU SU SU 3n SU  3Ul        SU  SUR1                  5        S3Ul        SU  3Ul        SU  3Ul        S=Ul        Ul        UR2                  =Ul        Ul        UR.                  UUR.                  UUR.                  UUR.                  U0n![5        U!U R                  S9n"SU  3U"l        UR2                  U"l        U"$ )u  Quantitative Qualitative Estimation

This indicator is similar to SuperTrend but uses a Smoothed ```rsi```
with upper and lower bands.

Sources:
    * [prorealcode](https://www.prorealcode.com/prorealtime-indicators/qqe-quantitative-qualitative-estimation/)
    * [tradingpedia](https://www.tradingpedia.com/forex-trading-indicators/quantitative-qualitative-estimation)
    * [tradingview](https://www.tradingview.com/script/IYfA9R2k-QQE-MT4/)

Parameters:
    close (Series): ```close``` Series
    length (int): RSI period. Default: ```14```
    smooth (int): RSI smoothing period. Default: ```5```
    factor (float): QQE Factor. Default: ```4.236```
    mamode (str): See ```help(ta.ma)```. Default: ```"ema"```
    drift (int): Difference amount. Default: ```1```
    offset (int): Post shift. Default: ```0```

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

Returns:
    (DataFrame): 4 columns

Tip: Trend
    * Long: When the Smoothed RSI crosses the previous upperband.
    * Short: When the Smoothed RSI crosses the previous lowerband.

Note: See also
    * QQE.mq5 by EarnForex Copyright © 2010
    * Tim Hyder (2008) version
    * Roman Ignatov (2006) version
         r   Ngl@emar    )r   )indexfillnaT)inplace_QQE_RSIMAQQElQQEsmomentum)r   r   r   r   r   r   r   lowerr   diffabsallr   sizer   r$   iatr   ranger   r   shiftr&   nameuppercategoryr   )#r   r   r   r   r   r   r   r   wilders_length_lengthrsi__modersi_ma	rsi_ma_trsmoothed_rsi_tr_madar	upperband	lowerbandmlongshorttrendqqeqqe_long	qqe_shortic_rsip_rsic_longp_longc_shortp_short_propsdatadfs#                                      Q/var/www/html/trading/venv/lib/python3.13/site-packages/pandas_ta/momentum/qqe.pyrH   rH      s   R 62&F61%FZ!^N%GU$E}fe$Ffe$FENEfF uD!'5FLLN1bEV,F E"&&(I
5 E9D
5#$%%
2e/G
GC
5: II

A!5;;'D1EKK(E1EKK(E
Aekk
2Cc-Hs%++.I1a[zz!}fjjQ&7u!a%$((1q5/ 99QU+UYYq1u-= 6>efn!&)--*:;DHHQK#--*DHHQK 7?uw"7IMM!,<=EIIaL$==+EIIaL
 GOg%7"2EIIaL+/88A;6CGGAJafnf_&EIIaL,1IIaL8CGGAJq) 99QU+EIIaLyy|q /3xx{:
X\\!_05		!<
Y]]1-C H {f%iizz&!F# 6fX&5

6(#T
2x($7)48 waxq&2FVH~CHxtEKKM?"5FK6(OHMF8_IN%//CL6?-0\\9H	* 	#V 	x	D 
4u{{	+BF8nBG,,BKI    )NNNNNN)numpyr   r   r   r   pandasr   r   pandas_ta._typingr	   r
   r   pandas_ta.mar   pandas_ta.utilsr   r   r   r   r   r   r   strrH    rV   rU   <module>r^      s    . . $ 5 5   
 "&+/%)	\\\\ (\ \  #\ 	\ #+	\
 \rV   