Discusión sobre el artículo "¡Visualice esto! La biblioteca gráfica en MQL5 como un análogo de plot en el lenguaje R" - página 3

 
Roman Konopelko:

¡Buenos días!

El modo CustomPlotFunction está implementado en la librería para propósitos similares, el ejemplo de uso implementa aproximadamente lo que te interesa.

P.D. Más detalles al respecto están escritos en el foro .


Genial, gracias :)
[Eliminado]  

¿Hay alguna forma de representar las etiquetas del eje X como una serie de fecha y hora?

 
Pablo Rego:

¿Hay alguna forma de representar las etiquetas del eje X como una serie de fecha y hora?

Ejemplo:

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

Resultado:


 

¿Es posible dibujar etiquetas en el eje X en orden inverso (al revés)?

Para ver índices de series temporales, por ejemplo.

 
Dennis Kirichenko:

¿Es posible dibujar etiquetas en el eje X en orden inverso (al revés)?

Para ver los índices de las series temporales, por ejemplo.

No hay una solución rápida en la forma de llamar a una función que hará todo por sí mismo. Como en , necesitas crear tu propia función para dibujar valores y pasarla al método ValuesFunctionFormat.
 

¿Existe alguna biblioteca similar en mql4?

 

¿Puede decirme si es posible establecer la transparencia del fondo, tal vez en la clase base, tal vez algo para ajustar?

 
Maxim Dmitrievsky:

¿Puedes decirme si es posible establecer la transparencia del fondo, tal vez en la clase base? No he podido encontrarlo fácilmente.


Sólo si modificas la clase CGraphic (sólo la edición directa es incorrecta, necesitas herencia, el ejemplo aquí es sólo por rapidez).

//+------------------------------------------------------------------+
//| Crear gráfico|
//+------------------------------------------------------------------+
bool CGraphic::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
//--- comprobar nombre de objeto 
   if(ObjectFind(chart,name)>=0)
      return(false);
//--- cálculo preliminar
   int width=x2-x1;
   int height=y2-y1;
   if(width>0 && height>0)
     {
      m_width=width;
      m_height=height;
      //--- crear objeto
      if(!ObjectCreate(chart,name,OBJ_BITMAP_LABEL,subwin,0,0))
         return(false);
      //--- personalizar objeto
      if(!ObjectSetInteger(chart,name,OBJPROP_XDISTANCE,x1) || 
         !ObjectSetInteger(chart,name,OBJPROP_YDISTANCE,y1))
        {
         ObjectDelete(chart,name);
         return(false);
        }
      //--- adjuntar objeto
      if(!m_canvas.Attach(chart,name,width,height,COLOR_FORMAT_ARGB_NORMALIZE))
        {
         ObjectDelete(chart,name);
         return(false);
        }
     }
//--- éxito
   return(true);
  }

Después de que usted puede controlar el color:

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

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

:

Ejemplo

 
Vladimir Karputov:

Sólo si haces un cambio en la clase CGraphic (sólo la edición directa es incorrecta, necesitas herencia, el ejemplo aquí es puramente por rapidez).

Después de que usted puede controlar el color:

:



gracias, voy a tratar con la herencia :)

 

¿Cómo hacer para que al cambiar los inputs en el Expert Advisor(REASON_PARAMETERS), el gráfico no genere un error y se refresque con los nuevos parámetros? Si cambio de tf o cambio de símbolos, todo va bien, si cambio de parámetros, el error es puntero inválido. El número de curvas cambia en los parámetros y es en ellos donde los punteros son incorrectos.

si no esta claro te puedo poner un ejemplo )