Mercato chiuso

 

Voi siete gli sviluppatori!

Quando sincronizzerete l'ora del terminale con l'ora di Exchange?

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]

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); 


}
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:

Voi siete gli sviluppatori!

Quando sincronizzerete l'ora del terminale con l'ora di Exchange?

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]

È 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?

 
Sergey Chalyshev:

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".

 
prostotrader:

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?

 
Sergey Chalyshev:

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) !!!!.

 
prostotrader:

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

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