FORTES. Questões de aplicação da lei - página 107

 
Aleksey Vyazmikin:

O problema é que todas as provas só podem vir do corretor ou da bolsa de valores, o que significa que não conseguirei obtê-las. Continuarei, portanto, a lidar com a situação por enquanto.

Recebi uma resposta do corretor

"

Bom dia Alexey Vyacheslavovich! A resposta dos desenvolvedores -

Parece que os atrasos na rede do lado do cliente, aqui está como foi a execução no lado do servidor comercial:

"

Como eu entendo pelo diário de bordo:

1. O tempo de execução é aproximadamente o mesmo

2. As informações de execução vieram do servidor e foram processadas pelo programa com um atraso de 3 segundos.

A referência a um atraso de 3 segundos de minha parte parece bastante estranha, já que minha internet é suficientemente boa até o roteador no fio, o canal não estava sobrecarregado. Os núcleos de computador não estavam 100% carregados, mas talvez alguns dos núcleos estivessem 100% carregados.

Acontece então:

1. Os desenvolvedores não forneceram um gerenciamento adequado das prioridades das tarefas (threads) que deveriam ser processadas primeiro pela CPU e o núcleo MT5 poderia ter sido forçado a ocupar sempre o núcleo da CPU menos carregado. E com 100% de carga, reduzir a prioridade de execução para o cálculo de indicadores e outros códigos de usuário.

2) Não se pode confiar nos troncos MT5.

Sim, agora você não pode confiar em ninguém.

A punição pelo que tem sido feito, na Rússia, nunca foi proporcional.

Você pode roubar uma caixa de fósforos e ir para a cadeia por 3 anos, mas se você roubar fósforos junto com a carga do carro,

você não recebe nada!

De acordo com seus registros 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 estes são

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)

é apenas uma transcrição dos ofícios.

Adicionado por

Dos registros do SERVIDOR mostra que o núcleo da bolsa, tudo executado instantaneamente, atrasos de 3-4 ms, este atraso do corretor para o núcleo da bolsa, porque as negociações na Plaza 2 são um fluxo separado,

que é obtido pelo servidor não é em tempo real, mas "fatias".

Em resumo, você tem que abalar o corretor e os desenvolvedores.

Os "Atrasos na rede" não são para você ou para mim, são sim!

Adicionado

Todas as manhãs (e às vezes à tarde) por alguns segundos o comando não é executado

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:

Recebi uma resposta do corretor

Sim, eu pensei melhor da bolsa de valores ) 10ms para executar uma ordem. mas não são 2 segundos de qualquer forma.
 
prostotrader:

"Atrasos na rede" não estão comigo e com você, eles estão!

Adicionado

Todas as manhãs (e às vezes à tarde) por alguns segundos o comando não é executado

O que eu quero saber é onde a hora está definida, no meu registro de terminal é o tempo do meu computador e eles têm o tempo do servidor MT5?

Tenho a sincronização do tempo - a cada 10 minutos pelo servidor apropriado (ntp2.stratum2.ru), troquei a bateria em minha placa-mãe, isso significa que o tempo deve ser exato. Mas na tela vejo muitas vezes que o tempo no meu relógio já passou, mas a barra continua a se mexer - é o que é? O momento da troca é algum tipo de canhoto?

 
Aleksey Vyazmikin:

Também estou interessado em qual hora é especificada - no meu terminal no log é o tempo do meu computador, e eles têm o tempo do servidor MT5?

Estou apenas sincronizando meu tempo a cada 10 minutos com o servidor apropriado (ntp2.stratum2.ru), troquei a bateria da minha placa-mãe, portanto o tempo deve ser exato. Mas na tela vejo muitas vezes que o tempo no meu relógio já passou, mas a barra continua a se mexer - é o que é? A troca tem algum tipo de tempo restante?

Não sei como o MQ implementou a sincronização do tempo do servidor MT5 com o tempo de troca.

Mas como negociamos no bmrz, portanto não importa a que horas seu computador ou servidor MT5, o que é importante que é o tempo de troca!

A sincronização deve ser realizada utilizando o tempo de troca.

//+------------------------------------------------------------------+
//| 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); //Возвращает последнее известное время сервера

Isto é, oTimeCurrent() NÃO é o tempo exato

TimeTradeServer(cur_time); // devolve a hora atual estimada do servidor comercial.

OTimeTradeServer não é o momento exato

A questão é que desde o ano passado a Exchange vem transmitindo TODAS as informações necessárias para o comércio de câmbio,

até alguns cálculos.

Na especificação do protocolo Plaza 2, diz

mesa de serviço do relógio do servidor

E eis para que serve esta tabela



Originalmente mt5 "sentou" na praça 2 p2gate, que "morreu" e MQ precisava

para reescrever rapidamente o servidor para a CGate, mas desde que já esteja escrito e funcionando, por que se preocupar?

Adicionando-corrigindo algo.

Adicionado

O problema de latência é o resultado de um erro grave.

O terminal não pode enviar mais de 60 transações em 1 segundo (ou seja, 2 logins plaza 2)

Através de cálculos simples, você pode determinar qual "velocidade" deve ser o corretor que

que conecta o servidor МТ5 e o gateway.

 
prostotrader:

Eu não sei como o MQ implementou a sincronização do tempo do servidor MT5 com o tempo de troca.

Mas como negociamos em bmrz, portanto não importa o tempo que seu computador ou servidor MT5 tem, o que é importante é o tempo de troca!

A sincronização deve ser realizada em tempo de troca.

E o que realmente acontece? Talvez a troca tenha um servidor para sincronizar o tempo dos usuários de PC?

 
Aleksey Vyazmikin:

O que realmente acontece? Talvez a troca tenha um servidor para sincronizar o tempo do PC dos usuários?

Acrescentei as informações ao meu posto anterior.

 
Aleksey Vyazmikin:

Também estou interessado em saber que horas são - no meu log de terminal é o tempo do meu computador, e eles têm o tempo do servidor MT5?

O que este roteiro produz?

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

O que este roteiro dá?

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

O que é isto?
 

 
Aleksey Vyazmikin:

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

O que é isso?

Não sei, isso não tem nada a ver com o roteiro acima. Mostre-me o que ele produz na conta comercial onde o problema ocorreu.