TimeTradeServer analogue pour MT4 - page 3

 
fxsaber:

Je peux appeler et jeter un coup d'œil. S'il y a quelque chose de pertinent, allez-y.

Eh bien, appelez-le et jetez-y un coup d'oeil. Et c'est sur l'affaire elle-même.

 
Vitaly Muzichenko:

Le code est clair, je me suis habitué au style de Saber il y a longtemps, ses codes sont minimalistes et lisibles.

Il a écrit cette fonction à ma demande, ce dont je le remercie.

Alors qu'est-ce que ce code a à voir avec la branche dans laquelle nous sommes en train d'écrire ?

 
Dmitry Fedoseev:

Qu'est-ce que ce code a à voir avec la branche que nous écrivons maintenant ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

TimeTradeServer analogue pour MT4

Ihor Herasko, 2019.12.02 19:03

Retournez la pensée un peu, s'il vous plaît. Commencé le samedi. Nous avons TimeCurrent() - Vendredi 23:59:59. Quelle est la prochaine étape ?


 
Vitaly Muzichenko:

и ?

 
fxsaber:

Entre les fuseaux horaires du serveur et de l'ordinateur.

D'où vient le fuseau horaire du serveur ? C'est en gros le sujet de ce fil de discussion. C'est exactement ce que nous devons découvrir.

 
Ihor Herasko:

Comment obtenir le fuseau horaire du serveur ? C'est en gros le sujet de ce fil de discussion. C'est exactement ce que nous devons savoir.

Vitaly a donné un lien vers cette fonction. Je ne me souviens pas sur quoi l'idée est basée. Mais j'ai dû le vérifier quand j'écrivais. Essayez-le.

 
Cette fonction ne fonctionne pas, elle ne peut pas fonctionner correctement, à moins que ce ne soit sur un DC spécial.
 
Dmitry Fedoseev:
Cette fonction ne fonctionne pas, elle ne peut pas fonctionner correctement à moins d'être sur un DC spécial.

Il serait bon d'avoir des données de lecture.

 
Dmitry Fedoseev:
Ça ne fonctionne pas, ça ne peut pas fonctionner correctement à moins d'être sur une société de courtage spéciale.

Il fonctionne, testé sur 3 différents. Vérifié dans mt5

Ce n'est peut-être pas ce dont TC a besoin, mais ça peut lui apporter quelque chose.

#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:

Il fonctionne, testé sur 3 différents. Vérifié dans mt5

Ce n'est peut-être pas ce dont le TS a besoin, mais cela peut lui apporter quelque chose.

Il fonctionne - je veux dire qu'il bourdonne, mais un réfrigérateur ne devrait pas bourdonner, il devrait geler. Il ne fonctionne pas correctement et il ne faut pas aller bien loin pour le constater.