TimeTradeServer analogue pour MT4 - page 5

 
fxsaber:

Comment reproduire à partir d'un dessin ?

Je pense que la figure le montre de manière très éloquente :

  1. Il y a l'EURUSD.
  2. Il y a un historique d'une minute.
  3. Il y a une heure de serveur et une heure GMT.
  4. Vous avez indiqué le nom du TC.
  5. La différence entre eux devrait être de 2 mais en fait elle est de 0.
De quoi d'autre ai-je besoin ? Faites-le moi savoir et je le ferai.
 
fxsaber:

Faites un tel changement et il continuera. La définition de l'été et de l'hiver n'a pas été faite, quelqu'un le fera.

Premièrement, ce n'est pas "moins 2" mais "plus 2". Alors pour mon cas, ça colle.

Deuxièmement, pour un serveur qui a un décalage de 4 heures par rapport à GMT, suggérez-vous de mettre 4 au lieu de 2 ? Dans ce cas, je n'ai pas besoin de fonction, il me suffit d'utiliser un nombre initialement connu et d'obtenir une réponse correcte. )))

 
Ihor Herasko:

De quoi d'autre avez-vous besoin ? Dites-moi, je vous fournirai.

Le code et le nom du serveur de trading auquel vous pouvez vous connecter en ouvrant une démo via le terminal.

 
Ihor Herasko:

Tout d'abord, ce n'est pas "moins 2", mais "plus 2". Alors pour mon cas, ça colle.

Deuxièmement, pour un serveur qui est décalé de 4 heures par rapport à l'heure GMT, conseillez-vous de mettre 4 au lieu de 2 ? Dans ce cas, je n'ai pas besoin de fonction, il me suffit d'utiliser un nombre initialement connu et d'obtenir une réponse correcte. )))

Vous m'avez attribué une déclaration que je n'ai pas faite et vous avez dit que c'était faux. Vous avez également essayé de faire une blague à ce sujet.

 
Dmitry Fedoseev:

Comme la fonction OrderSend() rencontre une erreur "le marché est fermé" (cela existe), nous arrêtons toutes les tentatives de négociation et attendons que le prix change, ce qui signifiera que le marché s'est ouvert.

L'idée pourrait certainement aider, j'aimerais savoir quand le marché est fermé sans erreurs inutiles. Nous devons y réfléchir.

 
Maxim Kuznetsov:
Nous ne devons pas chercher la dernière minute (23:59) sur l'EURUSD, mais la nuit sur l'or. L'or se négocie strictement amsterdam, monnaies selon l'heure du serveur. Trouvez ici le décalage GMT du serveur

Je vais vous dire un terrible secret, tous les jours ne peuvent pas se terminer à 23h59 :-) Et nous ne pouvons pas savoir à l'avance à quelle heure elle se terminera. Par exemple, les jours précédant les vacances et les vendredis.

 
fxsaber:

Faites un tel changement et il continuera. Je n'ai pas fait de définition d'été et d'hiver, quelqu'un le fera.

Cela ne fonctionnera pas sur les systèmes où ils ne mettent pas à jour le système tel qu'il est installé :-) Par exemple, il y a toujours le changement d'heure de l'hiver à l'été en RF. J'ai rencontré de tels systèmes...

 
fxsaber:

Le code et le nom du serveur de trading auquel vous pouvez vous connecter en ouvrant une démo via le terminal.

Code: https://www.mql5.com/ru/forum/327616/page3#comment_14093858

Identifiant : 12752745

Serveur : yk2mkat

Serveur : Alpari-Demo

TimeTradeServer аналог для МТ4
TimeTradeServer аналог для МТ4
  • 2019.12.02
  • www.mql5.com
Интересует решение этой функции под МТ4 TimeTradeServer...
 
fxsaber:

Vous m'avez attribué une déclaration que je n'ai pas faite, puis vous avez dit qu'elle était fausse. Et puis vous avez essayé de faire une blague à ce sujet.

Ce n'est pas toi qui l'a écrit?

Je ne plaisante pas avec ça. Dans le code que vous avez soumis, 0 est changé en 2. Exactement autant que j'obtienne un décalage entre le temps réel et le temps calculé par le serveur. C'est pourquoi j'ai été surpris par cette approche : regarder l'écart nécessaire et mettre le décalage nécessaire au lieu de 0. Il n'y a pas de quoi rire ici.

TimeTradeServer аналог для МТ4
TimeTradeServer аналог для МТ4
  • 2019.12.03
  • www.mql5.com
Интересует решение этой функции под МТ4 TimeTradeServer...
 
Ihor Herasko:

Code: https://www.mql5.com/ru/forum/327616/page3#comment_14093858

Identifiant : 12752745

compte : yk2mkat

Serveur : Alpari-Demo

Ihor Herasko:

Ce n'est pas vous qui avez écrit?

A propos de la blague - pas de blague. Le code que vous avez soumis a été modifié de 0 à 2. J'ai obtenu la différence entre le temps réel et le temps estimé du serveur. C'est pourquoi j'ai été surpris par cette approche : regarder l'écart nécessaire et mettre le décalage nécessaire au lieu de 0. Il n'y a pas de quoi rire.

Le code de contrôle

#property strict

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

datetime GetBarTime( const datetime time, const bool NextBar = false, string Symb = NULL, const ENUM_TIMEFRAMES TimeFrame = PERIOD_M1 )
{
  if (Symb == NULL)
    Symb = _Symbol;
    
  return(iTime(Symb, TimeFrame, iBarShift(Symb, TimeFrame, time) - (NextBar ? 1 : 0)));
}

datetime GetTimeDayOfWeek( const int Shift = 0, const ENUM_DAY_OF_WEEK Day = SUNDAY )
{
  const datetime Res = TimeCurrent() / DAY * DAY;
  
  return(Res - (((WEEK + (TimeDayOfWeek(Res) - Day)) % WEEK) + Shift * WEEK) * DAY);
}

// https://www.mql5.com/ru/forum/327616/page4#comment_14098877
// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
int TimeServerGMTOffset( const bool SummerTime = false )
{
  const datetime Sunday = GetTimeDayOfWeek();
  
  return(((int)MathRound((double)MathMin(Sunday - DAY - GetBarTime(Sunday), Sunday + DAY - GetBarTime(Sunday, true)) / HOUR) - SummerTime - 2) * HOUR);
}

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
datetime TimeServerGMT( void )
{
  return(TimeCurrent() + TimeServerGMTOffset());
}

#define  PRINT(A) Print(#A + " = " + (string)(A))

// https://www.mql5.com/ru/forum/170953/page8#comment_6940794
void OnStart()
{  
  PRINT(TimeGMT());
  PRINT(TimeServerGMT());  
}


Résultat sur une machine avec le même GMT que chez Alpari.

2019.12.03 19:28:09.048 Test5-3 EURUSD,M1: TimeServerGMT() = 2019.12.03 17:28:12
2019.12.03 19:28:09.048 Test5-3 EURUSD,M1: TimeGMT() = 2019.12.03 17:28:09


Vérifié

AccountServer() = AMPGlobalUSA-Demo

C'est correct.