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);
}
ulong time_st_mon = GetStringTime(TimeStMon);
{
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);
}
¡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': 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?
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".
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?
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) !!!!.
¡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.
Нужно добавить время биржы, выкинуть 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
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
¡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': 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]