Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Zeit in Stunden/Minuten von Kerze[x abfragen] (http://www.expert-advisor.com/forum/showthread.php?t=5896)

Fauschtolo 19.10.17 18:17

Zeit in Stunden/Minuten von Kerze[x abfragen]
 
hallo,
Ich bin auf ein Problemchen gestoßen und bin mir sicher dass ihr mir dabei helfen könnt.
Also: in einer If abfrage möchte ich kontrollieren ob die Zeit einer x-beliebigen Kerze größer als 14:30 und kleiner als 18:30 ist.

Ich suche also nach einer Funktion die mir die Zeit von Kerze[x] in Stunden (Zahlen zwischen 0 und 23) und ebenfalls die dazugehörigen Minuten (Zahlen zwischen 0-59) ausgibt.

Danke schon mal im voraus

Kronenchakra 20.10.17 21:17

Hi, ich denke das wird dir weiterhelfen.
Gilt für MT4 und MT5.
Code:

int nBars=10;

int OnInit()
{
  int bar;
  for(bar=0; bar<nBars; bar++)
      Print(BarTimeAsDate(bar));
     
  for(bar=0; bar<nBars; bar++)
      Print(BarTimeAsString(bar));

  for(bar=0; bar<nBars; bar++)
      {
        int h,m;
        BarTime(bar,h,m);
        Print("\nCandleStart: ",h,":",m);
      }

  return(INIT_SUCCEEDED);
}

void OnTick()
{
}

//+------------------------------------------------------------------+
//| Variante 1                                                      |
//+------------------------------------------------------------------+

datetime BarTimeAsDate(int bar)
{
  MqlRates rates[1];
  int result=CopyRates(_Symbol,_Period,bar,1,rates);
  return(rates[0].time);
}

//+------------------------------------------------------------------+
//| Variante 2                                                      |
//+------------------------------------------------------------------+

string BarTimeAsString(int bar, int  mode=TIME_DATE|TIME_MINUTES)
{
  return(TimeToString(BarTimeAsDate(bar), mode));
}

//+------------------------------------------------------------------+
//| Variante 3                                                      |
//+------------------------------------------------------------------+

bool BarTime(int bar, int &hour, int &min)
{
  if(bar<0)
      bar=0;

  if(bar>Bars-1)
      bar=Bars-1;
     
  MqlRates rates[1];
  if(CopyRates(_Symbol,_Period,bar,1,rates)!=1)
      return(false);

  MqlDateTime DateTime;
  TimeToStruct(rates[0].time,DateTime);

  hour=DateTime.hour;
  min =DateTime.min;
 
  return(true);
}

Ich denke du benötigst Variante 3
Sieh dir in der Reference CopyRates(..) an, damit du die richtige Kerze erwischst.

Grüße Otto

Fauschtolo 21.10.17 22:32

Danke werd ich gleich ausprobieren😘


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:34 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum