ChartSetDouble

Establece el valor para la propiedad correspondiente del gráfico especificado. La propiedad del gráfico debe ser del tipo double. 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  ChartSetDouble(
   long                           chart_id,     // identificador del gráfico
   ENUM_CHART_PROPERTY_DOUBLE     prop_id,      // identificador de la propiedad
   double                         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_DOUBLE (excepto las propiedades read-only).

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:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obtenemos el indentificador del gráfico actual
   long chart_id = ChartID();
   
//--- recordamos la separación inicial de la barra cero desde el borde derecho en porcentaje y la bandera de desplazamiento automático
   double shift = ChartGetDouble(chart_idCHART_SHIFT_SIZE);
   bool   scrollChartGetInteger(chart_id,CHART_AUTOSCROLL);
   
//--- restablecemos la bandera de desplazamiento automático del gráfico
   ChartSetInteger(chart_idCHART_AUTOSCROLLtrue);
   PrintFormat("Initial chart shift size: %.2f"shift);
 
//--- en un cilo de 2.0% a 50.0% con un paso en 0.5%
   for(int i=20i<=500i+=5)
     {
      //--- establecemos el tamaño de la separación en i / 10 e imprimimos el valor establecido en el registro
      ChartSetDouble(chart_idCHART_SHIFT_SIZEi/10.0);
      PrintFormat("Set chart shift size to %.1f%%"i/10.0);
      
      //--- mantenemos la barra cero del gráfico a la distancia de separación establecida
      ChartNavigate(chart_idCHART_END0);
      
      //--- esperamos un poco
      Sleep(16);
     }
 
//--- establecemos la separación inicial y el desplazamiento automático del gráfico
   Print("Set the chart shift size to the initial value of "shift);
   ChartSetDouble(ChartID(), CHART_SHIFT_SIZEshift);
   ChartSetInteger(chart_idCHART_AUTOSCROLLscroll);
  }