
    Q-j                         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 d dlmZmZmZmZmZ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fdZy)    )	DataFrameSeries)DictLikeIntIntFloat)ma)Imports)stdev)non_zero_rangetal_mav_mamodev_offsetv_pos_defaultv_seriesv_talibNcloselength	lower_std	upper_stdddofmamodetaliboffsetkwargsreturnc           
      F   t        |d      }t        | |      } | yt        |d      }t        |d      }t        |t              rd|cxk  r|k  rn nt        |      nd}t	        |d      }t        |      }	t        |      }t        d   r"|	r ddlm	}
  |
| |||t        |            \  }}}n3t        | |||		      }||z  }||z  }t        || f||	d
|}||z
  }||z   }t        ||      }d|z  |z  }t        | |      |z  }|dk7  rU|j                  |      }|j                  |      }|j                  |      }|j                  |      }|j                  |      }d|v rn|j                  |d   d       |j                  |d   d       |j                  |d   d       |j                  |d   d       |j                  |d   d       d| d| d| }d| |_        d| |_        d| |_        d| |_        d| |_        dx|_        |_        |j"                  x|_        |_        |j                   ||j                   ||j                   ||j                   ||j                   |i}t%        || j&                        }d| |_        |j"                  |_        |S )a  Bollinger Bands

    This indicator, by John Bollinger, attempts to quantify volatility by
    creating lower and upper bands centered around a moving average.

    Sources:
        * [tradingview](https://www.tradingview.com/wiki/Bollinger_Bands_(BB))

    Parameters:
        close (Series): ```close``` Series
        length (int): The period. Default: ```5```
        lower_std (IntFloat): Lower standard deviation. Default: ```2.0```
        upper_std (IntFloat): Upper standard deviation. Default: ```2.0```
        ddof (int): Degrees of Freedom to use. Default: ```0```
        mamode (str): See ```help(ta.ma)```. Default: ```"sma"```
        talib (bool): If installed, use TA Lib. Default: ```True```
        ddof (int): By default, uses Pandas ```ddof=1```.
            For Numpy calculation, use ```0```. Default: ```1```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (DataFrame): 5 columns

    Note:
        * TA Lib does not have a ```ddof``` parameter.
        * The divisor used in calculations is: ```N - ddof```, where ```N```
          is the number of elements. To use ```ddof```, set ```talib=False```.
       Ng       @r      smar   )BBANDS)r   r   r   r   )r   r   d   fillnaT)inplace_BBLBBMBBUBBBBBP
volatility)indexr    )r   r   
isinstanceintr   r   r   r	   r   r    r   r
   r   r   shiftr"   namecategoryr   r+   )r   r   r   r   r   r   r   r   r   mode_talr    uppermidlowerstd_devlower_deviationsupper_deviationsulr	bandwidthpercent_propsdatadfs                          i/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/volatility/bbands.pybbandsr?      s   L 61%FUF#E}i-Ii-I"4-!t2Df2D3t9!Dfe$Fu~HfF wH "5&)YvWsEeFXN$w.$w.HvXHH&&&&

&Cc	CIUE*S0G {F#iiF#OOF+	--' 6VH%t4

6(#T
2VH%t4)48vh'6 )Ai[1FvhEJVH~CHvhEJ6(^IN>GL&22ENU^(-6CL9% 	

E#

E	gD 
4u{{	+BvhBG,,BKI    )NNNNNNN)pandasr   r   pandas_ta._typingr   r   r   pandas_ta.mar   pandas_ta.mapsr	   pandas_ta.statisticsr
   pandas_ta.utilsr   r   r   r   r   r   r   strboolr?    r@   r>   <module>rJ      s    $ 5 5  " &   "&6:8<	iiii+3i i "i 26i 	i #+	i
 ir@   