1616 - macd_zero_lag
1717 - obv
1818 - adx
19+ - fractales_williams
20+ - awesome_oscillator
21+ - accelerator_oscillator
1922
2023"""
2124import pandas
@@ -714,4 +717,46 @@ def fractales_williams( data, period=2 ):
714717 data ['Fractal_Up' ] = numpy .where (is_fractal_up , high , numpy .nan )
715718 data ['Fractal_Down' ] = numpy .where (is_fractal_down , low , numpy .nan )
716719
717- return data
720+ return data
721+
722+ # -----------------------------------------------------------------------------
723+ # Awesome Oscillator (AO) - Indicateur de momentum
724+ # -----------------------------------------------------------------------------
725+ #
726+ def awesome_oscillator ( df , short_period = 5 , long_period = 34 ):
727+ """
728+ Calcule l'Awesome Oscillator classique
729+ """
730+ median_price = ( df ['High' ] + df ['Low' ] ) / 2
731+ sma_short = median_price .rolling ( window = short_period , min_periods = 1 ).mean ()
732+ sma_long = median_price .rolling ( window = long_period , min_periods = 1 ).mean ()
733+ ao = sma_short - sma_long
734+ return ao
735+
736+ # -----------------------------------------------------------------------------
737+ # Accelerator Oscillator (AC) - Indicateur de momentum
738+ #
739+ def accelerator_oscillator ( df , ao_column = 'AO' , period = 5 ):
740+ """
741+ Calcule l'Accelerator Oscillator (AC)
742+
743+ Paramètres:
744+ -----------
745+ df : pandas.DataFrame
746+ DataFrame contenant l'AO déjà calculé
747+ ao_column : str
748+ Nom de la colonne contenant l'AO
749+ period : int
750+ Période pour la moyenne mobile de l'AO (défaut: 5)
751+
752+ Retourne:
753+ ---------
754+ pandas.Series : Valeurs de l'AC
755+
756+ Formule: AC = AO - SMA(AO, 5)
757+ """
758+ ao = df [ ao_column ]
759+ sma_ao = ao .rolling ( window = period , min_periods = 1 ).mean ()
760+ ac = ao - sma_ao
761+
762+ return ac
0 commit comments