FORTI. Problemi di applicazione - pagina 107

 
Aleksey Vyazmikin:

Il problema è che tutte le prove possono venire solo dal broker o dalla borsa, il che significa che non sarò in grado di ottenerle. Continuerò quindi a trattare la situazione per ora.

Ho ricevuto una risposta dal broker

"

Buon giorno Alexey Vyacheslavovich! La risposta degli sviluppatori -

Sembrano ritardi di rete sul lato client, ecco come è andata l'esecuzione sul lato server di trading:

"

Come ho capito dal registro:

1. Il tempo di esecuzione è approssimativamente lo stesso

2. le informazioni di esecuzione provengono dal server e sono state elaborate dal programma con un ritardo di 3 secondi

Il riferimento a un ritardo di 3 secondi da parte mia suona abbastanza strano, poiché il mio internet è abbastanza buono fino al router sul filo, il canale non era sovraccarico. I core del computer non erano caricati al 100%, ma forse alcuni core erano caricati al 100%.

Poi si scopre:

1. Gli sviluppatori non hanno fornito una corretta gestione delle priorità dei compiti (threads) che dovrebbero essere processati prima dalla CPU e il core di MT5 potrebbe essere stato forzato ad occupare sempre il core della CPU meno carico. E al 100% di carico, ridurre la priorità di esecuzione del calcolo per gli indicatori e altro codice utente.

2) I log di MT5 non sono affidabili.

Sì, ora non ci si può più fidare di nessuno.

La punizione per ciò che è stato fatto, in Russia, non è mai stata commisurata.

Puoi rubare una scatola di fiammiferi e andare in prigione per 3 anni, ma se rubi fiammiferi a tonnellate,

non si ottiene nulla!

Secondo i tuoi log di MT5:

2018.04.25 16:49:28.972 Trades  '***': exchange buy 10.00 Si-6.18 at market                                       - терминал отдал приказ серверу МТ5 на покупку
2018.04.25 16:49:29.186 Trades  '***': accepted exchange buy 10.00 Si-6.18 at market                              - сервер МТ5 проверил ордер и утвердил его правильность 
2018.04.25 16:49:29.387 Trades  '***': exchange buy 10.00 Si-6.18 at market placed for execution                  - сервер МТ5 отправмл ордер на Биржу
2018.04.25 16:49:30.002 Trades  '***': order #87849076 buy 10.00 / 10.00 Si-6.18 at market done in 1030.179 ms    - сервер МТ5 рапортовал, что ордер исполнился

e questi sono

2018.04.25 16:49:30.405 Trades  '***': deal #48508923 buy 1.00 Si-6.18 at 62788 done (based on order #87849076)
2018.04.25 16:49:30.819 Trades  '***': deal #48508924 buy 1.00 Si-6.18 at 62788 done (based on order #87849076)
2018.04.25 16:49:31.032 Trades  '***': deal #48508925 buy 5.00 Si-6.18 at 62788 done (based on order #87849076)
2018.04.25 16:49:31.635 Trades  '***': deal #48508926 buy 1.00 Si-6.18 at 62789 done (based on order #87849076)
2018.04.25 16:49:32.058 Trades  '***': deal #48508927 buy 1.00 Si-6.18 at 62789 done (based on order #87849076)
2018.04.25 16:49:32.264 Trades  '***': deal #48508928 buy 1.00 Si-6.18 at 62789 done (based on order #87849076)

è solo una trascrizione degli scambi.

Aggiunto da

Dai registri del SERVER mostra che il nucleo dello scambio, tutti eseguiti istantaneamente, ritardi di 3-4 ms, questo ritardo dal broker al nucleo dello scambio, perché le offerte in Plaza 2 sono un flusso separato,

che viene ottenuto dal server non è in tempo reale, ma "a fette".

In breve, devi scuotere il broker e gli sviluppatori.

I "ritardi della rete" non sono su di voi o su di me, lo sono!

Aggiunto

Ogni mattina (e a volte nel pomeriggio) per alcuni secondi il comando non viene eseguito

2018.04.26 10:02:35.202 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:36.208 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:37.222 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:38.236 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:39.250 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:40.263 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:41.277 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:42.291 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:43.305 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:44.319 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:45.333 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:46.348 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:47.362 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:48.376 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
2018.04.26 10:02:49.390 trader (Eu-6.19,M1)     ProcessOrders: Buy ордер в процессе удаления. Билет = 87870981
 
Aleksey Vyazmikin:

Ho ricevuto una risposta dal broker

Sì, ho pensato meglio alla borsa) 10ms per eseguire un ordine. ma non sono comunque 2 secondi.
 
prostotrader:

I "ritardi della rete" non sono con voi e con me, lo sono!

Aggiunto

Ogni mattina (e a volte nel pomeriggio) per alcuni secondi il comando non viene eseguito

Quello che voglio sapere è dove è impostata l'ora, nel mio log del terminale è l'ora del mio computer e hanno l'ora del server MT5?

Ho la sincronizzazione del tempo - ogni 10 minuti dal server appropriato (ntp2.stratum2.ru), ho cambiato la batteria sulla mia scheda madre, significa che l'ora dovrebbe essere esatta. Ma sullo schermo vedo spesso che il tempo sul mio orologio è già passato, ma la barra continua ad agitarsi - è questo? L'ora dello scambio è una specie di sinistra?

 
Aleksey Vyazmikin:

Sono anche interessato a quale ora è specificata - nel mio terminale nel log è l'ora del mio computer, e hanno l'ora del server MT5?

Sto solo sincronizzando il mio tempo ogni 10 minuti con il server appropriato (ntp2.stratum2.ru), ho cambiato la batteria nella mia scheda madre, cioè il tempo dovrebbe essere esatto. Ma sullo schermo vedo spesso che il tempo sul mio orologio è già passato, ma la barra continua ad agitarsi - è questo? Lo scambio ha una specie di tempo residuo?

Non so come MQ abbia implementato la sincronizzazione dell'orario del server MT5 con l'orario di Exchange.

Ma dal momento che facciamo trading sul bmrz, quindi non importa a che ora il tuo computer o il server MT5, ciò che è importante che è il tempo di Exchange!

La sincronizzazione deve essere eseguita utilizzando l'ora di Exchange.

//+------------------------------------------------------------------+
//| Expert Check Market Time function                                |
//+------------------------------------------------------------------+
bool CheckMarketTime()
{
  sv_time.year = 0;
  TimeCurrent(sv_time); //Возвращает последнее известное время сервера
  if(sv_time.year > 0)
  {
    MqlDateTime cur_time;
    cur_time.year = 0;
    TimeTradeServer(cur_time); //Возвращает расчетное текущее время торгового сервера.
    if(cur_time.year > 0)
    {
      if((cur_time.day_of_week == int(FirstDay)) ||
         (cur_time.day_of_week == int(SecondDay))) return(false); //Проверка на выходные
      if(cur_time.day_of_week == sv_time.day_of_week)
      {
        ulong tr_time = sv_time.hour * 3600 + sv_time.min * 60 + sv_time.sec;
        if(((tr_time >= time_st_mon) && (tr_time < 50370)) ||  //10:00:01 - 13:59:30
           ((tr_time >= time_st_day) && (tr_time < 67470)) ||  //14:05:01 - 19:44:30 
           ((tr_time >= time_st_evn) && (tr_time < 85770)))    //19:05:01 - 23:49:30
        {
          return(true);
        }  
      }   
    }   
  }
  return(false);
} 
TimeCurrent(sv_time); //Возвращает последнее известное время сервера

CioèTimeCurrent() NON è l'ora esatta

TimeTradeServer(cur_time); //restituisce l'ora corrente stimata del server commerciale.

TimeTradeServer non è l'ora esatta

Il punto è che dall'anno scorso Exchange trasmette TUTTE le informazioni necessarie per il commercio di scambio,

fino ad alcuni calcoli.

Nella specifica del protocollo Plaza 2, si dice

orologio del server tavolo di servizio

Ed ecco a cosa serve questa tabella



Originariamente mt5 "sedeva" su plaza 2 p2gate, che è "morto" e MQ aveva bisogno di

per riscrivere rapidamente il server in CGate, ma finché è già scritto e funziona, perché preoccuparsi?

Aggiungere-correggere qualcosa.

Aggiunto

Il problema della latenza è il risultato di un grave bug.

Il terminale non può inviare più di 60 transazioni in 1 secondo (cioè 2 plaza 2 login)

Con semplici calcoli, si può determinare quale "velocità" dovrebbe essere il broker che

che collega il server МТ5 e il gateway.

 
prostotrader:

Non so come MQ abbia implementato la sincronizzazione dell'ora del server MT5 con l'ora di Exchange.

Ma dato che facciamo trading su bmrz, quindi non importa che ora abbia il tuo computer o il tuo server MT5, ciò che è importante è l'ora di scambio!

La sincronizzazione deve essere eseguita al momento di Exchange.

E cosa succede in realtà? Forse lo scambio ha un server per sincronizzare l'ora degli utenti del PC?

 
Aleksey Vyazmikin:

Cosa succede realmente? Forse l'exchange ha un server per sincronizzare l'ora del PC degli utenti?

Ho aggiunto le informazioni al mio post precedente.

 
Aleksey Vyazmikin:

Sono anche interessato a sapere che ora è - nel mio log del terminale è l'ora del mio computer, e loro hanno l'ora del server MT5?

Cosa produce questo script?

#define  PRINT(A) Print(#A + " = " + (string)(A))

string TimeMscToString( const ulong time )
{
  return(TimeToString(time / 1000, TIME_DATE | TIME_SECONDS) + "." + IntegerToString(time % 1000, 3, '0'));
}

void OnStart()
{
  if (HistorySelect(0, LONG_MAX))
  {
    PRINT(TimeMscToString(HistoryDealGetInteger(48508923, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508924, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508925, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508926, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508927, DEAL_TIME_MSC)));
    PRINT(TimeMscToString(HistoryDealGetInteger(48508928, DEAL_TIME_MSC)));
    
    PRINT(TimeMscToString(HistoryOrderGetInteger(87849076, ORDER_TIME_DONE_MSC)));
    PRINT(TimeMscToString(HistoryOrderGetInteger(87849076, ORDER_TIME_SETUP_MSC)));
  }
}
 
fxsaber:

Che cosa dà questo script?

2018.04.26 16:59:58.686 Test_sr (Si Splice,M15) arrK=0.2021591274299704

Che cos'è questo?
 

 
Aleksey Vyazmikin:

2018.04.26 16:59:58.686 Test_sr (Si Splice,M15) arrK=0.2021591274299704

Che cos'è?

Non so, non ha niente a che fare con lo script di cui sopra. Mostratemi cosa emette sul conto di trading dove si è verificato il problema.