Friday 27 January 2017

Ruby Moyenne Mobile Simple

Je travaille sur un programme qui utilise yahoo finance api pour recueillir les données historiques de fermeture pour le nombre de stocks inscrits et ensuite aller de l'avant et de calculer la moyenne mobile simple (SMA) pour les données pour la période de 30 jours. J'ai ce qui suit jusqu'à présent: Ce code me donne les valeurs de fermeture pour les stocks pour la plage spécifiée. J'ai deux questions: Actuellement, hq. close tient des valeurs pour tous les stocks. Comment puis-je mettre ces valeurs dans un tableau afin que je puisse faire un calcul sur lui pour calculer un SMA pour chaque stock de données J'ai essayé de faire quelque chose comme ceci: Mais cela donne seulement la valeur du premier stock dans myval. Je sais que je dois mettre une boucle ici. J'ai essayé de mettre Mais cela me donne une erreur: Comment puis-je calculer un SMA dans Ruby Salut, Merci de souligner l'erreur de typo. Mais même après correction, je reçois toujours la même erreur. Je pense à une autre approche. Puisque hq. close contient la liste des symboles de stock avec leurs valeurs de fermeture, puis-je faire deux boucles sur cet objet, d'abord pour itérer sur l'objet pour obtenir le nombre de listes et ensuite pour obtenir les valeurs respectives dans la liste. Je sais que c'est très possible en Java. Y at-il une façon de le faire en ruby ​​S'il vous plaît donner un exemple ndash user1745117 Oct 14 12 at 17:05 Vous avez posé deux questions ici, alors permet de répondre à un à la fois. Tout d'abord, ce code: produira le hachage suivant dans les fermetures. Que je comprends est dans le format que vous voulez: Deuxièmement, vous voulez calculer une moyenne mobile simple - qui pour les applications financières est juste la moyenne des valeurs. Il ya un Gem appelé simplestatistics qui peut le faire. Produit le hachage suivant dans les moyennes: J'essaie de calculer des moyennes mobiles (simples et exponentielles) et je suis tombé sur le joyau de simplestatistiques, qui est parfait pour mes besoins. J'essaie de modifier le code de ce lien: Comment calculer la moyenne mobile simple) pour mes fins. OBJECTIF: J'ai un JSON comme celui-ci qui énumère les prix historiques pour un seul stock sur une longue période de temps: À cela, je voudrais ajouter des moyennes mobiles pour chaque jour (simple et exponentielle - que le joysle simpletatistics semble faire facilement) pour 20 et 50 jours (et d'autres comme requis) afin qu'il ressemble à quelque chose comme ceci pour chaque jour: Je préfère utiliser le yahoofinance, et simplestatistics gems et ensuite ajouter la sortie à l'original JSON que j'ai le sentiment qu'une fois J'obtiens une meilleure compréhension, il sera plus facile pour moi de modifier. En ce moment, je continue à lire sur la façon dont je vais le faire (toute aide est appréciée) Voici ma tentative de calculer une moyenne mobile de 20 jours pour Microsoft (ne fonctionne pas). De cette façon (en utilisant HistoricalQuotesdays) semble supposer que la date de début est aujourd'hui, qui ne fonctionnera pas pour mon objectif global. MISE À JOUR: Je n'ai pas réellement besoin d'utiliser gem YahooFinance que j'ai déjà les données dans un JSON. Ce que je ne sais pas comment faire est tirez de la rangée de JSON, faites les calculs en utilisant le gem simpleestatistics, et ajoutez alors les nouvelles données dans le JSON original. J'ai utilisé deux méthodes pour obtenir vos données. Voici ce qu'ils sont (notez qu'ils peuvent prendre un bloc): qui retourne un tableau d'objets YahooFinance :: HistoricalQuote avec les méthodes suivantes: qui renvoie un tableau de valeurs de la documentation: Et pour prendre une moyenne (moyenne mobile simple), vous Peut facilement faire: Où ary tiendrait les valeurs à la moyenne (besoin d'être des flotteurs ou il sera entier diviser). Pour faire la moyenne mobile exponentielle, il suffit d'utiliser la formule suivante: Où fermer est les stocks proches, previousema est hier ema, et amountofdaysago est la gamme de la moyenne dans le passé, par exemple 20 (jours). Je ne peux pas écrire un tout début ruby ​​guide, mais les bases pour ce que vous avez besoin sont Hash et Array. Regardez comment utiliser les hachages rubis et les tableaux, et c'est probablement un bon 30 de ruby ​​programmation là. Par exemple, pour obtenir les objets json dans un tableau et obtenir juste les fermetures, vous pouvez utiliser Arraymap comme tel: espérons que vous avez commencé n bonne chance AJ, merci pour votre aide. Je sais pour beaucoup d'analyse JSON est facile. J'ai les calculs pour stdev (n'utilisant pas le vôtre, I39m faisant un n-1 stdev). J'ai fait cette calcul sur papier (et plus souvent Excel), mais don39t savoir comment le transformer en Ruby (qui est pourquoi I39m en utilisant simplestats). Je sais que pour analyser JSON je peux faire JSON. parse json mais comment faire les calculs pour chaque jour dans le tableau et puis retourner les résultats pour créer un nouveau JSON m'échappe encore (j'ai besoin de plus d'un guide dummys - si vous le pouvez Me pointer à n'importe quels tutoriels en ligne il serait grand). Une moyenne mobile simple est personnalisable dans la mesure où elle peut être calculée pour un nombre différent de périodes de temps, tout simplement. En ajoutant le cours de clôture du titre pour un certain nombre de périodes, puis en divisant ce total par le nombre de périodes, ce qui donne le prix moyen du titre sur la période. Une moyenne mobile simple lisse la volatilité et facilite la visualisation de l'évolution des prix d'un titre. Si la moyenne mobile simple pointe, cela signifie que le prix des titres est en augmentation. Si elle pointe vers le bas, cela signifie que le prix des titres est en baisse. Plus la marge de temps de la moyenne mobile est longue, plus la moyenne mobile est plus lisse. Une moyenne mobile à plus court terme est plus volatile, mais sa lecture est plus proche de la source de données. Importance analytique Les moyennes mobiles sont un outil analytique important utilisé pour identifier les tendances actuelles des prix et le potentiel de changement d'une tendance établie. La forme la plus simple d'utiliser une moyenne mobile simple dans l'analyse est de l'utiliser pour identifier rapidement si une sécurité est dans une tendance haussière ou de baisse. Un autre outil d'analyse populaire, quoique légèrement plus complexe, consiste à comparer une paire de moyennes mobiles simples, chacune couvrant des délais différents. Si une moyenne mobile simple à court terme est supérieure à une moyenne à plus long terme, une tendance à la hausse est attendue. D'autre part, une moyenne à long terme supérieure à une moyenne à court terme signale une tendance à la baisse de la tendance. Modèles commerciaux populaires Deux modèles commerciaux populaires qui utilisent des moyennes mobiles simples comprennent la croix de la mort et une croix d'or. Une croix de mort survient lorsque la moyenne mobile simple de 50 jours passe au-dessous de la moyenne mobile de 200 jours. Ceci est considéré comme un signal baissier, que d'autres pertes sont en réserve. La croix d'or se produit quand une moyenne mobile à court terme se casse au-dessus d'une moyenne mobile à long terme. Renforcé par les volumes de négociation élevés, cela peut signaler de nouveaux gains sont en magasin.


No comments:

Post a Comment