iTime

İlgili grafikteki çubuğun açılış zamanını ('shift' parametresiyle gösterilir) döndürür.

datetime  iTime(
   const string        symbol,          // Sembol
   ENUM_TIMEFRAMES     timeframe,       // Periyot
   int                 shift            // Shift
   );

Parametreler

symbol

[in]  Finansal enstrümanın sembol ismi. NULL şimdiki sembol anlamına gelir.

timeframe

[in]  Periyot. ENUM_TIMEFRAMES  sayısının değerlerinden biri olabilir. 0 şimdiki grafik periyodu anlamına gelir.

shift

[in]  Zaman çizelgelerinden alınan değerin endeksi (mevcut çubuğa göre belirlenen sayıda çubuk ile geriye doğru kaydırma).

Return Value

Çubuğun açılış zamanı ('shift' parametresi ile gösterilir) ilgili grafikte veya hata durumunda 0. Hata detayları içinGetLastError() fonksiyonunu çağırın.

Not

Fonksiyon her zaman gerçek verileri döndürür. Bu amaçla, her bir arama sırasında belirtilen sembol/periyot için zaman çizelgesine bir istek yapar. Bu, ilk işlev çağrısı sırasında hazır bir veri yoksa, sonucu hazırlamak için biraz zaman alınabileceği anlamına gelir.

İşlev önceki arama sonuçlarını saklamaz ve hızlı değer döndürme için yerel önbellek yoktur.

Örnek:

//+------------------------------------------------------------------+
//| Script programı başlatma fonksiyonu                              |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Tarih Pazardır.
   datetime time=D'2018.06.10 12:00';
   string symbol="GBPUSD";
   ENUM_TIMEFRAMES tf=PERIOD_H1;
   bool exact=false;
//--- Belirtilen zamanda bir bar yok, iBarShift en yakın çubuğun dizinini döndürecektir
   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));
//--- Çubuğun endeksini belirtilen süre ile isteyin; ama bar yok, dönüş -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));
  }
//+------------------------------------------------------------------+
//| Haftanın gününün adını döndürür                                  |
//+------------------------------------------------------------------+
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;
  }
/* Sonuç:
  1. GBPUSD PERIOD_H1 2018.06.10 12:00(SUNDAY): bar index 64 tür (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 -1 dir (exact=true)
*/  

Ayrıca bakınız

CopyTime, CopyRates