Analógico TimeTradeServer para MT4 - página 5

 
fxsaber:

Como se reproduz a partir de um desenho?

Acho que a figura o mostra de forma muito eloquente:

  1. Existe o EURUSD.
  2. Há uma história de um minuto.
  3. Há uma hora do servidor e uma hora GMT.
  4. Você indicou o nome TC.
  5. A diferença entre eles deveria ser 2, mas na verdade é 0.
O que mais eu preciso? Por favor, me avise e eu o farei.
 
fxsaber:

Faça essa mudança e ela continuará a arar. A definição de verão e inverno ainda não foi feita, alguém o fará.

Primeiramente, não é "menos 2", mas "mais 2". Depois, para o meu caso, ele se encaixa.

Em segundo lugar, para um servidor que tem um intervalo de 4 horas a partir do GMT, você sugeriria colocar 4 em vez de 2? Então eu não preciso de função, apenas uso o número inicialmente conhecido e recebo a resposta correta. )))

 
Ihor Herasko:

O que mais você precisa? Diga-me, eu vou providenciar.

O código e nome do servidor comercial ao qual você pode se conectar abrindo uma demonstração através do terminal.

 
Ihor Herasko:

Primeiro de tudo, não é "menos 2", mas "mais 2". Depois, para o meu caso, ele se encaixa.

Em segundo lugar, para um servidor que seja compensado a 4 horas do GMT, você aconselharia colocar 4 em vez de 2? Então eu não preciso de função, apenas uso o número inicialmente conhecido e recebo a resposta correta. )))

Você me atribuiu uma declaração que eu não fiz e depois disse que estava errada. Você também tentou fazer uma piada sobre isso.

 
Dmitry Fedoseev:

Como a função OrderSend() se depara com um erro "o mercado está fechado" (existe algo assim), paramos todas as tentativas de negociação e esperamos que o preço mude, o que significará que o mercado se abriu.

A idéia poderia certamente ajudar, eu gostaria de saber quando o mercado estiver fechado sem erros desnecessários. Precisamos pensar sobre isso.

 
Maxim Kuznetsov:
Não devemos procurar o último (23:59) minuto no EURUSD, mas sim a noite sobre o ouro. O ouro é negociado estritamente amsterdam, moedas de acordo com o tempo do servidor. A partir daqui, encontre o offset GMT do servidor

Vou lhe contar um segredo terrível, nem todos os dias podem terminar às 23:59 h :-) E podemos não saber com antecedência a que horas terminará. Por exemplo, em dias pré-férias e sextas-feiras.

 
fxsaber:

Faça essa mudança e ela continuará a arar. Não fez a definição de verão e inverno, alguém o fará.

Não vai funcionar, em sistemas onde eles não atualizam a porra do sistema como instalado :-) Por exemplo, ainda há a mudança de horário do inverno para o verão em RF. Eu já encontrei tais sistemas...

 
fxsaber:

O código e o nome do servidor comercial ao qual você pode se conectar abrindo uma demonstração através do terminal.

Código:https://www.mql5.com/ru/forum/327616/page3#comment_14093858

Login: 12752745

Servidor: yk2mkat

Servidor: Alpari-Demo

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

Você me atribuiu uma declaração que eu não fiz e depois disse que estava errada. E então você tentou fazer uma piada sobre isso.

Não foi você quem o escreveu?

Não há brincadeira sobre a piada. No código que você enviou, 0 é alterado para 2. Exatamente tanto quanto eu recebo uma discrepância entre o tempo real e o tempo calculado do servidor. É por isso que fiquei surpreso com esta abordagem: olhar para a discrepância necessária e colocar a compensação necessária em vez de 0. Não há nada de que rir aqui.

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

Código:https://www.mql5.com/ru/forum/327616/page3#comment_14093858

Login: 12752745

conta: yk2mkat

Servidor: Alpari-Demo

Ihor Herasko:

Não foi o senhor que escreveu?

Sobre a brincadeira - sem brincadeira. O código que você enviou foi alterado de 0 para 2. Eu tenho a diferença entre o tempo real e o tempo estimado do servidor. É por isso que fiquei surpreso com esta abordagem: olhar para a discrepância necessária e colocar a compensação necessária em vez de 0. Não há nada de que rir.

O código de verificação

#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());  
}


Resultado em uma máquina com o mesmo GMT que na 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


Verificado em

AccountServer() = AMPGlobalUSA-Demo

Está correto.

Razão: