Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Favor enviar aqui as instruções sobre como abrir uma conta real na BCS.
Para evitar ter que cavar sempre, coloquei isso no meu perfil.
Alexey Kozitsyn:
Obrigado, eu mesmo já o fiz.Спасиб
Estou fazendo uma partida, há diferenças, mas não significativas.
Na minha opinião, a função de registrar os tiques de ordem na história não está funcionando corretamente (os negócios estão OK).
Vou fazer 300 linhas e postar o arquivo de comparação.
Adicionado
Verifique, eu poderia ter cometido um erro
Funcionou com precisão às 10:00 e 14:05
2017.01.26 14:05:00.005 Time_sync_forts (URKA-3.17,H1) Local time sync is done. Symbol = RTS-3.17 Sync hour = 14 Sync min = 5 Sync sec = 0 Sync ms = 5
Adicionado
Acho que vou remover o BR para que tudo aconteça automaticamente durante 3 meses :)
Então é isso.
E a sessão da manhã e depois de ambas as sessões são liberadas.
Muito trabalho cuidadoso tem sido feito. Uma vez que a sincronização de tempo utilizando o método sugerido se baseia em levar em conta o valor do ping, tenho uma pergunta a fazer.
Mediante solicitação com o identificador TERMINAL_PING_LAST, o terminal dá (de acordo com a documentação MQL) o"último valor conhecido do ping para o servidor comercial em microssegundos" .
O que é, seu valor é estável e qual é o seu tamanho? Durante muitos anos eu vi esta característica em arquivos de log, mas agora eu posso ver pings na lista de servidores diretamente no terminal. E eles são muito estáveis. O que é isso?
Apenas duas variantes que eu posso imaginar.
1) É uma característica da rede que os roteadores usam para analisar os caminhos de pacotes IP, que é obtida usando o protocolo de rede ICMP e na verdade só leva em conta a propagação do sinal de hardware. No caso particular das medidas de ping entre um computador cliente e um servidor, isso significa ir e vir entre seus DNIs. Os pacotes com este protocolo geralmente não chegam às aplicações, não é necessário https://ru.wikipedia.org/wiki/ICMP.
2. duplica o tempo de viagem do sinal do aplicativo no servidor para o aplicativo no cliente.
Alguém tem uma pista?
Muito trabalho cuidadoso tem sido feito. Uma vez que a sincronização de tempo usando o método sugerido se baseia em levar em conta o valor do ping, tenho uma pergunta.
Ao solicitar o identificador TERMINAL_PING_LAST, o terminal dá (de acordo com a documentação da MQL) o"último valor conhecido do ping para o servidor comercial em microssegundos" .
O que é, seu valor é estável e qual é o seu tamanho? Durante muitos anos eu vi esta característica em arquivos de log, mas agora eu posso ver pings na lista de servidores diretamente no terminal. E eles são muito estáveis. O que é isso?
Apenas duas variantes que eu posso imaginar.
1) É uma característica da rede que os roteadores usam para analisar os caminhos de pacotes IP, que é obtida usando o protocolo de rede ICMP e na verdade só leva em conta a propagação do sinal de hardware. No caso particular das medidas de ping entre um computador cliente e um servidor, isso significa ir e vir entre seus DNIs. Os pacotes com este protocolo geralmente não chegam às aplicações, não é necessário https://ru.wikipedia.org/wiki/ICMP.
2. duplica o tempo de viagem do sinal do aplicativo no servidor para o aplicativo no cliente.
Alguém tem uma pista?
Somente os desenvolvedores podem responder com certeza a esta pergunta.
Eu estava me baseando no segundo.
>Este é o dobro do tempo de viagem do sinal do aplicativo no servidor para o aplicativo no cliente.
Então é isso.
E a sessão da manhã e depois de ambas as sessões são liberadas.
Tudo funciona "como um relógio" :)
2017.01.30 14:05:00.002 Time_symc_forts (URKA-3.17,H1) Local time sync is done. Symbol = Si-3.17 Sync hour = 14 Sync min = 5 Sync sec = 0 Sync ms = 2
2017.01.30 19:00:00.003 Time_symc_forts (URKA-3.17,H1) Local time sync is done. Symbol = Si-3.17 Sync hour = 19 Sync min = 0 Sync sec = 0 Sync ms = 3
Adicionado
Apenas aguardando a licitação para começar em 19-05
Tudo funciona "como um relógio" :)
2017.01.30 14:05:00.002 Time_symc_forts (URKA-3.17,H1) Local time sync is done. Symbol = Si-3.17 Sync hour = 14 Sync min = 5 Sync sec = 0 Sync ms = 2
2017.01.30 19:00:00.003 Time_symc_forts (URKA-3.17,H1) Local time sync is done. Symbol = Si-3.17 Sync hour = 19 Sync min = 0 Sync sec = 0 Sync ms = 3
Adicionado
Apenas aguardando a licitação para começar em 19-05
Adicionado
Para Sergey
https://www.mql5.com/ru/forum/166646
Só por diversão, ligue-o se não se importar, vamos ver se o tempo está sincronizado com precisão:
//| Delta Time Server.mq5 |
//+------------------------------------------------------------------+
struct _SYSTEMTIME
{
short year;
short mon;
short day_of_week;
short day;
short hour;
short min;
short sec;
short msc;
};
_SYSTEMTIME loc_time;
#import "kernel32.dll"
void GetLocalTime(_SYSTEMTIME &sys_time);
bool SetLocalTime(_SYSTEMTIME &sys_time);
#import
//---
MqlTick tick;
MqlDateTime sv_time;
int tick_msc,ping,time_server,time_local,delta=0,mdelta[10],n=0;
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
loc_time.year=0;
GetLocalTime(loc_time);
if(loc_time.year>0)
{
if(!SymbolInfoTick(_Symbol,tick)) { Print("error SymbolInfoTick: ",GetLastError()); return; }
ping=TerminalInfoInteger(TERMINAL_PING_LAST)/1000;
tick_msc=int(tick.time_msc%1000);
TimeToStruct(tick.time,sv_time);
time_server=(sv_time.sec+sv_time.min*60)*1000+tick_msc;
time_local=(loc_time.sec+loc_time.min*60)*1000+loc_time.msc;
delta=AvgDelta(time_server-time_local);
Print(
"ping : ",ping,
" | time server: ",sv_time.hour,":",sv_time.min,":",sv_time.sec,",",tick_msc,
" | time local: ",loc_time.hour,":",loc_time.min,":",loc_time.sec,",",loc_time.msc,
" | delta ms: ",delta,
" | min max delta: ",mdelta[ArrayMaximum(mdelta)]," : ",mdelta[ArrayMinimum(mdelta)],
"");
}
}
//+------------------------------------------------------------------+
int AvgDelta(int d)
{
int avgd=0;
mdelta[n]=d;
n++; if(n>=10) n=0;
for(int i=0;i<10;i++) avgd+=mdelta[i];
return(avgd/10);
}
//+------------------------------------------------------------------+