
    Q-jV                         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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fdZy)    )isnan)	DataFrameSeries)DictLikeIntIntFloat)v_mamodev_offsetv_pos_defaultv_seriesv_tradingview)atrNhighlowclosepxqtvmodemamodeoffsetkwargsreturnc	                 |   t        |      }
t        |d      }t        |t              r|dkD  rt        |      n|du rdnd}t        |t              r|dkD  rt	        |      n|du rdnd}||z   }t        | |      } t        ||      }t        ||      }| ||y|
rt        |d	      nt        |d
      }t        |      }t        | ||||      }|t        t        |            ry| j                  |      j                         ||z  z
  }|j                  |      j                         }|j                  |      j                         ||z  z   }|j                  |      j                         }|dk7  r"|j                  |      }|j                  |      }d|	v r,|j                  |	d   d       |j                  |	d   d       d| d| d| }d| |_        d| |_        dx|_        |_        |j                   ||j                   |i}t%        ||j&                        }d| |_        |j"                  |_        |S )a-  Chande Kroll Stop

    This indicator, by Tushar Chande and Stanley Kroll, attempts to identify
    trends with long and short stops.

    Sources:
        * "The New Technical Trader", Wiley 1st ed. ISBN 9780471597803, page 95
        * [multicharts](https://www.multicharts.com/discussion/viewtopic.php?t=48914)

    Parameters:
        close (Series): ```close``` Series
        p (int): ATR and first stop period; see Note.
            Default: ```10``` for both modes
        x (float): ATR scalar; see Note. Default: ```1``` or ```3```
        q (int): Second stop period; see Note. Default: ```9``` or ```20```
        tvmode (bool): Trading View mode. Default: ```True```
        mamode (str): See ```help(ta.ma)```. Default: ```None```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (DataFrame): 2 columns

    Note: Book vs TradingView Defaults
        * Book: ```p=10, x=3, q=20, ma="sma"```
        * Trading View: ```p=10, x=1, q=9,  ma="rma"```
    
   r   T      	      Nrmasma)r   r   r   lengthr   fillna)inplace_CKSPlCKSPstrend)indexCKSP)r   r   
isinstancefloatintr   r	   r
   r   allr   rollingmaxminshiftr#   namecategoryr   r)   )r   r   r   r   r   r   r   r   r   r   mode_tv_lengthatr_
long_stop_	long_stopshort_stop_
short_stop_propsdatadfs                       b/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/trend/cksp.pyckspr@      s@   H F#GaAq%(QUaVt^QRAQ&1q5A6T>arA!eGD'"D
3
 CUG$E|s{em(/Xfe$Xfe5LFfF DcqHD|s5;'a$$&T1J""1%))+I++a.$$&T1K$$Q'++-J {OOF+	%%f-
 6)48&*D9 1QCq_FVH%INfX&JO/66I,NNIz
CD	4u{{	+BVHoBG$$BKI    )NNNNNN)numpyr   pandasr   r   pandas_ta._typingr   r   r   pandas_ta.utilsr	   r
   r   r   r   pandas_ta.volatilityr   boolstrr@    rA   r?   <module>rJ      s     $ 5 5  % 15'+	U
UU&,U
UU*-U U "%U 	U #+	U
 UrA   