
    'i                     b    d dl mZmZmZmZ d dlZddlmZ g dZ	 G d dej                        Zy)    )absolute_importdivisionprint_functionunicode_literalsN   )MovAv)AwesomeOscillator
AwesomeOscAOc                   p     e Zd ZdZdZdZdddej                  ffZ e	 e	ddd	
            Z
 fdZ xZS )r	   u  
    Awesome Oscillator (AO) is a momentum indicator reflecting the precise
    changes in the market driving force which helps to identify the trend’s
    strength up to the points of formation and reversal.


    Formula:
     - median price = (high + low) / 2
     - AO = SMA(median price, 5)- SMA(median price, 34)

    See:
      - https://www.metatrader5.com/en/terminal/help/indicators/bw_indicators/awesome
      - https://www.ifcmarkets.com/en/ntx-indicators/awesome-oscillator

    )r
   r   )ao)fast   )slow"   movavbarg      ?g      ?)_methodalphawidthc                 v   | j                   j                  | j                   j                  z   dz  }| j                  j	                  || j                  j
                        }| j                  j	                  || j                  j                        }||z
  | j                  _        t        t        | /          y )Ng       @)period)datahighlowpr   r   r   lr   superr	   __init__)selfmedian_pricesma1sma2	__class__s       e/var/www/app/trading-bot/venv/lib/python3.12/site-packages/backtrader/indicators/awesomeoscillator.pyr   zAwesomeOscillator.__init__:   s{    		6#=vv||L|=vv||L|=4K	/1    )__name__
__module____qualname____doc__aliaslinesr   SMAparamsdict	plotlinesr   __classcell__)r$   s   @r%   r	   r	      sN     !EE 		%))F U$cBCI2 2r&   r	   )
__future__r   r   r   r   
backtraderbt r   __all__	Indicatorr	    r&   r%   <module>r9      s.   ** *   4!2 !2r&   