
    Q-j               #           d dl mZ d dlmZmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZmZ d dlmZmZ 	 	 	 	 	 	 	 dd
ededededededededededededededededef"dZy	)    )nan)	DataFrameSeries)DictLikeIntIntFloat)ma)mom)
decreasing
increasing)simplify_columnsunsigned_differencesv_boolv_mamodev_offsetv_pos_defaultv_scalarv_series)bbandskcNhighlowclose	bb_lengthbb_std	kc_lengthkc_scalar_narrowkc_scalar_normalkc_scalar_wide
mom_length
mom_smoothuse_trmamodeprenanoffsetkwargsreturnc                 H   t        |d      }t        |d      }t        |	d      }	t        |
d      }
t        |||	|
      dz   }t        | |      } t        ||      }t        ||      }| ||yt        |d      }t        |d      }t        |d      }t	        |d      }||kD  xr ||kD  }|syt        |d	      }t        |d
      }t        |      }|j                  dd      }|j                  dd      }|j                  dd      }t        ||||      }t        | ||||||      }t        | ||||||      }t        | ||||||      }t        |      |_        t        |      |_        t        |      |_        t        |      |_        t        ||	      }t        |||
      }|j                  |j                  kD  |j                  |j                  k  z  }|j                  |j                  kD  |j                  |j                  k  z  }|j                  |j                  kD  |j                  |j                  k  z  }|j                  |j                  k  |j                  |j                  kD  z  }| | z  }|dk7  rf|j!                  |      }|j!                  |      }|j!                  |      }|j!                  |      }|j!                  |      }|j!                  |      }d|v r|j#                  |d   d       |j#                  |d   d       |j#                  |d   d       |j#                  |d   d       |j#                  |d   d       |j#                  |d   d       |rdnd}|d| d| d| d| d| d| z  }d| |_        |ri|j'                  t(              }|j'                  t(              }|j'                  t(              }|j'                  t(              }|j'                  t(              }|r<t        ||      dz
  } t*        |d|  t*        |d|  t*        |d|  t*        |d|  t*        |d|  |j$                  |d|d|d|d|d|i}!t-        |!|j.                        }"|j$                  |"_        dx|"_        |_        |r||dk\     }#||dk     }$t3        |#d       \  }%}&t3        |$d       \  }'}(|%|z  }%|&|z  }&|(|z  }(|'|z  }'|%j5                  dt*        d       |&j5                  dt*        d       |(j5                  dt*        d       |'j5                  dt*        d       |t7        |      z  })|t9        |      z  }*|)j5                  dt*        d       |*j5                  dt*        d       d|v r|)j#                  |d   d       |*j#                  |d   d       |%j#                  |d   d       |&j#                  |d   d       |(j#                  |d   d       |'j#                  |d   d       |)|"d!<   |*|"d"<   |%|"d#<   |&|"d$<   |(|"d%<   |'|"d&<   |"S )'a  Squeeze Pro

    This indicator, based on John Carter's "TTM Squeeze" indicator, attempts
    identify momentum using volatility with additional details.

    Sources:
        * [usethinkscript](https://usethinkscript.com/threads/john-carters-squeeze-pro-indicator-for-thinkorswim-free.4021/)
        * [tradingview](https://www.tradingview.com/script/TAAt6eRX-Squeeze-PRO-Indicator-Makit0/)

    Parameters:
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        close (Series): ```close``` Series
        bb_length (int): BB period. Default: ```20```
        bb_std (float): BB Std. Dev. Default: ```2```
        kc_length (int): KC period. Default: ```20```
        kc_scalar_normal (float): Keltner Channel scalar for normal channel.
            Default: ```1.5```
        kc_scalar_narrow (float): Narrow channel KC scalar. Default: ```1```
        kc_scalar_wide (float): Wide channel KC scalar. Default: ```2```
        mom_length (int): Momentum Period. Default: ```12```
        mom_smooth (int): Momentum Smoothing period. Default: ```6```
        mamode (str): One of: "ema" or "sma". Default: ```"sma"```
        prenan (bool): Apply prenans. Default: ```False```
        offset (int): Post shift. Default: ```0```

    Other Parameters:
        tr (value): Use True Range for Keltner Channels.
            Default: ```True```
        asint (bool): Returns as ```Int```. Default: ```True```
        mamode (value): Which MA to use. Default: ```"sma"```
        detailed (value): Extra detailed. Default: ```False```
        fillna (value): ```pd.DataFrame.fillna(value)```

    Returns:
        (DataFrame): 6 columns (_default_) or 12 columns if ```detailed=True```

    Warning:
        May be depreciated in the future and combined with ```squeeze```.
                Ng      ?   Fg       @smatrTasintdetailed)lengthstdr#   )r2   scalarr#   r/   )r2   r   fillna)inplace hlr_SQZPROSQZPRO_ON_WIDESQZPRO_ON_NORMALSQZPRO_ON_NARROW
SQZPRO_OFF	SQZPRO_NO)indexmomentum)r0   
SQZPRO_INC
SQZPRO_DECSQZPRO_PINCSQZPRO_PDECSQZPRO_NDECSQZPRO_NINC)r   maxr   r   r   r   r   popr   r   r   columnsr
   r	   lushiftr5   nameastypeintr   r   r@   categoryr   replacer   r   )+r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   _lengthvalid_kc_scalerr0   r1   bbdkch_wide
kch_normal
kch_narrowmomosqueezesqueeze_on_widesqueeze_on_normalsqueeze_on_narrowsqueeze_off_wide
no_squeeze_props	nanlengthdatadfpos_squeezeneg_squeezepos_incpos_decneg_incneg_decsqz_incsqz_decs+                                              l/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/momentum/squeeze_pro.pysqueeze_prorm      s   f i,Ii,Iz2.Jz1-J)Y
J?!CGD'"D
3
 CUG$E|s{em 0!4 0#6na0NFE"F$'77 0//  63'Ffe$FfFZZd#FJJw%Ezz*e,H yfV
DCc5>&H c53C&J c53C&J #3'CK'1H)*5J)*5JuZ(Dj1G uuxzz)ceehjj.@AO-#%%*,,2FG-#%%*,,2FG

*suuxzz/AB!!%5$55J {--')//7-33F;-33F;+11&9%%f-
 6vh'6vh/>  !14 @  !14 @x 0$?&*D9 RuF
)AfXQyk>2B!DTCUUVWgVhiiFF8$GL)005-44S9-44S9+2237&&s+
	9-1	&)
#(+*9%(+*9%'*)$!$
:I 	g
?
.
.
'
jD 
4u{{	+BllBG%//BK'" gl+gk*/4H/4H77773-3-3-3-Jw//Jw//3-3- vNN6(+TN:NN6(+TN:NN6(+TN:NN6(+TN:NN6(+TN:NN6(+TN:#Z#Z$[$[$[$[I    )NNNNNNNNNNNN)numpyr   pandasr   r   pandas_ta._typingr   r   r   pandas_ta.mar	   pandas_ta.momentumr
   pandas_ta.trendr   r   pandas_ta.utilsr   r   r   r   r   r   r   r   pandas_ta.volatilityr   r   boolstrrm    rn   rl   <module>rz      s     $ 5 5  " 2	 	 	 , /38<BF.2'+H
HH&,HH#+H H .6H 	H 8@	H
 H
 ),H H "%H H H #+H Hrn   