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

 
Roman Konopelko:

Bonjour, comment avez-vous essayé de redessiner le graphique ?

Si vous avez simplement besoin de modifier les données d'une courbe spécifique, voici un exemple :

#include <Graphics\Graphic.mqh>
//+------------------------------------------------------------------+
//| Fonction de démarrage du programme de script|
//+------------------------------------------------------------------+
voidOnStart()
  {
//--- données 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};
//--- données 2
   double x2[]={-10,-10,10,10};
   double y2[]={-10,10,-10,10};
//--- graphique
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);
//--- Points
   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. Il y a un sujet sur la bibliothèque graphique sur le forum, cette question y a déjà été soulevée.

C'est clair dans le script, mais comment le mettre à jour dans l'Expert Advisor ? Par exemple, voici un code qui crée un graphique aléatoire à chaque tic-tac :

#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(); //tracer le graphique
//---
   return(INIT_SUCCEEDED);
  }
//------------------------------------------ 
void OnTick()
  {  
   for(int i=0; i<=9; i++){
    Yg[i]=(int)MathRand()/1000;  
   }
   ObjectDelete(0,"Graph");//Je suis conscient que ce n'est pas la bonne approche, mais je ne peux pas faire autrement.
   graf(); //dessiner un nouveau graphique
  }
//-------------------------------------------------------------
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);
}
//-------------------------------------------------------------

Je n'arrive pas à comprendre comment mettre à jour les données sans effacer le graphique. Je n'arrive pas à comprendre comment mettre à jour les données sans effacer le graphique.

 

Si quelqu'un sait comment changer la taille et le style des polices pour les signatures dans cette bibliothèque, qu'il en soit remercié. - J'ai essayé FontSet - cela n'a pas fonctionné.....

 
transcendreamer:

Si quelqu'un sait comment changer la taille et le style des polices pour les signatures dans cette bibliothèque, qu'il en soit remercié. - J'ai essayé FontSet - cela n'a pas fonctionné.....

Ouvrez la source de la bibliothèque et dans la recherche, tapez font.

 
fxsaber:

Ouvrez la source du bibla et tapez police dans la recherche.

Le shardcode y est directement ? 😁

Je pensais qu'il existait une méthode toute faite.

En fait en cherchant font j'ai trouvé FontSet mais il refuse de coopérer.

 
transcendreamer:

Si quelqu'un sait comment changer la taille et le style des polices pour les signatures dans cette bibliothèque, qu'il en soit remercié. - J'ai essayé FontSet - cela n'a pas fonctionné.....

Pour les légendes dans la légende ?

graphicL.HistorySymbolSize(Point_K);//Obtention/réglage de la taille des symboles des symboles
 
Aleksey Vyazmikin:

Pour les signatures dans la légende ?

Je vous remercie.

En fait, pour les axes également.

 
-vallen- #:

C'est clair dans le script, mais comment mettre à jour dans l'Expert Advisor ? Par exemple, voici un code qui crée un graphique aléatoire à chaque tic-tac :

Je n'arrive pas à comprendre comment mettre à jour les données sans effacer le graphique. Je n'arrive pas à comprendre comment mettre à jour les données sans effacer le graphique.

Une réponse ?

 

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

Les méthodes de lissage pour Arc() et Pie() sont manquantes.

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

Nous avons également besoin de ces méthodes de remplissage avec des bords lissés :

   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);

//---

Actuellement, même si vous dessinez d'abord un cercle avec la méthode FillCircle() et que vous tracez ensuite autour de lui avec la méthode CircleWu(), le lissage est partiellement perdu.

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

Vous avez également besoin de ces méthodes de remplissage des bords lisses :

//---

Actuellement, même si vous dessinez d'abord un cercle à l'aide de la méthode FillCircle() et que vous tracez ensuite autour de lui à l'aide de la méthode CircleWu(), le lissage est partiellement perdu.

Toutes les méthodes de lissage dépendent fortement de l'opacité de la ligne. À environ 50 % d'opacité, tout devient non lissé et présente des artefacts.