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

 
Roman Konopelko:

Guten Tag, wie genau haben Sie versucht, das Diagramm neu zu zeichnen?

Wenn Sie nur die Daten für eine bestimmte Kurve ändern müssen, finden Sie hier ein Beispiel:

#include <Graphics\Graphic.mqh>
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
voidOnStart()
  {
//--- Daten 1
   double x1[]={-10,-4,-1,2,3,4,5,6,7,8};
   double y1[]={-5,4,-10,23,17,18,-9,13,17,4};
//--- Daten 2
   double x2[]={-10,-10,10,10};
   double y2[]={-10,10,-10,10};
//--- Grafik
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);
//--- Punkte
   CCurve *curve=graph.CurveAdd(x1,y1,CURVE_LINES);
   graph.CurvePlot(0);
   graph.Update();
   Sleep(1000);
   curve.Update(x2,y2);
   graph.Redraw(true);
   graph.Update();
   Sleep(1000);
  }
P.S. Es gibt ein Thema über die Grafikbibliothek im Forum, diese Frage wurde dort bereits gestellt.

Im Skript ist es klar, aber wie kann man es im Expert Advisor aktualisieren? Hier ist zum Beispiel ein Code, der bei jedem Tick ein Zufallsdiagramm erstellt:

#include <Graphics\Graphic.mqh>

 double Xg[10]={0,1,2,3,4,5,6,7,8,9};
 double Yg[10]={0,0,0,0,0,0,0,0,0,0};

//------------------------------------------ 
int OnInit()
  {
   graf(); //Zeichnen des Diagramms
//---
   return(INIT_SUCCEEDED);
  }
//------------------------------------------ 
void OnTick()
  {  
   for(int i=0; i<=9; i++){
    Yg[i]=(int)MathRand()/1000;  
   }
   ObjectDelete(0,"Graph");//Löschen Sie das Diagramm, ich weiß, dass das nicht der richtige Ansatz ist, aber ich kann es nicht anders machen.
   graf(); //Zeichnen eines neuen Diagramms
  }
//-------------------------------------------------------------
void graf(){
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);

   CCurve *curve=graph.CurveAdd(Xg,Yg,CURVE_LINES);
   graph.CurvePlotAll();
   graph.Update(true);
}
//-------------------------------------------------------------

Ich kann nicht herausfinden, wie ich die Daten aktualisieren kann, ohne den Chart zu löschen. Bitte sagen Sie mir, wer weiß, wie man es macht.

 

Weiß jemand, wie man die Schriftgröße und den Stil für Unterschriften in dieser Bibliothek ändern kann? - Ich habe es mit FontSet versucht - es hat nicht funktioniert.....

 
transcendreamer:

Weiß jemand, wie man die Schriftgröße und den Stil für Unterschriften in dieser Bibliothek ändern kann? - Ich habe es mit FontSet versucht - es hat nicht funktioniert.....

Öffnen Sie den Quellcode der Bibliothek und geben Sie in der Suche Schriftart ein.

 
fxsaber:

Öffnen Sie den Quelltext der Bibla und geben Sie in der Suche Schriftart ein.

Direkt shardcode es dort? 😁

Ich dachte nur, es gäbe eine vorgefertigte Methode.

Eigentlich durch die Suche nach Schriftart fand ich FontSet aber es weigert sich, zu kooperieren.

 
transcendreamer:

Weiß jemand, wie man die Schriftgröße und den Stil für Unterschriften in dieser Bibliothek ändern kann? - Ich habe es mit FontSet versucht - es hat nicht funktioniert.....

Für Beschriftungen in der Legende?

graphicL.HistorySymbolSize(Point_K);//Get/Set die Symbolgröße der Symbole der Symbole
 
Aleksey Vyazmikin:

Für Unterschriften in der Legende?

Ich danke Ihnen.

Eigentlich auch für die Achsen.

 
-vallen- #:

Es ist klar, in das Skript, aber wie man in der Expert Advisor aktualisieren? Zum Beispiel, hier ist ein Code, der eine zufällige Chart auf jedem Tick erstellt:

Ich kann nicht herausfinden, wie ich die Daten aktualisieren kann, ohne das Diagramm zu löschen. Bitte sagen Sie mir, wer weiß, wie es zu tun.

Irgendeine Antwort?

 

Изначально класс CCanvas содержал только два режима отрисовки графических примитивов   со сглаживанием (antialiasing, AA) и без него. Затем были добавлены новые функции для создания примитивов на основе алгоритма Ву:

Es fehlen Methoden mit Glättung für Arc() und Pie().

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / Arc
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / Arc
  • www.mql5.com
Arc(int,int,int,int,int,int,int,int,const uint) - CCanvas - Пользовательская графика - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Außerdem werden diese Füllmethoden mit geglätteten Kanten benötigt:

   void              FillTriangle(int x1,int y1,int x2,int y2,int x3,int y3,const uint clr);
   void              FillPolygon(int &x[],int &y[],const uint clr);
   void              FillCircle(int x,int y,int r,const uint clr);
   void              FillEllipse(int x1,int y1,int x2,int y2,const uint clr);
   void              Fill(int x,int y,const uint clr);
   void              Fill(int x,int y,const uint clr,const uint threshould);

//---

Derzeit geht die Glättung teilweise verloren, selbst wenn man zuerst einen Kreis mit der Methode FillCircle() füllt und dann mit der Methode CircleWu() um ihn herum zeichnet.

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / FillCircle
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / FillCircle
  • www.mql5.com
FillCircle(int,int,int,const uint) - CCanvas - Пользовательская графика - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Anatoli Kazharski #:

Sie benötigen auch diese Methoden zum Füllen von glatten Kanten:

//---

Derzeit geht die Glättung teilweise verloren, selbst wenn Sie zunächst mit der Methode FillCircle() einen Kreis mit Füllung zeichnen und dann mit der Methode CircleWu() um diesen Kreis herumfahren.

Alle Glättungsmethoden hängen stark von der Deckkraft der Linie ab. Bei einer Deckkraft von etwa 50 % wird alles ungleichmäßig und weist Artefakte auf.