Erros, bugs, perguntas - página 1808

 
fxsaber:
_TimeCurrent = MathMax(SymbolInfoInteger(Symbol1, SYMBOL_TIME), SymbolInfoInteger(Symbol2, SYMBOL_TIME), ...);
Há realmente muito para percorrer até agora. Seleccionando o tempo mais longo. Mas este é um custo adicional de obter dois valores de tempo em cada OnBookEvent()...
 
Alexey Kozitsyn:
Há realmente muito para percorrer até agora. Seleccionando o tempo mais longo. Mas é uma despesa adicional de obter dois valores de tempo em cada OnBookEvent()...
EmularTimeTradeServer via GetMicrosecondCount. Ou adicionar a diferença entre TimeTradeServer e TimeCurrent a 99% do BookEvent.
 

Aplicação para o SR#1674783

Por favor, decidam o mais depressa possível!

 
fxsaber:
EmularTimeTradeServer via GetMicrosecondCount. Ou em 99% do BookEvent adicionar a diferença entre TimeTradeServer e TimeCurrent.
Isto ainda está a receber múltiplos parâmetros.
 
Alexey Kozitsyn:
Continua a ser uma questão de obter alguns parâmetros.
A questão não é o número de parâmetros, mas a sua total barateza.
 
fxsaber:
A questão não é o número de parâmetros, mas a sua total barateza.
Então pensa que o TimeTradeServer() será mais rápido que o SymbolInfoInteger( _Symbol, SYMBOL_TIME )?
 
Alexey Kozitsyn:
Então, acha que o TimeTradeServer() irá funcionar mais rapidamente que o SymbolInfoInteger( _Symbol, SYMBOL_TIME )?

O TimeTradeServer funciona através da GetMicrosecondCount, acrescentando a diferença correspondente ao TimeCurrent.

Não sei o que precisa de obter. Mas poupar dinheiro em microssegundos não me parece razoável.

 
fxsaber:

O TimeTradeServer funciona através da GetMicrosecondCount, acrescentando a diferença correspondente ao TimeCurrent.

Não sei o que precisa de obter. Mas a poupança em unidades de microssegundos não me parece razoável.

Preciso de obter o valor correcto da hora actual. Estou a pedir ao OnBookEvent() da hora actual para escrever o valor do parâmetro vinculado ao tempo. E eu preciso do tempo actual, não do tempo decorrido, e de preferência sem muletas na forma de obter vários valores de tempo com a escolha do maior valor. TimeCurrent() é suposto tratar desta tarefa (de acordo com a descrição na documentação). Mas afinal não o faz agora!
 
Alexey Kozitsyn:
Preciso de obter o valor correcto da hora actual. Estou a consultar o tempo actual no OnBookEvent() para escrever o valor do parâmetro ligado ao tempo. E preciso do tempo actual, não do tempo passado, e de preferência sem as muletas de obter múltiplos valores de tempo e seleccionar o valor mais alto. TimeCurrent() é suposto tratar desta tarefa (de acordo com a descrição na documentação). Mas afinal não o faz agora!
Ainda não verifiquei.
datetime NewTimeCurrent( void )
{
  static ulong PrevStartTime = GetMicrosecondCount();
  static datetime PrevTimeCurrent = TimeCurrent(); // TimeTradeServer()
  
  const datetime NewTimeCurrent = TimeCurrent(); // TimeTradeServer()
  const ulong NowTime = GetMicrosecondCount();
  
  if (PrevTimeCurrent < NewTimeCurrent)  
  {
    PrevTimeCurrent = NewTimeCurrent;
    
    PrevStartTime = NowTime;
  }
  
  return(PrevTimeCurrent + (datetime)((NowTime - PrevStartTime) / 1000000));
}
Talvez tenha sido mais preciso. Por exemplo, poderia percorrer todos os caracteres consultando SymbolInfoTick (+ CopyTicks). A partir daí, riscar o tempo em milissegundos. Só não compreendo que utilidade prática poderia ter.
 
fxsaber:
Percorrer todos os caracteres consultando SymbolInfoTick (+ CopyTicks). A partir daí, riscar o tempo em milissegundos.
Um análogo de milissegundos de TimeCurrent há muito esperado, com o seu reflexo na GUI.