Bug oder Brett vor'm Kopf

 

Hallo,

der Code:

static datetime EndTime=0;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {

   datetime StartTime=TimeCurrent();

   if(StartTime>EndTime)
     {
      Print("StartTime > EndTime = true");
     }

   //EndTime=iTime(_Symbol,PERIOD_M30,0);
   static datetime EndTime=StartTime+PeriodSeconds(PERIOD_M30);
  }
//+------------------------------------------------------------------+

Wie man sieht, möchte ich zwei Zeiten vergleichen.

Im ersten Durchlauf/Tick ist klar, dass die StartTime > als die EndTime ist, die 0(Zeit) ist.
Aber dann setze ich die EndTime 30min vor und sie ist es immer noch?
Dazu sagt mir das Ausdrucks-/Debug-Fenster das richtige (unten rechts im Screenshot zu sehen), dass der Ausdruck (StartTime>EndTime) false ist.
Wieso verhält sich der Code nicht so?

Dank wie immer & Gruß,
Christian

 
Christian Linden:
static datetime EndTime=0;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {

   datetime StartTime=TimeCurrent();

   if(StartTime>EndTime)
     {
      Print("StartTime > EndTime = true");
     }

   //EndTime=iTime(_Symbol,PERIOD_M30,0);
    EndTime=StartTime+PeriodSeconds(PERIOD_M30);
  }
//+------------------------------------------------------------------+

So arbeitet der Code richtig

 
Christian Linden:

Hallo,

der Code:

Wie man sieht, möchte ich zwei Zeiten vergleichen.

Im ersten Durchlauf/Tick ist klar, dass die StartTime > als die EndTime ist, die 0(Zeit) ist.
Aber dann setze ich die EndTime 30min vor und sie ist es immer noch?
Dazu sagt mir das Ausdrucks-/Debug-Fenster das richtige (unten rechts im Screenshot zu sehen), dass der Ausdruck (StartTime>EndTime) false ist.
Wieso verhält sich der Code nicht so?

Dank wie immer & Gruß,
Christian

Wieso deklarierst Du EndTime mehrfach?
 
Christian #:

So arbeitet der Code richtig

Oh man.. danke für den SA-morning-service! 

Noch ein paar Jahre, dann kann ich mich bei Euch bewerben =)

 
liju1970 #:
Wieso deklarierst Du EndTime mehrfach?

Das war das Brett vorm Kopf oder die blanken Nerven, weil mein Nachbar ein paar Stunden mit der Flex zugange war..