Discussion de l'article "Visualisez le ! Bibliothèque graphique MQL5 similaire à 'plot' du langage R" - page 3

[Supprimé]  
Roman Konopelko:

Bonjour !

Le mode CustomPlotFunction est implémenté dans la bibliothèque à des fins similaires, l'exemple d'utilisation implémente approximativement ce qui vous intéresse.

P.S. Plus de détails à ce sujet sont écrits dans le forum .


Super, merci :)
[Supprimé]  

Existe-t-il un moyen de tracer les étiquettes de l'axe X sous forme de série de dates ?

 
Pablo Rego:

Existe-t-il un moyen de représenter les étiquettes de l'axe X sous la forme d'une série de dates ?

Exemple :

#include <Graphics/Graphic.mqh>
double arrX[];
double arrY[];
//---
string TimeFormat(double x,void*data)
  {
   return(TimeToString((datetime)arrX[ArraySize(arrX)-(int)x-1]));
  }
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlRates rates[];
   CopyRates(Symbol(),Period(),0,100,rates);
   ArraySetAsSeries(rates,true);
   int size=ArraySize(rates);
   ArrayResize(arrX,size);
   ArrayResize(arrY,size);
   for(int i=0; i<size;++i)
     {
      arrX[i]=(double)rates[i].time;
      arrY[i]=rates[i].close;
     }
   CGraphic graphic;
   graphic.Create(0,"Rates",0,30,30,780,380);
   CCurve *curve=graphic.CurveAdd(arrY,CURVE_LINES,"Close");
   CAxis *xAxis=graphic.XAxis();
   xAxis.AutoScale(false);
   xAxis.Type(AXIS_TYPE_CUSTOM);
   xAxis.ValuesFunctionFormat(TimeFormat);
   xAxis.DefaultStep(20.0);
   curve.Visible(true);
   graphic.Redraw();
   graphic.Update();
  }

Résultat :


 

Est-il possible de dessiner des étiquettes sur l'axe X dans l'ordre inverse ?

Pour voir les indices de séries temporelles, par exemple.

 
Dennis Kirichenko:

Est-il possible de dessiner des étiquettes sur l'axe X dans l'ordre inverse ?

Pour voir les indices de séries temporelles, par exemple.

Il n'y a pas de solution rapide sous la forme d'un appel à une fonction qui ferait tout toute seule. Comme au , vous devez créer votre propre fonction pour dessiner les valeurs et la passer à la méthode ValuesFunctionFormat.
 

Existe-t-il une bibliothèque similaire dans mql4 ?

[Supprimé]  

Pouvez-vous me dire s'il est possible de définir la transparence de l'arrière-plan, peut-être dans la classe de base, peut-être quelque chose à modifier ?

 
Maxim Dmitrievsky:

Pouvez-vous me dire s'il est possible de définir la transparence de l'arrière-plan, peut-être dans la classe de base ? Je ne l'ai pas trouvé facilement.


Seulement si vous modifiez la classe CGraphic (l'édition directe n'est pas correcte, vous avez besoin de l'héritage, l'exemple ici est juste pour la rapidité).

//+------------------------------------------------------------------+
//| Créer un graphique|
//+------------------------------------------------------------------+
bool CGraphic::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
//--- vérifier le nom de l'objet 
   if(ObjectFind(chart,name)>=0)
      return(false);
//--- calcul préliminaire
   int width=x2-x1;
   int height=y2-y1;
   if(width>0 && height>0)
     {
      m_width=width;
      m_height=height;
      //--- créer un objet
      if(!ObjectCreate(chart,name,OBJ_BITMAP_LABEL,subwin,0,0))
         return(false);
      //--- personnaliser l'objet
      if(!ObjectSetInteger(chart,name,OBJPROP_XDISTANCE,x1) || 
         !ObjectSetInteger(chart,name,OBJPROP_YDISTANCE,y1))
        {
         ObjectDelete(chart,name);
         return(false);
        }
      //--- attacher l'objet
      if(!m_canvas.Attach(chart,name,width,height,COLOR_FORMAT_ARGB_NORMALIZE))
        {
         ObjectDelete(chart,name);
         return(false);
        }
     }
//--- succès
   return(true);
  }

Après cela, vous pouvez contrôler la couleur :

   CGraphic graphic;
   graphic.Create(0,"Graphic",0,10,10,680,360);

   graphic.BackgroundColor(ColorToARGB(clrRed,150));
   graphic.GridBackgroundColor(ColorToARGB(clrBlue,150));

:

Exemple

[Supprimé]  
Vladimir Karputov:

Seulement si vous modifiez la classe CGraphic (l'édition directe n'est pas correcte, vous avez besoin de l'héritage, l'exemple ici est purement pour la rapidité).

Ensuite, vous pouvez contrôler la couleur :

:



merci, je m'occuperai de l'héritage :)

[Supprimé]  

Comment faire pour que lors d'un changement d'entrée dans l'Expert Advisor(REASON_PARAMETERS), le graphique ne génère pas d'erreur et s'actualise avec les nouveaux paramètres ? Si je change de tf ou de symboles, tout est ok, si je change de paramètres, l'erreur est un pointeur invalide. Le nombre de courbes change dans les paramètres et c'est sur eux que les pointeurs sont incorrects.

si ce n'est pas clair je peux vous donner un exemple )