iTime

Retorna el valor del tiempo de apertura de la barra (indicada por el parámetro shift) del gráfico correspondiente.

datetime  iTime(
   const string        symbol,          // símbolo
   ENUM_TIMEFRAMES     timeframe,       // periodo
   int                 shift            // desplazamiento
   );

Parámetros

symbol

[in]  Nombre del símbolo del instrumento. NULL designa el símbolo actual.

timeframe

[in]  Periodo. Puede ser uno de los valores de la enumeración ENUM_TIMEFRAMES. 0 designa el periodo del gráfico actual.

shift

[in]  Índice del valor obtenido de la serie temporal (desplazamiento respecto a la barra actual en el número indicado de barras hacia atrás).

Valor devuelto

Valor de la hora y fecha de apertura de la barra (indicado con el parámetro shift) del gráfico correspondiente o 0 en caso de error. Para obtener información adicional sobre el error, es necesario llamar la función GetLastError().

Nota

La función siempre retorna los datos reales, para ello, envía en cada llamada una solicitud a las series temporales para el símbolo/periodo especificado. Esto significa que si no hay datos listos en la primera llamada de la función, puede requerir algún tiempo preparar el resultado de la ejecución.

La función no guarda los resultados de llamadas anteriores, no existe memoria caché local para el retorno rápido del valor

Ejemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- la hora y fecha cae en domingo
   datetime time=D'2018.06.10 12:00';
   string symbol="GBPUSD";
   ENUM_TIMEFRAMES tf=PERIOD_H1;
   bool exact=false;
//--- no existe la barra de la hora y fecha indicadas, por eso iBarShift retornará el índice de la barra más próxima
   int bar_index=iBarShift(symbol,tf,time,exact);
   PrintFormat("1. %s %s %s(%s): bar index is %d (exact=%s)",
               symbol,EnumToString(tf),TimeToString(time),DayOfWeek(time),bar_index,string(exact));
   datetime bar_time=iTime(symbol,tf,bar_index);
   PrintFormat("Time of bar #%d is %s (%s)",
               bar_index,TimeToString(bar_time),DayOfWeek(bar_time));
//PrintFormat(iTime(symbol,tf,bar_index));
//--- requerimos encontrar el índice de la barra para la hora y fecha especificadas, pero no existe, así que retornamos -1
   exact=true;
   bar_index=iBarShift(symbol,tf,time,exact);
   PrintFormat("2. %s %s %s (%s):bar index is %d (exact=%s)",
               symbol,EnumToString(tf),TimeToString(time),DayOfWeek(time),bar_index,string(exact));
  }
//+------------------------------------------------------------------+
//| Retornamos el nombre para la semana                                   |
//+------------------------------------------------------------------+
string DayOfWeek(const datetime time)
  {
   MqlDateTime dt;
   string day="";
   TimeToStruct(time,dt);
   switch(dt.day_of_week)
     {
      case 0: day=EnumToString(SUNDAY);
      break;
      case 1: day=EnumToString(MONDAY);
      break;
      case 2: day=EnumToString(TUESDAY);
      break;
      case 3: day=EnumToString(WEDNESDAY);
      break;
      case 4: day=EnumToString(THURSDAY);
      break;
      case 5: day=EnumToString(FRIDAY);
      break;   
      default:day=EnumToString(SATURDAY);
      break;
     }
//---
   return day;
  }
/* Resultado:
  1 GBPUSD PERIOD_H1 2018.06.10 12:00(SUNDAY): bar index is 64 (exact=false)
   Time of bar #64 is 2018.06.08 23:00 (FRIDAY)
   2. GBPUSD PERIOD_H1 2018.06.10 12:00 (SUNDAY):bar index is -1 (exact=true)
*/  

Vea también

CopyTime, CopyRates