
    Q-jW                         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
mZ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 d dlmZmZ dd	l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fdZy
)    )nan)	DataFrameSeries)DictLikeIntIntFloat)emalinregsma)
decreasing
increasing)simplify_columnsunsigned_differencesv_boolv_mamodev_offsetv_pos_defaultv_series)bbandskc   )momNhighlowclose	bb_lengthbb_std	kc_length	kc_scalar
mom_length
mom_smoothuse_trmamodeprenanoffsetkwargsreturnc           	      
   t        |d      }t        |d      }t        |d      }t        |d      }t        ||||      dz   }t        | |      } t        ||      }t        ||      }| ||yt        |d      }t        |d      }t        |
d      }
t	        |d	      }t        |      }|j                  d
d      }	|j                  dd      }|j                  dd	      }|j                  dd	      }t        ||||
      }t        | |||||
|	      }t        |      |_
        t        |      |_
        |rg| j                  |      j                         }|j                  |      j                         }dd||z   z  |j                  z   z  }t        ||z
  |      }n;t        ||      }|
j!                         dk(  rt#        ||      }nt%        ||      }|j&                  |j&                  kD  |j(                  |j(                  k  z  }|j&                  |j&                  k  |j(                  |j(                  kD  z  }| | z  }|dk7  rD|j+                  |      }|j+                  |      }|j+                  |      }|j+                  |      }d|v rX|j-                  |d   d       |j-                  |d   d       |j-                  |d   d       |j-                  |d   d       |	rdnd}|d| d| d| d| z  }||rdndz  }d| |_        |r?|j1                  t2              }|j1                  t2              }|j1                  t2              }|r*t        ||      dz
  }t4        |d| t4        |d| t4        |d| |j.                  |d|d|d|i}t7        ||j8                         }|j.                  |_        d!x|_        |_        |r||dk\     } ||dk     }!t=        | d"      \  }"}#t=        |!d"      \  }$}%|"|z  }"|#|z  }#|%|z  }%|$|z  }$|"j?                  dt4        d       |#j?                  dt4        d       |%j?                  dt4        d       |$j?                  dt4        d       |tA        |      z  }&|tC        |      z  }'|&j?                  dt4        d       |'j?                  dt4        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

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

    Sources:
        * "Mastering the Trade" (chapter 11), John Carter
        * [thinkorswim](https://tlc.thinkorswim.com/center/reference/Tech-Indicators/studies-library/T-U/TTM-Squeeze)
        * [tradestation](https://tradestation.tradingappstore.com/products/TTMSqueeze)
        * [tradingview](https://www.tradingview.com/scripts/lazybear/)

    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 (float): KC scalar. Default: ```1.5```
        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```
        lazybear (value): LazyBear's TradingView. Default: ```False```
        detailed (value): Extra detailed. Default: ```False```
        fillna (value): ```pd.DataFrame.fillna(value)```

    Returns:
        (DataFrame):
            * Default: 4 columns
            * Detailed: 10 columns

    Note: Volatility
        * Increasing: ```kc``` and ```bbands``` difference increases
        * Decreasing: ```kc``` and ```bbands```  difference decreases
             r   Ng       @g      ?r   FtrTasintdetailedlazybear)lengthstdr#   )r0   scalarr#   r,   g      ?)r0   r	   r   fillna)inplace hlr__LBSQZ   SQZ_ONSQZ_OFFSQZ_NO)indexmomentum)r-   SQZ_INCSQZ_DECSQZ_PINCSQZ_PDECSQZ_NDECSQZ_NINC)"r   maxr   r   r   r   popr   r   r   columnsrollingminbr
   r   lowerr	   r   lushiftr3   nameastypeintr   r   r>   categoryr   replacer   r   )(r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   _lengthr-   r.   r/   bbdkchhighest_high
lowest_lowavg_squeezemomo
squeeze_onsqueeze_off
no_squeeze_props	nanlengthdatadfpos_squeezeneg_squeezepos_incpos_decneg_incneg_decsqz_incsqz_decs(                                           h/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/momentum/squeeze.pyr[   r[      s   f i,Ii,Iz2.Jz1-J)Y
J?!CGD'"D
3
 CUG$E|s{em63'Fi-Ife$FFE"FfFZZd#FJJw%Ezz*e,Hzz*e,H yfV
DC
c59&C #3'CK"3'CK||I.224[[+//1
c\J67#%%?@i8 5,<<>U"$z2G$z2G %%#%%-CEECEEM2J55355=SUUSUU]3K|+J {--'%%f-
!''/%%f-
 6vh'6&*D96(+T:&*D9 RuF
)AfXQyk9+>>F
xeR'F>GL&&s+
!((-&&s+
	9-1	!$
:I"%JY!$
:I 	g
:
K
:	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: W W!X!X!X!XI    )
NNNNNNNNNN)numpyr   pandasr   r   pandas_ta._typingr   r   r   pandas_ta.overlapr	   r
   r   pandas_ta.trendr   r   pandas_ta.utilsr   r   r   r   r   r   r   pandas_ta.volatilityr   r   r   boolstrr[    rm   rl   <module>rx      s     $ 5 5 . . 2   ,  /315.2'+x
xx&,xx#+x x '/x 	x ),	x
 x
 "%x x x #+x xrm   