Il s'agit d'une collection de routines pour effectuer l'analyse mathématique des tableaux de nombres. Prise en charge des fonctions courantes: Toutes les fonctions sont complètement surchargées pour prendre en charge les types de données suivants: À l'exception de stddev (), elles renvoient toutes le même type de données que le tableau. Un tableau de valeurs int renvoie un seul int. Stddev () renvoie toujours un flotteur. Toutes les fonctions sauf rollingAverage () prennent deux arguments. Le premier est le tableau à travailler. Le second est le nombre d'entrées dans le tableau. RollingAverage () prend un troisième argument - la nouvelle entrée à ajouter au tableau. Rolling average Format: average rollingAverage (historyarray, slicecount, value) Ajoute de la valeur au tableau historyarray en déplaçant toutes les valeurs vers le bas d'un emplacement. La moyenne moyenne est alors retournée. Format: average mean (array, slicecount) Calcule la moyenne des valeurs dans le tableau. Slicecount est le nombre d'entrées dans le tableau. Format: mode moyen (array, slicecount) Recherche le nombre le plus courant dans le tableau. Format: max maximum (array, slicecount) Recherche la plus grande valeur dans le tableau. Format: min minimum (array, slicecount) Recherche la plus petite valeur dans le tableau. Écart-type Format: déviation stddev (tableau, slicecount) L'écart-type est la racine carrée de la moyenne de la somme des carrés de la différence entre chaque point de données et la moyenne moyenne du tableau. C'est la seule fonction qui ne renvoie pas le même type de données que le tableau. L'écart-type est toujours retourné comme un flotteur. Une des principales applications de la carte Arduino est la lecture et l'enregistrement des données des capteurs. Par exemple, on surveille la pression toutes les secondes du jour. Comme les taux d'échantillonnage élevés génèrent souvent des pointes dans les graphiques, on veut aussi avoir une moyenne des mesures. Comme les mesures ne sont pas statiques dans le temps ce dont nous avons souvent besoin est une moyenne courante. Il s'agit de la moyenne d'une certaine période et très utile lors de l'analyse des tendances. La forme la plus simple d'une moyenne courante peut être faite par le code qui s'appuie sur la moyenne courante précédente: Si on ne veut pas utiliser les mathématiques en virgule flottante - car cela prend la mémoire et diminue la vitesse - on peut faire la même chose complètement dans le domaine entier. La division par 256 dans l'exemple de code est un décalage à droite 8, qui est plus rapide que par division par exemple. 100. Ceci est vrai pour chaque puissance de 2 comme diviseur et un seul doit prendre soin de la somme des poids égale à la puissance de 2. Et bien sûr on devrait prendre soin il n'y a pas de débordement intermédiaire (envisager d'utiliser non signés long) Si vous avez besoin Une moyenne de course plus précise, in concreto à partir des 10 dernières mesures, vous avez besoin d'un tableau (ou une liste liée) pour les tenir. Ce tableau agit comme un tampon circulaire et à chaque nouvelle mesure, le plus ancien est supprimé. La moyenne courante est calculée comme la somme de tous les éléments divisée par le nombre d'éléments dans le tableau. Le code pour la moyenne courante sera quelque chose comme ceci: L'inconvénient de ce code est que le tableau pour contenir toutes les valeurs peut devenir assez grand. Si vous avez une mesure par seconde et que vous voulez une moyenne courante par minute, vous avez besoin d'un tableau de 60 une moyenne par heure aurait besoin d'un tableau de 3600. Cela ne pourrait pas être fait de cette façon sur un Arduino, car il n'a que 2K de RAM. Toutefois, en construisant une moyenne de 2 étages, il peut être approché assez bien (disclaimer: pas pour toutes les mesures). En psuedo code: Comme un nouveau tableau statique interne est nécessaire pour chaque fonction runningAverage, cela crie être implémenté comme une classe. Bibliothèque RunningAverage La bibliothèque runningAverage génère une classe de la fonction ci-dessus pour qu'elle puisse être utilisée plusieurs fois dans un croquis. Il découple la fonction add () et avg () pour être un peu plus souple, par ex. On peut appeler la moyenne plusieurs fois sans ajouter une chose. Notez que chaque instance de la classe ajoute son propre tableau pour tenir les mesures, et que cela s'ajoute à l'utilisation de la mémoire. L'interface de la classe est maintenue aussi petite que possible. Note: avec la version 0.2, les noms des méthodes sont tous plus descriptifs. Un petit croquis montre comment il peut être utilisé. Un générateur aléatoire est utilisé pour imiter un capteur. Dans setup (), la myRA est effacée afin que nous puissions commencer à ajouter de nouvelles données. Dans loop (), d'abord un nombre aléatoire est généré et converti en un flotteur à ajouter à myRA. Ensuite, la valeur runningAverage est imprimée sur le port série. On pourrait aussi l'afficher sur un écran LCD ou envoyer sur ethernet, etc Lorsque 300 articles sont ajoutés myRA est effacé pour recommencer. Pour utiliser la bibliothèque, créez un dossier dans votre SKETCHBOOKPATHlibaries avec le nom RunningAverage et placez les. h et. cpp là. Vous pouvez éventuellement créer un sous-répertoire d'exemples pour placer l'exemple d'application. 2011-01-30: initial version 2011-02-28: corrigé destructeur manquant dans le fichier. h 2011-02-28: supprimé constructeur par défaut 2012--. Ajouté fillValue () refactored for publishing 2014-07-03: ajout du code de protection de la mémoire - si la matrice interne ne peut pas être allouée size Devient 0. Ceci est pour résoudre le problème décrit ici - forum. arduino. ccindex. phptopic50473.msg1790086msg1790086 - Testez considérablement. Classe de modèle Classeur de modèle CourantAgent. h CourantAvant. cppMovant Moyenne - MA RUPTURE Basse Moyenne mobile - MA En tant qu'exemple de SMA, considérez un titre avec les cours de clôture suivants sur 15 jours: Semaine 1 (5 jours) 20, 22, 24, 25, 23 Semaine 28, 30, 27, 29, 28 Une MA de 10 jours évalue en moyenne les cours de clôture pour les 10 premiers jours comme premier point de données . Le prochain point de données laisserait tomber le premier prix, ajoute le prix au jour 11 et prend la moyenne, et ainsi de suite comme montré ci-dessous. Comme on l'a noté plus haut, les AM retardent l'action actuelle du prix parce qu'elles sont basées sur des prix passés, plus la période de l'AM est longue, plus le décalage est important. Ainsi, un MA de 200 jours aura un décalage beaucoup plus grand que d'une MA de 20 jours, car il contient des prix pour les 200 derniers jours. La durée de la MA à utiliser dépend des objectifs de négociation, avec plus courte MA utilisés pour les transactions à court terme et à plus long terme MA plus adaptés pour les investisseurs à long terme. La MA de 200 jours est largement suivie par les investisseurs et les commerçants, avec des ruptures au-dessus et en dessous de cette moyenne mobile considérés comme des signaux commerciaux importants. Les MA confèrent également des signaux commerciaux importants seuls, ou lorsque deux moyennes se croisent. Une augmentation MA indique que la sécurité est dans une tendance haussière. Tandis qu'un MA en déclin indique qu'il est dans une tendance baissière. De même, la dynamique ascendante est confirmée par un croisement haussier. Qui se produit quand un MA à court terme traverse au-dessus d'un MA à plus long terme. Le momentum descendant est confirmé par un croisement baissier, qui se produit quand un MA à court terme traverse un MA à plus long terme.
No comments:
Post a Comment