
    Q-j>                         d dl mZmZmZmZ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mZmZmZ 	 	 	 ddededed	ed
ededefdZy)    )	cosexpmeannanpirollsinsqrtzeros)Series)DictLikeInt)v_boolv_offsetv_pos_defaultv_seriesNcloselengthbarsinitial_versionoffsetkwargsreturnc                    t        |d      }t        | |      } | yt        |d      }t        |d      }t        |      }| j                  }t        |t              r|rdx}}dx}	x}
x}x}}dx}x}}dx}}ddg}t        d|dz
        D cg c]  }t        
 c}dgz   }t        ||      D ]5  }dt        d|z        z
  t        d|z        z  }dd|z   z  | j                  |   |z
  z  ||z  z   }t        t        d	       t        z  |z        }	d	|	z  t        t        d	      d
z  |z        z  }
|
}d|	z  |	z  }d|z
  |z
  }d|z  ||z   z  ||d   z  z   ||d   z  z   }||d   z   |d   z   dz  }||z  |d   |d   z  z   |d   |d   z  z   dz  }|t        |      z  }|j                  |       |j!                  d       |}| j                  |   }|j                  |       8 n$dx}}t#        d      }t        g|dz
  z  dgz   }d	t        z  |z  }dt        |      z
  t        |      z  }dt        z  |z  }t        |       }	d	|	z  t        |      z  }|	d	z   }d|z
  |z
  }t        ||      D ]  }dd|z   z  | j                  |   |z
  z  ||z  z   }t%        |d      }d|z  ||z   z  ||d   z  z   ||d   z  z   |d<   t'        |      }t        t'        |d	z              }||z  }|}| j                  |   }|j                  |        t)        || j*                        }|dk7  r|j-                  |      }d|v r|j/                  |d   d       d| d| |_        d|_        |S c c}w )ay  Even Better SineWave

    This indicator attempts to quantify market cycles using a low pass filter.

    Sources:
        * [rengel8](https://github.com/rengel8)
        * J.F.Ehlers 'Cycle Analytics for Traders', 2014
        * [Pandas TA Issue #350](https://github.com/twopirllc/pandas-ta/issues/350)
        * [Proreal Code](https://www.prorealcode.com/prorealtime-indicators/even-better-sinewave/)

    Parameters:
        close (Series): ```close``` Series
        length (int): Max cycle/trend period. Values between ```40-48``` work
            as expected with minimum value: ```39```. Default: ```40```
        bars (int): Period of low pass filtering. Default: ```10```
        offset (int): Post shift. Default: ```0```

    Other Parameters:
        fillna (value): Replaces ```na```'s with ```value```.

    Returns:
        (Series): 1 column

    Note:
        The _default_ is more cycle oriented and seems to be less
        whipsaw-prune. The older version might offer earlier signals at medium
        and stronger reversals. Compared to TradingView, returns very close
        results but appears to be one bar earlier.
    (   NF
   r      ih  g      ?         g;f?)indexfillnaT)inplaceEBSW__cycle)r   r   r   r   size
isinstanceboolranger   r	   r   ilocr   r
   r   appendpopr   r   r   r   r"   shiftr#   namecategory)r   r   r   r   r   r   malpha1hpa1b1c1c2c3filter_power_wave	lastCloselastHPfiltHistr&   resultiangleangrmsebsws                              b/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/cycle/ebsw.pyrE   rE   	   s!   F 62&FUF#E}_e4Or"DfF 	

A/4(_!"""R"""rB"###&4	Fq6$Q
343!#34s:vq!A #cFl++s3</@@FF
#uzz!}y'@AFVOSB d1gX]T)*BR#d1gmd233BBb2BR"BBh"v+.2  8A;./G hqk)HQK71<D'(1+*CC1++,/01F $v,&D OOG$LLOF

1IMM$= "B 8&1*%+Bc%j.CJ.lT!#YVc#hAgXVb[vq!AF
#uzz!}y'@AFVOSB Hb)H8f "Xa[ 01353CDHRL >DtHM*+C#:D F

1IMM$! "$ &,D {zz&! 6F8$d3xq'DIDMK[ 5s   M()NNNN)numpyr   r   r   r   r   r   r	   r
   r   pandasr   pandas_ta._typingr   r   pandas_ta.utilsr   r   r   r   r*   rE        rF   <module>rM      sp    A A A  + E E
 48 EEE-0EE E #+E 	ErL   