TimeTradeServer analog für MT4 - Seite 3

 
fxsaber:

Ich kann vorbeikommen und es mir ansehen. Wenn es etwas Relevantes gibt, schießen Sie los.

Rufen Sie an und schauen Sie es sich an. Und es steht auf dem Koffer selbst.

 
Vitaly Muzichenko:

Der Code ist klar, ich habe mich schon lange an Sabers Stil gewöhnt, seine Codes sind minimalistisch und gut lesbar.

Er schrieb diese Funktion auf meine Bitte hin, wofür ich ihm danke.

Was hat dieser Code dann mit dem Zweig zu tun, in dem wir gerade schreiben?

 
Dmitry Fedoseev:

Was hat dieser Code mit dem Zweig zu tun, den wir gerade schreiben?

Forum zum Thema Handel, automatische Handelssysteme und Strategietests

TimeTradeServer analog für MT4

Ihor Herasko, 2019.12.02 19:03

Drehen Sie den Gedanken bitte ein wenig um. Begonnen am Samstag. Wir haben TimeCurrent() - Freitag 23:59:59. Was kommt als Nächstes?


 
Vitaly Muzichenko:

и?

 
fxsaber:

Zwischen Server- und Computerzeitzonen.

Woher bekommen wir die Zeitzone des Servers? Darum geht es im Grunde in diesem ganzen Thread. Das ist genau das, was wir herausfinden müssen.

 
Ihor Herasko:

Wie erhalten wir die Zeitzone des Servers? Darum geht es im Grunde in diesem ganzen Thread. Das ist genau das, was wir wissen müssen.

Vitaly hat einen Link zu dieser Funktion angegeben. Ich weiß nicht mehr, worauf die Idee beruht. Aber ich muss es beim Schreiben überprüft haben. Probieren Sie es aus.

 
Diese Funktion funktioniert nicht, sie kann nicht richtig funktionieren, es sei denn, es handelt sich um einen speziellen Gleichstrom.
 
Dmitry Fedoseev:
Diese Funktion funktioniert nicht, sie kann nicht richtig funktionieren, es sei denn, sie ist mit einem speziellen Gleichstrom verbunden.

Es wäre gut, Wiedergabedaten zu haben.

 
Dmitry Fedoseev:
Es funktioniert nicht, es kann nicht richtig funktionieren, es sei denn, es handelt sich um eine spezielle Maklerfirma.

Es funktioniert, getestet an 3 verschiedenen. Überprüft in mt5

Es ist vielleicht nicht das, was TC braucht, aber es kann ihm etwas bringen

#property strict


#define  HOUR 3600
#define  DAY (24 * HOUR)
#define  WEEK 7

void OnTick() {
  Comment(TimeServer() +"\n"+
          TimeServerGMT() +"\n"+
          TimeServerGMTOffset());  
}

//--
MqlDateTime Tm;   

datetime GetBarTime(datetime time, bool NextBar = false,string Symb = NULL, ENUM_TIMEFRAMES TimeFrame = PERIOD_M15) {
 if(Symb == NULL) Symb = _Symbol;
  return(iTime(Symb, TimeFrame, iBarShift(Symb, TimeFrame, time) - (NextBar ? 1 : 0)));
 }
//--
datetime GetTimeDayOfWeek(int Shift = 0, ENUM_DAY_OF_WEEK Day = SUNDAY ) {
 const datetime Res = TimeCurrent() / DAY * DAY;
 TimeToStruct(Res,Tm);
  return(Res - (((WEEK + (Tm.day_of_week - Day)) % WEEK) + Shift * WEEK) * DAY);
 }
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
int TimeServerGMTOffset(void) {
 static string _sym=NULL;
 static int _arr=0;
 if(_sym==NULL) {
  datetime Arr[];
  for(int i=0;i<SymbolsTotal(false);i++) {
   if(StringFind(SymbolName(i,false),"EURUSD",0)>-1) {
    _sym=SymbolName(i,false);
    CopyTime(_sym,PERIOD_M15,1,500,Arr);
    if(SymbolInfoInteger(_sym,SYMBOL_SELECT)==0) SymbolSelect(_sym,true);
    _arr=ArraySize(Arr);
    break;
   }
  }
  if(_sym==NULL) Alert("Not Symbol EURUSD");
 }
 if(_arr<500) {_sym=NULL; return(0);}
 const datetime Sunday = GetTimeDayOfWeek();
  return(((int)MathRound((double)MathMin(Sunday-DAY-GetBarTime(Sunday,false,_sym),Sunday+DAY-GetBarTime(Sunday,true,_sym))/HOUR)-0)*HOUR);
 }
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
datetime TimeServer(void) {
  return(TimeCurrent());
 }
// Серверное время
datetime TimeServerGMT() {
  return(TimeCurrent() + TimeServerGMTOffset()+TimeGMTOffset());
 }
 
Vitaly Muzichenko:

Es funktioniert, getestet an 3 verschiedenen. Überprüft in mt5

Es ist wahrscheinlich nicht das, was TC braucht, aber es kann etwas von ihm nehmen.

Er funktioniert - ich meine, er brummt, aber ein Kühlschrank sollte nicht brummen, er sollte einfrieren. Es funktioniert nicht richtig, und man muss nicht weit gehen, um das zu erkennen.