Análogo de TimeTradeServer para MT4 - página 5

 
fxsaber:

¿Cómo se reproduce a partir de un dibujo?

Creo que la figura lo muestra de forma muy elocuente:

  1. Existe el EURUSD.
  2. Hay una historia de un minuto.
  3. Hay una hora del servidor y una hora GMT.
  4. Ha indicado el nombre del TC.
  5. La diferencia entre ellos debería ser 2, pero en realidad es 0.
¿Qué más necesito? Por favor, hágamelo saber y lo haré.
 
fxsaber:

Haz un cambio así y seguirá adelante. La definición de verano e invierno no se ha hecho, alguien lo hará.

En primer lugar, no es "menos 2" sino "más 2". Entonces para mi caso encaja.

En segundo lugar, para un servidor que tiene un desfase de 4 horas respecto a GMT, ¿sugiere poner 4 en lugar de 2? Entonces no necesito la función, sólo uso el número conocido inicialmente y obtengo la respuesta correcta. )))

 
Ihor Herasko:

¿Qué más necesitas? Dígame, yo se lo proporcionaré.

El código y el nombre del servidor de operaciones al que puede conectarse abriendo una demo a través del terminal.

 
Ihor Herasko:

En primer lugar, no es "menos 2", sino "más 2". Entonces para mi caso encaja.

En segundo lugar, para un servidor que está desplazado 4 horas respecto a GMT, ¿aconsejáis poner 4 en lugar de 2? Entonces no necesito la función, sólo uso el número conocido inicialmente y obtengo la respuesta correcta. )))

Me has atribuido una afirmación que no he hecho y luego has dicho que es errónea. También intentaste hacer una broma al respecto.

 
Dmitry Fedoseev:

Como la función OrderSend() se encuentra con un error "el mercado está cerrado" (hay algo así), detenemos todos los intentos de negociación y esperamos a que el precio cambie, lo que significará que el mercado se ha abierto.

La idea podría ayudar sin duda, me gustaría saber cuando el mercado está cerrado sin errores innecesarios. Tenemos que pensar en ello.

 
Maxim Kuznetsov:
No debemos buscar el último minuto (23:59) en el EURUSD, sino la noche en el oro. El oro se negocia estrictamente en Ámsterdam, las divisas según la hora del servidor. A partir de aquí, busque el desplazamiento GMT del servidor

Te voy a contar un terrible secreto, no todos los días pueden terminar a las 23:59 :-) Y es posible que no sepamos de antemano a qué hora terminará. Por ejemplo, los días previos a las vacaciones y los viernes.

 
fxsaber:

Haz un cambio así y seguirá adelante. No hizo la definición de verano e invierno, alguien lo hará.

No funcionará, en los sistemas en los que no se actualiza el puto sistema tal y como está instalado :-) Por ejemplo, sigue habiendo un cambio de horario de invierno a verano en RF. Me he encontrado con estos sistemas...

 
fxsaber:

El código y el nombre del servidor de operaciones al que puede conectarse abriendo una demo a través del terminal.

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

Nombre de usuario: 12752745

Servidor: yk2mkat

Servidor: Alpari-Demo

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

Me has atribuido una afirmación que no he hecho y luego has dicho que es errónea. Y luego trataste de hacer una broma al respecto.

¿No fuiste tú quien lo escribió?

La broma no tiene nada de broma. En el código que has enviado, el 0 se cambia por el 2. Exactamente lo mismo que me ocurre con la discrepancia entre la hora real y la calculada por el servidor. Por eso me sorprendió este planteamiento: mirar la discrepancia necesaria y poner el desplazamiento necesario en lugar de 0. Aquí no hay nada de qué reírse.

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

Nombre de usuario: 12752745

cuenta: yk2mkat

Servidor: Alpari-Demo

Ihor Herasko:

¿No fuiste tú quien escribió?

Sobre la broma - no es una broma. En el código que has enviado, se ha cambiado el 0 por el 2. Tengo la diferencia entre el tiempo real y el estimado del servidor. Por eso me sorprendió este planteamiento: mirar la discrepancia necesaria y poner el desplazamiento necesario en lugar de 0. No hay nada de qué reírse.

El código de control

#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 en una máquina con el mismo GMT que en 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


Comprobado

AccountServer() = AMPGlobalUSA-Demo

Es correcto.