Errores, fallos, preguntas - página 1808

 
fxsaber:
_TimeCurrent = MathMax(SymbolInfoInteger(Symbol1, SYMBOL_TIME), SymbolInfoInteger(Symbol2, SYMBOL_TIME), ...);
En realidad, sólo hay una cantidad de cosas para repartir hasta ahora. Seleccionando el tiempo más largo. Pero esto supone un coste adicional al obtener dos valores de tiempo en cada OnBookEvent()...
 
Alexey Kozitsyn:
En realidad, sólo hay una cantidad para repartir hasta ahora. Seleccionando el tiempo más largo. Pero es un gasto adicional de obtener dos valores de tiempo en cada OnBookEvent()...
EmularTimeTradeServer a través de GetMicrosecondCount. O añadir la diferencia entre TimeTradeServer y TimeCurrent al 99% de BookEvent.
 

Solicitud al SR#1674783

Por favor, decídase cuanto antes.

 
fxsaber:
EmularTimeTradeServer a través de GetMicrosecondCount. O bien añadir la diferencia entre TimeTradeServer y TimeCurrent en el 99% del BookEvent.
Esto sigue recibiendo múltiples parámetros.
 
Alexey Kozitsyn:
Todavía es cuestión de conseguir algunos parámetros.
La cuestión no es el número de parámetros, sino su baratura total.
 
fxsaber:
La cuestión no es el número de parámetros, sino su baratura total.
¿Crees que TimeTradeServer() será más rápido que SymbolInfoInteger( _Symbol, SYMBOL_TIME )?
 
Alexey Kozitsyn:
Entonces, ¿crees que TimeTradeServer() funcionará más rápido que SymbolInfoInteger( _Symbol, SYMBOL_TIME )?

TimeTradeServer funciona a través de GetMicrosecondCount añadiendo la diferencia correspondiente a TimeCurrent.

No sé qué necesitas conseguir. Pero ahorrar dinero en microsegundos no me parece razonable.

 
fxsaber:

TimeTradeServer funciona a través de GetMicrosecondCount añadiendo la diferencia correspondiente a TimeCurrent.

No sé qué necesitas conseguir. Pero ahorrar en unidades de microsegundos no me parece razonable.

Necesito obtener el valor correcto de la hora actual. Estoy solicitando a OnBookEvent() de la hora actual que escriba el valor del parámetro vinculado a la hora. Y necesito el tiempo actual, no el tiempo transcurrido, y preferiblemente sin muletas en forma de obtener varios valores de tiempo con la elección del valor más grande. Se supone que TimeCurrent() se encarga de esta tarea (según la descripción en la documentación). ¡Pero resultó que ahora no lo hace!
 
Alexey Kozitsyn:
Necesito obtener el valor correcto de la hora actual. Estoy consultando la hora actual desde OnBookEvent() para escribir el valor del parámetro vinculado a la hora. Y necesito la hora actual, no la pasada, y preferiblemente sin las muletas de obtener múltiples valores de tiempo y seleccionar el valor más alto. Se supone que TimeCurrent() se encarga de esta tarea (según la descripción en la documentación). Pero resulta que ahora no lo hace.
No lo he comprobado.
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));
}
Podrías haber sido más preciso. Por ejemplo, podría recorrer todos los símbolos, llamando a SymbolInfoTick (+ CopyTicks). A partir de ahí, tacha el tiempo en milisegundos. No entiendo qué utilidad práctica puede tener.
 
fxsaber:
Recorrer todos los símbolos consultando SymbolInfoTick (+ CopyTicks). A partir de ahí, tacha el tiempo en milisegundos.
Hace tiempo que se necesita un análogo en milisegundos de TimeCurrent, con su reflejo en la GUI.