
    Q-j                         d dl mZ d dlmZmZmZmZmZ d dl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  ed      d	        Z	 	 dde	dedededede	fdZy
)    )njit)arctanisnannanrad2deg
zeros_like)Series)DictLikeInt)Imports)v_offsetv_pos_defaultv_seriesv_talibT)cachec           	      x   dd| j                   }}}t        |       t        |       }}t        |       t        |       }}t        |       t        |       }	}t        |       t        |       }}
t        |       t        |       }}t        |       t        |       }}t        |       }t        |       }| d d |d d t        d|      D ]  }d||dz
     z  dz   }d| |   z  d	| |dz
     z  z   d
| |dz
     z  z   d| |dz
     z  z   ||<   ||||   z  |||dz
     z  z   |||dz
     z  z
  |||dz
     z  z
  z  ||<   ||||   z  |||dz
     z  z   |||dz
     z  z
  |||dz
     z  z
  z  ||<   ||dz
     |
|<   |||
|   z  ||
|dz
     z  z   ||
|dz
     z  z
  ||
|dz
     z  z
  z  ||<   ||||   z  |||dz
     z  z   |||dz
     z  z
  |||dz
     z  z
  z  |	|<   |
|   |	|   z
  ||<   ||   ||   z   ||<   d
||   z  d||dz
     z  z   ||<   d
||   z  d||dz
     z  z   ||<   ||   ||dz
     z  ||   ||dz
     z  z   ||<   ||   ||dz
     z  ||   ||dz
     z  z
  ||<   d
||   z  d||dz
     z  z   ||<   d
||   z  d||dz
     z  z   ||<   ||   dk7  r+||   dk7  r#dt        t	        ||   ||   z              z  ||<   ||   d||dz
     z  kD  rd||dz
     z  ||<   ||   d||dz
     z  k  rd||dz
     z  ||<   ||   dk  rd||<   ||   dkD  rd||<   d
||   z  d||dz
     z  z   ||<   d||   z  d||dz
     z  z   ||<   t        ||   dz         }d}t        |      D ]  }|| ||z
     z  } |dkD  r||z  }|||<   |dkD  sd||   z  d	||dz
     z  z   d
||dz
     z  z   d||dz
     z  z   ||<    |S )Ng-?g.!u?      g333333?   gHzG?g?g333333?g?   g?      g?r   g     v@g      ?gq=
ףp?g      @g      I@gQ?g      ?   )sizer   ranger   r   int)xabmwma4dtq1q2jijqi1i2reimperiodsmpi_trendresultiadj_prev_period	dc_perioddcp_avgks                          j/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/trend/ht_trendline.pynb_ht_trendliner5      s#   faff!qA!}jm"D]JqMB]JqMB]JqMB]JqMBQ-ACFmG]FCR&F3BK 1a[&Q-/$6!*sQq1uX~-aAh>qQxOQ1tAw;T!a%[#@1tAPQE{?#RUVY]^_bc^cYdUd#de11r!u9q2a!e9}#<q2a!e9}#LqSUVWZ[V[S\}#\]11q5	11r!u9q2a!e9}#<q2a!e9}#LqSUVWZ[V[S\}#\]11r!u9q2a!e9}#<q2a!e9}#LqSUVWZ[V[S\}#\]1111111becBq1uIo-1becBq1uIo-111q5	!BqEBq1uI$55111q5	!BqEBq1uI$551becBq1uIo-1becBq1uIo-1a5A:"Q%1*r!ur!u}(= >>F1I!9sVAE]**fQUm+F1I!9tfQUm++va!e},F1I!9s?F1I!9tF1I&)OcF1q5M&99q	q	!D3q1u:$55AA%	y!AqQxG " q=y G
r6gaj(3Q+??#PQTUPUBVVY\_fghklgl_mYmmF1Ia d M    Nclosetalibprenanoffsetkwargsreturnc                    t        |d      }t        | |      } | yt        |      }t        |      }t        d   r|rddlm}  ||       }n@| j                         }t        |      }	|dkD  r	t        |	d| t        |	| j                        }t        t        |            ry|dk7  r|j                  |      }
d|v r|j                  |d   d	       d
|_        d|_        |S )a~  Hilbert Transform TrendLine

    This indicator uses the Hilbert Transform to smooth values.

    Sources:
        * John F Ehlers's "Rocket Science for Traders" Book
        * [mql5](https://c.mql5.com/forextsd/forum/59/023inst.pdf)
        * TA-Lib [ta_HT_TRENDLINE](https://github.com/TA-Lib/ta-lib/blob/main/src/ta_func/ta_HT_TRENDLINE.c)

    Parameters:
        close (Series): ```close``` Series.
        talib (bool): If installed, use TA Lib. Default: ```True```
        prenan (int): Prenans to apply. Ehlers's ```6``` or ```12```,
            TALib ```63``` Default: ```63```
        offset (int): Post shift. Default: ```0```

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

    Returns:
        (Series): 1 column

    Warning:
        TA-Lib Correlation: ```np.float64(0.9979308363057683)```

    Tip:
        Corrective contributions welcome!
    ?   Nr8   r   )HT_TRENDLINE)indexfillnaT)inplaceHT_TLtrend)r   r   r   r   r   r8   r?   to_numpyr5   r   r	   r@   allr   shiftrA   namecategory)r7   r8   r9   r:   r;   mode_talr?   tlnp_closenp_tl
trend_lines              r4   ht_trendlinerO   P   s    D 62&FUF#E}u~HfFwH&% >>#)A: E'6NE-
59~ {XXf%
 6
		&"D	1BGBKIr6   )NNN)numbar   numpyr   r   r   r   r   pandasr	   pandas_ta._typingr
   r   pandas_ta.mapsr   pandas_ta.utilsr   r   r   r   r5   boolrO    r6   r4   <module>rX      s     9 9  + " F F DA AJ "&&*DDDD #D D 	Dr6   