ChartSetSymbolPeriod

Cambia el valor del símbolo y período del gráfico especificado. Esta función es asíncrona, es decir, envía un comando y no espera la finalización de su ejecución. 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  ChartSetSymbolPeriod(
   long             chart_id,     // identificador del gráfico
   string           symbol,       // nombre del símbolo
   ENUM_TIMEFRAMES  period        // período
   );

Parámetros

chart_id

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

symbol

[in]  Símbolo del gráfico. NULL significa el símbolo del gráfico corriente al que está adjuntado Asesor Experto.

period

[in]  Período del gráfico (período de tiempo). Puede adquirir uno de los valores de la enumeración ENUM_TIMEFRAMES. 0 significa el período del gráfico corriente.

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

El cambio del símbolo/período provoca la reinicialización del  Asesor Experto adjuntado al gráfico correspondiente.

La llamada de ChartSetSymbolPeriod con el mismo símbolo y marco temporal se puede utilizar para actualizar el gráfico (de forma análoga al comando Refresh en el terminal). La acutalización del gráfico, a su vez, inicia el recálculo de los indicadores ligados a él. De esta forma, usted podrá calcular el indicador en el gráfico incluso en ausencia de ticks (por ejemplo, durante los festivos).

Ejemplo:

#define   SYMBOL    "GBPUSD"
#define   PERIOD    PERIOD_H1
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obtenemos el identificador del gráfico actual, su símbolo y su periodo
   long            chart_idChartID();
   string          symbol  = Symbol();
   ENUM_TIMEFRAMES period  = Period();
 
//--- informamos al registro sobre el cambio del símbolo y el periodo del gráfico actual a los especificados en SYMBOL y PERIOD
   PrintFormat("Change the %s symbol and the %s period of the chart %I64u to %s %s",
               symbolTimeframeDescrioption(period), chart_idSYMBOLTimeframeDescrioption(PERIOD));
               
//--- cambiamos el símbolo y el periodo del gráfico
   ChartSetSymbolPeriod(chart_idSYMBOLPERIOD);
   /*
   resultado:
   Change the EURUSD symbol and the M1 period of the chart 133246248352168440 to GBPUSD H1
   */
  }
//+------------------------------------------------------------------+
//| Retorna la descripción del periodo del gráfico                   |
//+------------------------------------------------------------------+
string TimeframeDescrioption(const ENUM_TIMEFRAMES timeframe)
  {
   return(StringSubstr(EnumToString(timeframe), 7));
  }

Véase también

ChartSymbol, ChartPeriod