Mercado cerrado

 

¡Ustedes son los desarrolladores!

¿Cuándo se va a sincronizar la hora del terminal con la de la Bolsa?

2017.01.13 10:00:03.969 Trades  'xxxxx': buy limit 2.00 ED-6.17 at 1.0642
2017.01.13 10:00:03.969 Trades  'xxxxx': sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.975 Trades  'xxxxx': accepted buy limit 2.00 ED-6.17 at 1.0642
2017.01.13 10:00:03.975 Trades  'xxxxx': accepted sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.978 Trades  'xxxxx': failed buy limit 2.00 ED-6.17 at 1.0642 [Market closed]
2017.01.13 10:00:03.979 Trades  'xxxxx': failed sell limit 1.00 ED-6.17 at 1.0813 [Market closed]
 
2017.01.13 10:00:03.210 Trades  'xxxxx': buy limit 1.00 MXI-6.17 at 2230.15
2017.01.13 10:00:03.210 Trades  'xxxxx': sell limit 1.00 MXI-6.17 at 2300.75
2017.01.13 10:00:03.216 Trades  'xxxxx': accepted buy limit 1.00 MXI-6.17 at 2230.15
2017.01.13 10:00:03.218 Trades  'xxxxx': accepted sell limit 1.00 MXI-6.17 at 2300.75
2017.01.13 10:00:03.219 Trades  'xxxxx': failed buy limit 1.00 MXI-6.17 at 2230.15 [Market closed]
2017.01.13 10:00:03.220 Trades  'xxxxx': failed sell limit 1.00 MXI-6.17 at 2300.75 [Market closed]

añadido

El tiempo de negociación se comprueba antes de enviar la orden

//+------------------------------------------------------------------+
//| Expert Check traiding time function                              |
//+------------------------------------------------------------------+
bool CheckTradingTime(MqlDateTime &tick_time)
{
  datetime lk_time = TimeCurrent(tick_time);
  if ( ( tick_time.day_of_week == int(FirstDay)) ||
       ( tick_time.day_of_week == int(SecondDay)))//выходные
  {
    return(false);
  }
#ifdef DEBUG
  if ((tick_time.hour >= 0) && (tick_time.hour < 6))   // DEBUG 6-00
  {
    return(false);
  }
#else
  
if ((tick_time.hour >= 0) && (tick_time.hour < 10))
  {
    return(false);
  }
#endif
// 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30
// 14 * 3600                = 50400 - 14:00:00
// 14 * 3600 + 30           = 50430 - 14:00:30
// 14 * 3600 + 60           = 50460 - 14:01:00

// 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30
// 18 * 3600 + 45 * 60      = 67500 - 18:45:00
// 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30
// 18 * 3600 + 46 * 60      = 67560 - 18:46:00

// 19 * 3600                = 68400 - 19:00:00
// 19 * 3600 + 60           = 68460 - 19:01:00  

// 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30
// 23 * 3600 + 50 * 60      = 85800 - 23:50:00
// 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30
// 23 * 3600 + 51 * 60      = 85860 - 23:51:00
//---
  ulong trade_time = tick_time.hour * 3600 + tick_time.min * 60 + tick_time.sec;  
//---                    //10:00:02                      
  if(((trade_time >= time_st_mon) && (trade_time < 50370)) ||
      ((trade_time >= time_st_day) && (trade_time < 67470)) ||
      ((trade_time >= time_st_evn) && (trade_time < 85770)))
  {
    return(true);
  }

return(false); 


}
input string          TimeStMon    = "10:00:02";         //Время начала утренней сессии

ulong time_st_mon = GetStringTime(TimeStMon);
ulong GetStringTime(const string a_string)
{
  int k = 0;
  string s_sec, s_min, s_hour;
  int str_size = StringLen(a_string);
//---
  if(str_size != 8) return(0);  
//---  
  for(int i = str_size - 1; i >= 0; i--)
  {
    ushort let_symbol = StringGetCharacter(a_string, i);
    
    if(let_symbol == ':')
    {
      k++;
      switch(k)
      {
        case 1:
          s_sec = StringSubstr(a_string, i + 1, str_size - i - 1);
        break;
        case 2:
          s_min = StringSubstr(a_string, i + 1, str_size - i - 4);
          s_hour = StringSubstr(a_string, 0, i);
        break;
      }
//---
    }
  }
  if(k != 2) return(0);
  ulong t_sec = ulong(StringToInteger(s_sec));
  ulong t_min = ulong(StringToInteger(s_min)) * 60;
  ulong t_hour = ulong(StringToInteger(s_hour)) * 3600;
//---    
  return(t_hour + t_min + t_sec);
}
 
prostotrader:

¡Ustedes son los desarrolladores!

¿Cuándo vas a sincronizar la hora del terminal con la de la Bolsa?

2017.01.13 10:00:03.969 Trades  'xxxxx': buy limit 2.00 ED-6.17 at 1.0642
2017.01.13 10:00:03.969 Trades  'xxxxx': sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.975 Trades  'xxxxx': accepted buy limit 2.00 ED-6.17 at 1.0642
2017.01.13 10:00:03.975 Trades  'xxxxx': accepted sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.978 Trades  'xxxxx': failed buy limit 2.00 ED-6.17 at 1.0642 [Market closed]
2017.01.13 10:00:03.979 Trades  'xxxxx': failed sell limit 1.00 ED-6.17 at 1.0813 [Market closed]

Hay que entender quién escupe la hora mundial y pone la suya propia, la bolsa o el broker. Con intereses creados o simplemente por estupidez.

¿Quién tiene la misma hora que el mundo?

 
Sergey Chalyshev:

Hay que averiguar quién escupe sobre el tiempo del mundo y establece el suyo propio, la bolsa o el corredor de bolsa. Ya sea por interés propio o simplemente por estupidez.

¿Quién tiene la misma hora que el mundo?

Sí, que sea, la hora mundial, estamos negociando en la Bolsa de Moscú, al mismo tiempo,

y no es culpa del corredor, sino de los promotores, porque cualquier cotización que venga de la Bolsa

tiene tiempo, por lo que la hora de la última cita conocida debe ser

tiempo conocido del intercambio (NO el SERVIDOR) y el TERMINAL

TiempoCorriente

Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.


TimeCurrent, devuelve la hora del SERVIDOR, ¡no la del TERMINAL!

Probablemente, de aquí es de donde "crecen las piernas".

 
prostotrader:

Sí, que sea, el mundo, estamos negociando en la Bolsa de Moscú, de acuerdo con el tiempo de la Bolsa,

y no es culpa del corredor, sino de los promotores, porque cualquier cotización que venga de la Bolsa

tiene tiempo, y por lo tanto la hora de la última cita conocida debe ser

hora conocida del intercambio (NO DEL SERVIDOR) y el TERMINAL

TiempoCorriente

Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.


TimeCurrent, devuelve la hora del SERVIDOR, ¡no la del intercambio!

De ahí que probablemente "las piernas crezcan".

Y si el servidor está en Moscú, y el intercambio está en Brasil, ¿puede ser?

 
Sergey Chalyshev:

Y si el servidor está en Moscú y la central está en Brasil, ¿puede ser?

¡No me importa dónde esté el servidor!

La cita (o más bien la HORA de la cita) es la HORA actual.

Añadido

Ahora mismo, ¿qué está pasando?

El servidor de MT5 sólo envía una cotización al terminal, independientemente de la hora de la cotización,

La hora del servidor y la hora de la cotización no están sincronizadas porque hay un premercado.

El EA envía la orden, el terminal la confirma y el servidor comprueba la hora con

El servidor comprueba la hora a menos que yo sepa cuál es y el pedido se redirige con un error de unos 3 segundos (mi tiempo) !!!!.

 
prostotrader:

¡No me importa dónde esté el servidor!

La cotización (o más bien la HORA de la cotización) es la hora actual de la negociación.

Añadido por

Ahora mismo, lo que está pasando es

El servidor de MT5 simplemente envía una cotización al terminal, independientemente de la hora de la cotización,

La hora del servidor y la hora de la cotización no están sincronizadas porque hay un premercado.

El EA envía la orden, el terminal la confirma y el servidor comprueba la hora con

¡¡¡¡el servidor comprueba la hora en todas partes y reajusta el orden con un error de unos 3 segundos!!!!

La cita (o más bien la hora de la cita) es la hora actual.

es la hora de las acciones.

La hora del servidor no se transfiere al terminal en absoluto: TimeLocal == TimeTradeServer.

 

Yo también estoy harto de este problema. Es un tema que ha surgido en el foro varias veces. Cada uno resuelve este problema a su manera, pero no he visto la solución adecuada. Es necesario determinar cómo corregirlo e instar a los desarrolladores a que lo arreglen.

Ahora hay tres funciones para obtener el tiempo (si la memoria no me falla) es:

TimeLocal==TimeTradeServer, hora del ordenador,

TimeTradeServer == función inútil,

TimeCurrent == hora de la última cita.

Tenemos que añadir la hora de cambio, tirarTimeTradeServero pasar la hora de cambio actual en su lugar, o añadir un tipoTimeExchange.




 

Y lo mejor sería introducir datos concretos en el terminal sin que el tiempo nos atasque:

- Puedes poner nuevas solicitudes,

- Puede eliminar los pedidos,

- El comercio está permitido.

Por alguna razón no existe esta funcionalidad en el terminal ahora mismo.

 

Нужно добавить время биржы, выкинуть TimeTradeServer или вместо него передавать текущее время биржи, или добавить типа TimeExchange.

Todavía no es una opción para nuestro intercambio, no sé para otros.

Empiezan a operar cuando quieren, a veces a las 10:00, a veces a las 10:03 o a las 10:05.

Al parecer, cuando se despiertan y toman café, lo encienden)).


 

¡Sergei!

Lea la ayuda de TimeCurrent - dice que esta es la hora del SERVIDOR

Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.
Razón de la queja: