GMT offset problem, looking for some help.. - page 2

 
    /*++++ Day/Time allowed to open*/{
    datetime    now = TimeGMT();
    int         DOW = TimeDayOfWeek(now),   /* forum.mql4.com/33851
    // reports DayOfWeek() always returns 5 in the tester. No refresh?*/
                DayMask = 1 << DOW;
    //                      #define DAYS_MAX    0x3F// 1<<6-1=63. (S-F)
    //extern int      Days.Mask               =  55;      // Not Wed
    if (Days.Mask & DayMask == 0){  StrApnd(EA.status," Day=",DOW); return; }
    //extern double   TradeHr.UTC.Start   =   7.3;    // London-1
    //extern double   TradeHr.UTC.End     =  12.9;    // NY open
    int secStart    = 3600*TradeHr.UTC.Start,
        secEnd      = 3600*TradeHr.UTC.End,
        hrBeg       = (now-secStart+86400)%86400,
        hrEnd       = (now-secEnd  +86400)%86400;
    if (hrBeg > hrEnd){ double Tminus=hrBeg/3600.-24;
                StrApnd(EA.status," HR", DoubleToStr(Tminus,2));    return; }
    /*---- Day/Time allowed to open*/}
=====================
datetime TimeGMT(){ // TimeCurrent to GMT
    datetime    now = TimeCurrent();                // Under tester, TimeLocal
    return (now + Srvr.To.UTC.Hours*3600);
}
 
WHRoeder:

I have the following:

Please help me to get the EA to place the trade at certain time.

extern int      Srvr.To.UTC.Hours           =   0;

datetime    now = TimeGMT();

datetime TimeGMT(){ // TimeCurrent to GMT
    datetime    now = TimeCurrent();                // Under tester, TimeLocal
    return (now + Srvr.To.UTC.Hours*3600);
}

//placing a trade is not working

void AtCertainTime() {
Print(TimeToStr(TimeGMT(), TIME_MINUTES|TIME_SECONDS), " UTC");
 datetime    now = TimeGMT();
   if (now == 2) //want trade to execute at this time
      IfOrderDoesNotExistDoPlaceTrade();
}
 
gangsta1:
I have the following:
Please help me to get the EA to place the trade at certain time.
 datetime    now = TimeGMT();
   if (now == 2) //want trade to execute at this time
Now is a datetime, and a datetime of 2 is Thu, 01 Jan 1970 00:00:02 GMT I think you missed your chance.
 
WHRoeder:
Now is a datetime, and a datetime of 2 is Thu, 01 Jan 1970 00:00:02 GMT I think you missed your chance.

haha nice one!

Do you know what the code is to get the trade to execute at a certain time, e.g. 2:00

Do I replace

TimeCurrent();

with

TimeHour(TimeCurrent())
extern int      Srvr.To.UTC.Hours           =   0;

datetime    now = TimeGMT();

datetime TimeGMT(){ // TimeCurrent to GMT
    datetime    now = TimeHour(TimeCurrent());                // Under tester, TimeLocal
    return (now + Srvr.To.UTC.Hours*3600);
}

//placing a trade is not working

void AtCertainTime() {
Print(TimeToStr(TimeGMT(), TIME_MINUTES|TIME_SECONDS), " UTC");
 datetime    now = TimeGMT();
   if (now == 2:00:00) //want trade to execute at this time
      IfOrderDoesNotExistDoPlaceTrade();
}
 
  1.     datetime    now = TimeHour(TimeCurrent());                // Under tester, TimeLocal
        return (now + Srvr.To.UTC.Hours*3600);

    what does y hour + x*3600 sec/hr mean?


  2. datetime    now = TimeGMT();
    if (TimeHour(now) == 2) //want trade to execute at this hour

    Think first, then code.

 

I opted for an easier and more flexible solution:


  int hour= TimeHour(TimeCurrent());
   if (DayOfWeek() != day_of_week && hour == HourStart) {
Reason: