
    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
mZmZmZ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fdZy)    )	DataFrameSeries)DictLikeIntIntFloat)ma)high_low_rangev_boolv_mamodev_offsetv_pos_defaultv_series   )
true_rangeNhighlowcloselengthscalartrmamodeoffsetkwargsreturnc                    t        |d      }|dz   }	t        | |	      } t        ||	      }t        ||	      }| ||yt        |d      }t        |d      }t        |d      }t	        |      }|rt        | ||      nt        | |      }
t        |||      }t        ||
|      }|||z  z
  }|||z  z   }|dk7  r3|j                  |      }|j                  |      }|j                  |      }d	|v rB|j                  |d	   d
       |j                  |d	   d
       |j                  |d	   d
       t        |      r|j                         d   nd d| d| }d| |_        d| |_        d| |_        dx|_        x|_        |_        |j                  ||j                  ||j                  |i}t        ||j                        }d| |_        |j                  |_        |S )aM  Keltner Channels

    This indicator attempts to identify volatility similarily to
    Bollinger Bands and Donchian Channels.

    Sources:
        * [tradingview](https://www.tradingview.com/wiki/Keltner_Channels_(KC))

    Parameters:
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        close (Series): ```close``` Series
        length (int): The period. Default: ```20```
        scalar (float): Band scalar. Default: ```2```
        mamode (str): See ```help(ta.ma)```. Default: ```"ema"```
        offset (int): Post shift. Default: ```0```

    Other Parameters:
        tr (bool): Use True Range calculation. Otherwise use ```high - low```
            for range computation. Default: ```True```
        fillna (value): ```pd.DataFrame.fillna(value)```

    Returns:
        (DataFrame): 3 columns
       r   N   Tema)r   r   fillna)inplace _KCLKCBKCU
volatility)indexKC)r   r   r
   r   r   r   r	   r   shiftr   lenlowernamecategoryr   r'   )r   r   r   r   r   r   r   r   r   _lengthrange_basisbandr+   upper_propsdatadfs                     e/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/volatility/kc.pykcr7      s   @ 62&FqjGD'"D
3
 CUG$E|s{em61%F	D	Bfe$FfF .0Zc5)^D#5NFvuV,EffV,DFTM!EFTM!E {F#F#F# 6VH%t4VH%t4VH%t4 &)[q!b96(!F8LFvhEJvhEJvhEJ7CCENCU^enJJuzz5%**eDD	4u{{	+B6(mBG..BKI    )NNNNN)pandasr   r   pandas_ta._typingr   r   r   pandas_ta.mar   pandas_ta.utilsr	   r
   r   r   r   r   r   boolstrr7    r8   r6   <module>r@      s    $ 5 5   # ,0#'	N
NN&,NN (N 	N !N 	N #+	N
 Nr8   