
    Q-j*                         d dl mZmZ d dl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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)    )	DataFrameSeries)DictLikeInt)ma)v_boolv_driftv_mamodev_offsetv_pos_defaultv_seriesNhighlowlengthlongshortmamodeasintdriftoffsetkwargsreturnc	                     t        |d      }t        | |dz         } t        ||dz         }| |yt        |d      }t        |d      }t        |d      }t        |d      }t	        |      }t        |      }|j                  |      |z
  j                         }
| | j                  |      z
  j                         }|
}|j                  ||
k  |      }| j                  |_	        t        |||      }|||z  k  }|||z  kD  }|r*|j                  t              }|j                  t              }|d	k7  rD|j                  |      }|j                  |      }|j                  |      }|j                  |      }d
|	v rX|j                  |	d
   d       |j                  |	d
   d       |j                  |	d
   d       |j                  |	d
   d       d| d| d| }d| |_        d| |_        d| |_        d| |_        dx|_        |_        |j                  x|_        |_        |j                  ||j                  ||j                  ||j                  |i}t!        || j                        }d| |_        |j                  |_        |S )a  Elders Thermometer

    This indicator, by Dr Alexander Elder, attempts to quantify volatility.

    Sources:
        * [motivewave](https://www.motivewave.com/studies/elders_thermometer.htm)
        * [tradingview](https://www.tradingview.com/script/HqvTuEMW-Elder-s-Market-Thermometer-LazyBear/)

    Parameters:
        high (Series): ```high``` Series
        low (Series): ```low``` Series
        length (int): The period. Default: ```20```
        long (int): Buy factor. Default: ```2```
        short (float): Sell factor. Default: ```0.5```
        mamode (str): See ```help(ta.ma)```. Default: ```"ema"```
        asint (int): Returns as int. Default: ```True```
        drift (int): Difference amount. Default: ```1```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (DataFrame): 4 columns
          N   g      ?emaT)r   r   fillna)inplace_THERMOTHERMOmaTHERMOlTHERMOs
volatility)index)r   r   r
   r   r	   r   shiftabswherer&   r   astypeintr   namecategoryr   )r   r   r   r   r   r   r   r   r   r   thermoLthermoHthermo	thermo_mathermo_longthermo_short_propsdatadfs                      i/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/volatility/thermo.pyr0   r0      s   @ 62&FD&1*%D
3

#C|s{q!D%%Efe$F5$EENEfF yy#%**,Gdjj'',,.GF\\'G+W5F::FL66&1II,-KY./L!((-#**3/ {f%OOF+	!''/#))&1 6fX&5)486(+T:F8,d; $q(F6(#FKx(IN )K!&*L+77FOi(39??BK<0 	V	+<	D 
4tzz	*BvhBG//BKI    )NNNNNNN)pandasr   r   pandas_ta._typingr   r   pandas_ta.mar   pandas_ta.utilsr   r	   r
   r   r   r   strboolr0    r8   r7   <module>r@      s    $ +   .2#'9=	_
__'*_
_ _ _  $_ 47_ 	_ #+	_
 _r8   