Descargar MetaTrader 5

ChartSetInteger

Establece el valor para la propiedad correspondiente del gráfico especificado. La propiedad del gráfico debe ser del tipo datetime, int, color, bool o char. El comando se añade a la cola de los mensajes del gráfico y se ejecuta sólo después del procesamiento de todos los comandos anteriores.

bool  ChartSetInteger(
   long   chart_id,     // identificador del gráfico
   int    prop_id,      // identificador de la propiedad
   long   value         // valor
   );

Establece un valor para la propiedad correspondiente de la subventana indicada.

bool  ChartSetInteger(
   long   chart_id,     // identificador del gráfico
   int    prop_id,      // identificador de la propiedad
   int    sub_window,   // número de subventana
   long   value         // valor
   );

Parámetros

chart_id

[in]  Identificador del gráfico. 0 significa el gráfico actual.

prop_id

[in]  Identificador de la propiedad del gráfico. Su valor puede ser uno de los valores de la enumeración ENUM_CHART_PROPERTY_INTEGER (excepto las propiedades read-only).

sub_window

[in]  Número de subventana del gráfico. Para la primera variante por defecto el valor es igual a 0 (ventana principal del gráfico). La mayoría de las propiedades no requiere indicar el número de subventana.

value

[in]  Valor de la propiedad.

Valor devuelto

Si el comando se coloca con éxito a la cola del gráfico, devuelve true, de lo contrario, devuelve false. Para obtener la información sobre el error, hay que llamar a la función GetLastError().

Nota

La función es asincrónica, esto significa que la función no espera la ejecución de un comando colocado con éxito en la cola del gráfico especificado, sino que devuelve inmediatamente el control. La propiedad cambiará solo después de que el comando haya sido procesado en la cola del gráfico. Para que el comando se ejecute de inmediato en la cola del gráfico, hay que llamar a la función ChartRedraw.

Si resulta necesario cambiar de inmediato varias propiedades del gráfico, entonces deberemos ejecutar las funciones correspondientes (ChartSetString, ChartSetDouble, ChartSetString) en un bloque de código y después llamar una vez ChartRedraw.

Para comprobar el resultado de la ejecución, podemos usar la función que solicita la propiedad del gráfico indicada (ChartGetInteger, ChartGetDouble, ChartSetString). En este caso, además, hay que tener en cuenta que estas funciones son sincrónicas y esperan el resultado de la ejecución.

Ejemplo:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- habilitando mensajes sobre el desplazamiento del ratón por la ventana del gráfico
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);
//--- la actualización forzosa de las propiedades del gráfico garantiza la preparación para el procesamiento de eventos
   ChartRedraw();
  }
//+------------------------------------------------------------------+
//| MouseState                                                       |
//+------------------------------------------------------------------+
string MouseState(uint state)
  {
   string res;
   res+="\nML: "   +(((state& 1)== 1)?"DN":"UP");   // mouse left
   res+="\nMR: "   +(((state& 2)== 2)?"DN":"UP");   // mouse right 
   res+="\nMM: "   +(((state&16)==16)?"DN":"UP");   // mouse middle
   res+="\nMX: "   +(((state&32)==32)?"DN":"UP");   // mouse first X key
   res+="\nMY: "   +(((state&64)==64)?"DN":"UP");   // mouse second X key
   res+="\nSHIFT: "+(((state& 4)== 4)?"DN":"UP");   // shift key
   res+="\nCTRL: " +(((state& 8)== 8)?"DN":"UP");   // control key
   return(res);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   if(id==CHARTEVENT_MOUSE_MOVE)
      Comment("POINT: ",(int)lparam,",",(int)dparam,"\n",MouseState((uint)sparam));
  }