iTime

Gibt den Zeitpunkt der Eröffnung eines Balkens (der mithilfe des Parameters shift vorgegeben wurde) des entsprechenden Charts zurück.

datetime  iTime(
   const string        symbol,          // Symbol
   ENUM_TIMEFRAMES     timeframe,       // Zeitrahmen
   int                 shift            // Verschiebung
   );

Parameter

symbol

[in]  Name des Finanzinstruments. NULL bedeutet das aktuelle Symbol.

timeframe

[in]  Zeitrahmen. Der Wert kann einer der Werte der Aufzählung ENUM_TIMEFRAMES sein. 0 bedeutet den Zeitrahmen des aktuellen Charts.

shift

[in]  Index des abgefragten Wertes aus der Zeitreihe (Rückwärtsverschiebung um die angegebenen Anzahl der Balken relativ zum aktuellen Balken).

Rückgabewert

Wert des Open-Preises (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts oder 0 im Fehlerfall. Um zusätzliche Informationen über den Fehler zu erhalten, rufen Sie die Funktion GetLastError() auf.

Hinweis

Die Funktion gibt immer aktuelle Daten zurück, dafür fragt sie die Zeitreihe nach dem angegebenen Symbol/Zeitrahmen bei jedem Aufruf ab. Wenn keine Daten beim ersten Aufruf der Funktion vorhanden sind, kann die Vorbereitung des Ergebnisses der Ausführung einige Zeit in Anspruch nehmen.

Die Funktion speichert die Ergebnisse der vorherigen Aufrufe nicht, es gibt keinen lokalen Cache für eine schnelle Rückgabe des Wertes.

Beispiel:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
 { 
//--- das Datum fällt auf einen Sonntag
   datetime time=D'2018.06.10 12:00';
   string symbol="GBPUSD";
   ENUM_TIMEFRAMES tf=PERIOD_H1;
   bool exact=false;
//--- es gibt keinen Bar für die angegebene Zeit, daher gibt iBarShift den Index des nächsten Bars zurück
   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));
//--- Abfrage des Index des Bars mit der angegebenen Zeit, aber es gibt keinen Balken - es wird -1 zurückgegeben
   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));
  }
//+------------------------------------------------------------------+
//| Gibt den Wochentag zurück                                        |
//+------------------------------------------------------------------+
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;
  }
/* Das Ergebnis:
   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)
*/  

Siehe auch

CopyTime, CopyRates