Artichow : Forum Artichow !
Aller à la page:  1234Suivante
Page courante:1 sur 4
Graphiques en chandeliers
Auteur: doji_style (IP enregistrée)
Date: le 29 novembre 2009, 21:31

Hello,

après une recherche sur le forum il semble que cette question n'a jamais été posée.

Ma demande: existe-t-il une classe Artichow qui permet d'afficher un graphe en chandeliers (très utilisé en Bourse)?

Les données sont du type time series avec un format: time,O,H,L,C (time, open, high, low, close) pour chaque chandelier à afficher.

Un exemple de graphique en chandeliers:



Merci d'avance. :)

Re: Graphiques en chandeliers
Auteur: peofofo (IP enregistrée)
Date: le 30 novembre 2009, 14:55

Bonjour doji_style,

La réponse est non, ce n'est pas possible, par contre j'ai déjà répondu et donné une solution:
[artichow.org]


Re: Graphiques en chandeliers
Auteur: doji_style (IP enregistrée)
Date: le 30 novembre 2009, 17:23

Bonjour peofofo,

et merci pour ta réponse et pour le boulot que tu fais, super sympa. :)

Je viens de jeter un oeil au topic (lien dans ton post), en effet ce que tu as fait se rapproche de ce dont j'ai besoin, néanmoins:

-> il manque la possibilité d'avoir les "ombres" de chaque bougie, c-à-d les bouts de ligne au-dessus et au-dessous du corps de la bougie (ce qui correspond au fait d'avoir *4* valeurs par barre et non 2 comme dans ton exemple)

-> il faudrait aussi pouvoir colorier de 2 couleurs différentes les bougies (en vert si le Close est au-dessus ou égal à l'Open, en rouge sinon). Je vois qu'incidemment un interlocuteur t'en a fait la demande dans le topic (pour ses besoins à lui, qui correspondent aux miens sur ce point précis).

Envisages-tu d'ajouter cette possibilité aux classes concernées?

J'aimerais pouvoir aider au développement de ces fonctionnalités, hélas manque de temps et surtout de niveau en PHP et GD... :(

En tous cas je serais très étonné d'être le seul à avoir des besoins de graphes en Chandeliers, qd je vois par ex. le succès de logiciels "bas prix" comme FCharts...



Message édité 1 fois. Dernière modification le le 30/11/09 à 17:24

Re: Graphiques en chandeliers
Auteur: peofofo (IP enregistrée)
Date: le 30 novembre 2009, 20:06

Bonjour,

C'est possible de modifier les classes pour obtenir ce graph.
Je vais regarder ce que je peus faire, mais je ne promet rien.

Re: Graphiques en chandeliers
Auteur: doji_style (IP enregistrée)
Date: le 30 novembre 2009, 23:53

Ce serait vraiment super si tu pouvais faire qq chose, mais sans te tuer à la tâche hein... ;)

M'est venu à l'esprit qu'une manière d'aborder ça pourrait être de partir de ce genre de chart: (sans la "blue line")



en imaginant qu'il soit possible "d'empiler" trois barres (tout en gardant la possibilité que tu as déjà développée qu'une barre ne démarre pas forcément à 0), et de faire en sorte que la largeur des barres supérieures et inférieures soit de largeur 1 pixel (les fameuses "ombres" des bougies) alors que la barre du milieu garde une largeur normale.

Juste une piste de travail, mais bon chuis certain que tu y as déjà pensé.

A plus. :)

Re: Graphiques en chandeliers
Auteur: peofofo (IP enregistrée)
Date: le 1 décembre 2009, 19:33

Bonjour doji_style,

J'ai adapt� les classes artichow afin d'obtenir ceci :

Qu'en pensez-vous?

Le code php de la page:
<?php
require_once "artichow/BarPlot.class.php";

$graph = new Graph(400, 400);
$graph->title->set('CHANDELIER');
$graph->border->setStyle(Line::DASHED);
$graph->border->setColor(new DarkGray);

$high = array(4, 20, 18, 2, 12, 9, 24);
$close = array(1.2, 2.3, 15, 0, 8, 6, 10);
$open = array(-3, 6, 3, -15, 6, 8, 20);
$low = array(-5, 1, 2, -16, 0, 3, 5);


$plot = new BarPlot($close, $open, $low, $high);
$plot->setSize(1, 0.96);
$plot->setCenter(0.5, 0.52);

$plot->label->set($close);

$plot->label->move(-20, -10);

$plot->label->setBackgroundGradient(new LinearGradient(new Color(250, 250, 250, 10), new Color(255, 200, 200, 30), 0));
$plot->label->border->setColor(new Color(20, 20, 20, 20));
$plot->label->setPadding(3, 1, 1, 0);

$plot->setBarColor(
new Color(100, 180, 154, 12)
);
$plot->setBarColor2(
new Color(180, 100, 154, 12)
);

$graph->add($plot);
$graph->draw();

?>



Message édité 2 fois. Dernière modification le le 21/12/09 à 10:50

Re: Graphiques en chandeliers
Auteur: doji_style (IP enregistrée)
Date: le 1 décembre 2009, 21:24

WOW! Superrr !! Et super rapide en plus! :-)

Ca m'a l'air pas mal du tout tel quel...

Je suppose que la largeur de chandeliers s'adapte automatiquement au nombre de chandeliers affichés dans l'image?

Il doit aussi être possible de faire prendre des valeurs non entières au data O,H,L,C? (btw pas de valeur négative nécessaire - quoique, on est pas passé loin d'avoir des Indices boursiers négatifs ces derniers temps ^^).

En tous cas je suis preneur, je ferai les modifs nécessaires mais ça me semble une base suffisante pour travailler.

Ne reste plus qu'à communiquer les classes modifiées, à votre convenance.


Mille mercis! :)

Re: Graphiques en chandeliers
Auteur: peofofo (IP enregistrée)
Date: le 2 décembre 2009, 14:08

Bonjour,

A noter:
- pour la couleur de l'histogramme, il vous faut utiliser la fonction setBarColor si le Close est au-dessus ou égal à l'Open.
Sinon il faut utiliser setBarColor2
- Pour le graph il faut créer un objet BarPlot
$plot = new BarPlot($close, $open, $low, $high); //Bien mettre les variables dans cet ordre.

Pour toutes les variables non utilisés, mettez des ''
Ex:
$plot = new BarPlot($close, $open, '', '');// Histogramme en escalier
ou encore
$plot = new BarPlot($close, '', '', '');// Histogramme simple

Les classes que j'ai modifiés sont nombreuses, je vous donne le fichier a télécharger:

J'avais déjà fais des modifications dans les classes. Tu auras donc quelques trucs en plus.






Message édité 1 fois. Dernière modification le le 02/12/09 à 22:00

Re: Graphiques en chandeliers
Auteur: doji_style (IP enregistrée)
Date: le 2 décembre 2009, 17:51

Fantastic! Thanxx a lot. :)

Merci pour les suggestions, j'avais bien remarqué le setBarColor2 afin de différencier les bougies up des bougies down, pour ce qui est de l'ordre des paramètres je pourrai difficilement résister au besoin de remettre "dans l'ordre" O,H,L,C, c'est comme ça "depuis toujours", on ne change pas un vieux réflexe comme ça. ^^
Mais bon je ferai attention à modifier l'ordre de la mm façon dans la Classe BarPlot (mm si ça veut dire que j'aurai une version un peu différente de l'original, d'où pbm éventuel en cas de MàJ).

Par parenthèse, pour me débarrasser de ce pbm d'ordre des paramètres désormais au lieu de passer une longue liste de paramètres qui doit être dans un ordre spécifique je mets tous les paramètres dans un tableau associatif $Params, chaque élément correspondant à un paramètre et ayant pour clé le nom de la variable originale (sans le $ of course), par ex $Params["Input_Array"] etc... bref tu vois l'idée, du coup finies les longues listes dans un appel de fonction et fini le pbm d'ordre des paramètres. :-]

Pour ce qui est des modifications dans les classes de base, je viens de d/l le fichier zip et remplacer le dossier Artichow par le tien, et j'ai déjà un pbm pour effectuer un LinePlot, je suppose que tu as dû modifier cette classe et du coup ça ne marche plus avec mon appli.

Je vais sans doute devoir faire un "mix & match" entre les classes Artichow de base et celles que tu as modifiées, mais je crains que ce ne soit pas aussi simple et que pour avoir ce graphique en Chandeliers je ne sois obligé de remplacer une classe dont je me sers déjà et du coup...

Tu as fait beaucoup de modifs? Dans quelles classes?

Merci d'avance. ;)



Message édité 2 fois. Dernière modification le le 02/12/09 à 17:57

Re: Graphiques en chandeliers
Auteur: peofofo (IP enregistrée)
Date: le 2 décembre 2009, 21:09

Bonjour,
J'ai mis les paramètres dans cette ordre dans le cas ou tu veux obtenir un simple histo ça t'évite de mettre un truc dans ce genre:
$plot = new BarPlot('', '', $close, '');// Histogramme simple
Mais tu peus modifier les classes.

Pour obtenir le graphique du chandelier, tu es obligé d'avoir 4 arrays.
4 points par colonne.
Les arrays doivent avoir le même nombre d'entrées.

Il va falloir modifier ton LinePlot en prenant en compte les exemples que j'ai modifier dans examples/all.php

J'ai modifié Principalement les classes:
BartPlot.class.php et Plot.class.php.

Plot.class.php est appelé par tous les graphiques. D'ou la nécessité de regarder les autres graphs.

Si tu as des erreurs, tu peus mes les envoyer.


Aller à la page:  1234Suivante
Page courante:1 sur 4


Seules les personnes enregistrées peuvent poster sur ce forum.