Bonjour a tous,
J'ai peur qu'il s'agisse plus d'un problème de math qu'un problème lié directement au langage mais la solution devant être applicable en c# je me permet de poser la question ici...
Je suis en train de développer une appli qui récupère les taux de change en temps réel via l'api yahoo finance... jusque là aucun problème, j'arrive bien à récupérer mes taux de changes. Le but est d'afficher un graphique en temps réel de l'évolution des taux (les devises étant sélectionnées dans un datagridview). Pour cela j'utilise gdi+ et je place mes points sur un panel. Le souci c'est que les taux de changes évoluent peu, par exemple de 1.7313 à 1.7315... ce que j'ai fait au départ c'est convertir mon float en int afin de pouvoir placer mes points... le souci c'est que 1.7313 convertit en int donne 1 et 1.7315 convertit en int donne également 1.... donc je me retrouve plus avec une droite qu'avec une courbejai donc pensé à éventuellement multiplier cette valeur ou à l'élever à la puissance x (éventuellement en tronquant la partie non décimale pour que la valeur ne soit pas trop importante) afin d'avoir des valeur un peut plus éloignées les unes des autres me permettant d'avoir un affichage un peu plus représentatif des évolutions des taux.... mais le problème c'est que certains taux sont à 1.x et d'autres sont à 100.x donc difficile de trouver un règle générale... sans compter qu'il faut prévoir le long terme et l'éventuelle évolution d'un taux de 1.x à 3.x (par exemple....).
Aujourd'hui en terme de code ça donne ça :
Et ce code me donne une droite, les taux évoluant trop peu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //currentXCoordCoeff : incrémenté de 3 px à chaque Timer_Tick() soit toute les 3 secondes //curvePanel : panel d'affichage du graphe //dgvYahoo : datagridview avec les taux de change g = curvePanel.CreateGraphics(); previousPoint = new Point(0 + currentXCoordCoeff, (curvePanel.Height - 7) - iValue); strValue = dgvYahoo.Rows[selectedRow].Cells[1].Value.ToString(); dblValue = double.Parse(strValue.Replace('.', ',')); iValue = (int)dblValue; currentPoint = new Point(0 + currentXCoordCoeff, (curvePanel.Height - 7) - iValue); g.DrawRectangle(new Pen(Color.Red), 0 + currentXCoordCoeff, (curvePanel.Height - 7) - iValue, 1, 1); g.DrawLine(new Pen(Color.Red), previousPoint, currentPoint);
Ca fait un petit moment que je me casse la tête la dessus et je dois avouer que je ne suis pas une tête en math... donc si quelqu'un à une idée ou un lien qui pourrait m'aider je suis preneur et je l'en remercie d'avance car je ne trouve rien sur le net non plus.
Partager