
    'i
                         d dl mZmZmZmZ ddlmZ ddlmZ  G d de	      Z
 G d d	e
      Z G d
 dej                        Z G d d eee            Zy)    )absolute_importdivisionprint_functionunicode_literals   )with_metaclass   )	Indicatorc                   $    e Zd ZdZg Zed        Zy)MovingAveragea  MovingAverage (alias MovAv)

    A placeholder to gather all Moving Average Types in a single place.

    Instantiating a SimpleMovingAverage can be achieved as follows::

      sma = MovingAverage.Simple(self.data, period)

    Or using the shorter aliases::

      sma = MovAv.SMA(self.data, period)

    or with the full (forwards and backwards) names:

      sma = MovAv.SimpleMovingAverage(self.data, period)

      sma = MovAv.MovingAverageSimple(self.data, period)

    c                 B   t        |dd      ry | j                  j                  |       |j                  }t	        | ||       d}|j                  d      r|j                  d      d   }n%|j                  d      r|j                  d      d   }|rt	        | ||       y y )N_notregisterF r   r   r	   )getattr_movavsappend__name__setattrendswithsplit
startswith)clsregclsclsnameclsaliass       Z/var/www/app/trading-bot/venv/lib/python3.12/site-packages/backtrader/indicators/mabase.pyregisterzMovingAverage.register3   s    6>516"//Wf%O,}}_5a8H0}}_5a8HC6*     N)r   
__module____qualname____doc__r   classmethodr    r   r   r   r      s     & G+ +r   r   c                       e Zd Zy)MovAvN)r   r   r    r#   r   r   r%   r%   G   s    r   r%   c                        e Zd Z fdZ xZS )MetaMovAvBasec                 ^    t         t        |   | |||      }t        j	                  |       |S )N)superr'   __new__r   r   )metanamebasesdctr   	__class__s        r   r*   zMetaMovAvBase.__new__O   s/    M40tUCHs# 
r   )r   r   r    r*   __classcell__)r/   s   @r   r'   r'   K   s     r   r'   c                   "    e Zd ZdZ ed      Zy)MovingAverageBase))period   F)subplotN)r   r   r    paramsdictplotinfor#   r   r   r2   r2   Y   s    FE"Hr   r2   N)
__future__r   r   r   r   	utils.py3r   r   r
   objectr   r%   r/   r'   r2   r#   r   r   <module>r<      sU   ** * ' '+F '+T	M 	I'' #}i@ #r   