Calculs & affichages / Coding des nodes /
Moyennes mobiles - Calculs en cascade

Propagation des calculs dans le graphe


Description

Dans ce tuto, nous vous proposons de créer et d'afficher des moyennes mobiles de signaux aléatoires.


Plusieurs moyennes SMA d'un signal aléatoire (en rouge).


Plan du tuto :
  1. Préparation du PC (Poste de contrôle) et de matplotlib.
  2. Fichier d'indicateurs techniques.
  3. Coding du node aleatoire.
  4. Coding du node moy_mobile.

1 - Préparation du poste de contrôle et de l'afficheur matplotlib :

Retour au plan

Poste de contrôle (PC) :


show_matplotlib.py :

☐ Modifier le code de lancement, tout à la fin de show_matplotlib.py (Seul le nom du graphe a changé) :
if __name__ == '__main__': :

if __name__ == '__main__':
    """ Les 3 premières lignes permettent un fonctionnement autonome, en phase de mise au point.
        - Elles simulent l'ajout d'arguments en ligne de commande.
        - Elles définissent le nom du graphe ainsi que l'id du node 'Plots'.
        - Elles pourront être commentées en phase de production.
    """
    sys.argv.append('MM')  # Nom du graphe.
    sys.argv.append('0')  # Plots id. (La ligne de commande ne doit contenir que du str).
    sys.argv.append('-1')  # Gestion de la fermeture automatique. Poste de contrôle PID : -1 en local.

    """ Lancement de l'appli. """
    mpl = ShowMatPlotLib()

 


2 - Fichier d'indicateurs techniques :

Retour au plan


3 - Coding du node Aléatoire.

Retour au plan

Adapter la présentation à votre convenance.


4 - Coding du node moy_mobile :

Retour au plan



Vérification :


Vérification

Performances : ~2.2 secondes.

  • Pour l'instant, seule la moyenne mobile SMA est codée (Moyenne mobile artihmétique).
  • ☐ Il vous appartient de coder les autres : EMA, SMMA, LWMA.
  • ☐ ... mais surtout, et c'est le plus important évidemment, il vous appartient de modifier ces choix et d'en ajouter d'autres.
    • C'est pourquoi la compréhension du code existant est capitale.
  • Par défaut, le nombre de lignes des tableaux numpy est fixé à 300 000 dans CtrlCalcul.__init__() ← self.len_buffer.
    • 20 000 seraient suffisants pour faire des tests, mais en phase de développement, il est intéressant d'avoir un grand nombre pour pouvoir comparer les performances de plusieurs solutions, afin de choisir la meilleure.
  • Dans la méthode testée, ici, indicators.py > sma(), vous remarquez un print qui affiche la durée du traitement.
    • Celle-ci dépend de votre environnement informatique : processeur, mémoire, nombre de coeurs, ...
    • Avec celle qui a permis la création de la vidéo, on obtient à peu près 2.2 secondes pour chaque moyenne.

Performances améliorées : 0.0059 secondes.

  • ☐ Modifier le code, en évitant si possible les boucles car elles sont chronophages.
  • ☐ Vous devriez obtenir un score 370 fois meilleur !
  • Nous verrons, dans les tutos suivants, qu'il en est de même avec la plupart des autres types de nodes.

Bon coding et bon courage !


Snippets

Essayez de résoudre cette fonctionnalité par vous-même.
Consultez les réponses (snippets) seulement si vous n'avez pas trop de temps.

Bonjour les codeurs !