
    'iX                     F    d dl mZmZmZmZ ddlmZmZmZ  G d de      Z	y)    )absolute_importdivisionprint_functionunicode_literals   )	IndicatorMovingAverageBaseMovAvc                   H     e Zd ZdZdZdZdej                  ffZ fdZ	 xZ
S )ZeroLagExponentialMovingAveragea  
    The zero-lag exponential moving average (ZLEMA) is a variation of the EMA
    which adds a momentum term aiming to reduce lag in the average so as to
    track current prices more closely.

    Formula:
      - lag = (period - 1) / 2
      - zlema = ema(2 * data - data(-lag))

    See also:
      - http://user42.tuxfamily.org/chart/manual/Zero_002dLag-Exponential-Moving-Average.html

    )ZLEMA
ZeroLagEma)zlema_movavc                 &   | j                   j                  dz
  dz  }d| j                  z  | j                  |       z
  }| j                   j                  || j                   j                        | j                  _        t        t        | #          y )Nr      )period)	pr   datar   linesr   superr   __init__)selflagr   	__class__s      Y/var/www/app/trading-bot/venv/lib/python3.12/site-packages/backtrader/indicators/zlema.pyr   z(ZeroLagExponentialMovingAverage.__init__.   si    vv}}q Q&499}tyy#.66==dffmm=D

-t=?    )__name__
__module____qualname____doc__aliasr   r
   EMAparamsr   __classcell__)r   s   @r   r   r      s1     %EE#%F@ @r   r   N)

__future__r   r   r   r    r   r	   r
   r    r   r   <module>r)      s&   ** * 2 1@&7 @r   