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]
aggiunto
Il tempo di negoziazione è controllato prima dell'invio dell'ordine
//+------------------------------------------------------------------+
//| 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);
}
Voi siete gli sviluppatori!
Quando sincronizzerete l'ora del terminale con l'ora di Exchange?
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]
È necessario capire chi sputa sull'ora mondiale e imposta la propria, la borsa o il broker. Con un interesse personale o solo per stupidità.
Chi ha la stessa ora del mondo?
Bisogna capire chi sputa sul tempo del mondo e stabilisce il proprio, la borsa o il broker. Per interesse personale o solo per stupidità.
Chi ha la stessa ora del mondo?
Sì, dimentica l'ora mondiale, noi scambiamo sulla Borsa di Mosca alla stessa ora,
e non è colpa del broker, ma degli sviluppatori, perché qualsiasi quotazione che viene dalla Borsa
ha tempo, e quindi il tempo dell'ultima citazione conosciuta dovrebbe essere
tempo noto dello scambio (NON IL SERVER) e il TERMINALE
TimeCurrent
TimeCurrent, restituisce l'ora del SERVER, non del TERMINALE!
Questo è probabilmente il luogo in cui le "gambe crescono".
Sì, che sia, il mondo, stiamo scambiando sulla Borsa di Mosca, secondo il tempo della Borsa,
e non è colpa del broker, ma degli sviluppatori, perché qualsiasi quotazione che viene dalla Borsa
ha tempo, quindi il tempo dell'ultima citazione conosciuta dovrebbe essere
tempo noto dello scambio (NON il SERVER) e il TERMINALE
TimeCurrent
TimeCurrent, restituisce l'ora del SERVER, non dello scambio!
Da qui, probabilmente "le gambe crescono".
E se il server è a Mosca, e lo scambio è in Brasile, può essere?
E se il server è a Mosca e lo scambio è in Brasile, può essere?
Non mi interessa dove si trova il server!
La citazione (o meglio la citazione TIME) è l'ORA attuale.
Aggiunto
In questo momento, cosa sta succedendo?
Il server MT5 invia semplicemente una quotazione al terminale, indipendentemente dall'ora della quotazione,
L'ora del server e l'ora della quotazione non sono sincronizzate perché c'è un premarket.
L'EA invia l'ordine, il terminale lo conferma e il server controlla l'ora con
Il server controlla l'ora SENZA che io sappia quale sia e l'ordine viene reindirizzato con un errore di circa 3 secondi (il mio tempo) !!!!.
Non mi interessa dove si trova il server!
La quotazione (o meglio il TEMPO della quotazione) è il tempo di scambio attuale.
Aggiunto da
In questo momento, quello che sta succedendo è
Il server MT5 invia semplicemente una quotazione al terminale, indipendentemente dall'ora della quotazione,
L'ora del server e l'ora della quotazione non sono sincronizzate perché c'è un premarket.
L'EA invia l'ordine, il terminale lo conferma e il server controlla l'ora con
il server controlla l'ora OVUNQUE e riaggiusta l'ordine con un errore di circa 3 secondi!!!!
Quote (o piuttosto quote TIME) è il TEMPO attuale.
questo è il tempo delle azioni.
L'ora del server non viene affatto trasferita al terminale: TimeLocal == TimeTradeServer.
Anch'io sono stufo di questo problema. È un argomento che è venuto fuori nel forum un certo numero di volte. Ognuno risolve questo problema a modo suo, ma non ho visto la soluzione giusta. È necessario determinare come correggere e sollecitare gli sviluppatori a risolvere il problema.
Ora ci sono tre funzioni per ottenere il tempo (se la memoria non sbaglia) è:
TimeLocal==TimeTradeServer, ora del computer,
TimeTradeServer == funzione inutile,
TimeCurrent == ora dell'ultima citazione.
Dobbiamo aggiungere il tempo di scambio, buttare fuoriTimeTradeServero passare invece il tempo di scambio corrente, o aggiungere un tipoTimeExchange.
E la cosa migliore sarebbe inserire dati specifici nel terminale senza impantanarsi nel tempo:
- Potete mettere nuove applicazioni,
- Puoi cancellare gli ordini,
- Il trading è permesso.
Per qualche motivo non c'è questa funzionalità nel terminale in questo momento.
Нужно добавить время биржы, выкинуть TimeTradeServer или вместо него передавать текущее время биржи, или добавить типа TimeExchange.
Non è ancora un'opzione per il nostro scambio, non so gli altri.
Iniziano a commerciare quando vogliono, a volte alle 10:00, a volte alle 10:03 o alle 10:05.
A quanto pare, quando si svegliano e bevono il caffè, lo accendono)).
Sergei!
Leggi l'aiuto di TimeCurrent - dice che questo è il tempo del SERVER

- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Voi siete gli sviluppatori!
Quando sincronizzerete l'ora del terminale con l'ora di Exchange?
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]