Diskussion zum Artikel "Visualisierung! Eine grafische MQL5 Bibliothek ähnlich 'plot' der Sprache R" - Seite 3

 
Roman Konopelko:

Guten Tag!

Der Modus CustomPlotFunction ist in der Bibliothek für ähnliche Zwecke implementiert, das Beispiel für seine Verwendung implementiert ungefähr das, was Sie interessiert.

P.S. Mehr Details darüber sind im Forum geschrieben.


Toll, danke :)
[Gelöscht]  

Gibt es eine Möglichkeit, die Beschriftungen der X-Achse als Zeitreihe darzustellen?

 
Pablo Rego:

Gibt es eine Möglichkeit, die Beschriftungen der X-Achse als Zeitreihe darzustellen?

Beispiel:

#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();
  }

Ergebnis:


 

Ist es möglich, Beschriftungen auf der X-Achse in umgekehrter Reihenfolge zu zeichnen?

Um zum Beispiel Zeitreihen-Indizes zu sehen.

 
Dennis Kirichenko:

Ist es möglich, Beschriftungen auf der X-Achse in umgekehrter Reihenfolge zu zeichnen?

Zum Beispiel, um die Indizes der Zeitreihen zu sehen.

Es gibt keine schnelle Lösung in Form des Aufrufs einer Funktion, die alles von selbst macht. Wie in müssen Sie eine eigene Funktion zum Zeichnen von Werten erstellen und diese an die Methode ValuesFunctionFormat übergeben.
 

Gibt es eine ähnliche Bibliothek in mql4?

 

Können Sie mir sagen, ob es möglich ist, die Hintergrundtransparenz zu setzen, vielleicht in der Basisklasse, vielleicht etwas zu zwicken?

 
Maxim Dmitrievsky:

Können Sie mir sagen, ob es möglich ist, die Hintergrundtransparenz einzustellen, vielleicht in der Basisklasse? Ich konnte es nicht leicht finden


Nur wenn Sie die CGraphic-Klasse ändern (nur direktes Editieren ist falsch, Sie brauchen Vererbung, das Beispiel hier dient nur der Schnelligkeit).

//+------------------------------------------------------------------+
//| Grafik erstellen|
//+------------------------------------------------------------------+
bool CGraphic::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
//--- Objektname prüfen 
   if(ObjectFind(chart,name)>=0)
      return(false);
//--- vorläufige Berechnung
   int width=x2-x1;
   int height=y2-y1;
   if(width>0 && height>0)
     {
      m_width=width;
      m_height=height;
      //--- Objekt erstellen
      if(!ObjectCreate(chart,name,OBJ_BITMAP_LABEL,subwin,0,0))
         return(false);
      //--- Objekt anpassen
      if(!ObjectSetInteger(chart,name,OBJPROP_XDISTANCE,x1) || 
         !ObjectSetInteger(chart,name,OBJPROP_YDISTANCE,y1))
        {
         ObjectDelete(chart,name);
         return(false);
        }
      //--- Objekt anhängen
      if(!m_canvas.Attach(chart,name,width,height,COLOR_FORMAT_ARGB_NORMALIZE))
        {
         ObjectDelete(chart,name);
         return(false);
        }
     }
//--- Erfolg
   return(true);
  }

Danach kann man die Farbe einstellen:

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

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

:

Beispiel

 
Vladimir Karputov:

Nur wenn Sie eine Änderung an der CGraphic-Klasse vornehmen (nur direktes Editieren ist falsch, Sie brauchen Vererbung, das Beispiel hier dient nur der Schnelligkeit)

Danach kann man die Farbe steuern:

:



Danke, ich werde mich um die Vererbung kümmern :)

 

Wie kann ich erreichen, dass beim Ändern der Eingaben im Expert Advisor(REASON_PARAMETERS) das Diagramm keinen Fehler erzeugt und mit den neuen Parametern aktualisiert wird? Wenn ich tf wechsle oder Symbole ändere, ist alles in Ordnung, wenn ich Parameter ändere, ist der Fehler ungültiger Zeiger. Die Anzahl der Kurven ändert sich in den Parametern und es ist auf sie, dass die Zeiger falsch sind.

wenn es nicht klar ist, kann ich Ihnen ein Beispiel geben )