Errori, bug, domande - pagina 1808

 
fxsaber:
_TimeCurrent = MathMax(SymbolInfoInteger(Symbol1, SYMBOL_TIME), SymbolInfoInteger(Symbol2, SYMBOL_TIME), ...);
Non c'è davvero molto da fare finora. Selezionando il tempo più lungo. Ma questo è un costo aggiuntivo per ottenere due valori temporali ad ogni OnBookEvent()...
 
Alexey Kozitsyn:
Non c'è davvero molto da fare finora. Selezionando il tempo più lungo. Ma è una spesa aggiuntiva per ottenere due valori temporali ad ogni OnBookEvent()...
EmulareTimeTradeServer tramite GetMicrosecondCount. Oppure aggiungere la differenza tra TimeTradeServer e TimeCurrent al 99% di BookEvent.
 

Applicazione alla SR#1674783

Per favore, decidete il prima possibile!

 
fxsaber:
EmulareTimeTradeServer tramite GetMicrosecondCount. O aggiungere la differenza tra TimeTradeServer e TimeCurrent nel 99% del BookEvent.
Questo sta ancora ottenendo parametri multipli.
 
Alexey Kozitsyn:
Si tratta ancora di ottenere alcuni parametri.
Il problema non è il numero di parametri, ma la loro economicità totale.
 
fxsaber:
La questione non è il numero di parametri, ma la loro economicità totale.
Quindi pensi che TimeTradeServer() sarà più veloce di SymbolInfoInteger( _Symbol, SYMBOL_TIME )?
 
Alexey Kozitsyn:
Quindi, pensate che TimeTradeServer() funzionerà più velocemente di SymbolInfoInteger( _Symbol, SYMBOL_TIME )?

TimeTradeServer lavora attraverso GetMicrosecondCount aggiungendo la differenza corrispondente a TimeCurrent.

Non so cosa ti serva per ottenere. Ma risparmiare sui microsecondi non mi sembra ragionevole.

 
fxsaber:

TimeTradeServer lavora attraverso GetMicrosecondCount aggiungendo la differenza corrispondente a TimeCurrent.

Non so cosa ti serva per ottenere. Ma risparmiare su unità di microsecondi non mi sembra ragionevole.

Ho bisogno di ottenere il valore corretto dell'ora corrente. Sto richiedendo da OnBookEvent() del tempo corrente di scrivere il valore del parametro legato al tempo. E ho bisogno del tempo attuale, non del tempo trascorso, e preferibilmente senza stampelle sotto forma di ottenere diversi valori di tempo con la scelta del valore più grande. TimeCurrent() dovrebbe gestire questo compito (secondo la descrizione nella documentazione). Ma si è scoperto che ora non lo fa più!
 
Alexey Kozitsyn:
Ho bisogno di ottenere il valore corretto dell'ora corrente. Sto interrogando l'ora corrente da OnBookEvent() per scrivere il valore di un parametro legato all'ora. E ho bisogno del tempo attuale, non del tempo passato, e preferibilmente senza le stampelle di ottenere più valori di tempo e selezionare il valore più alto. TimeCurrent() dovrebbe gestire questo compito (secondo la descrizione nella documentazione). Ma si è scoperto che ora non lo fa più!
Non ho controllato.
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));
}
Potevi essere più preciso. Per esempio, si potrebbe passare attraverso tutti i caratteri interrogando SymbolInfoTick (+ CopyTicks). Da lì, gratta via il tempo in millisecondi. Solo che non capisco quale utilità pratica possa avere.
 
fxsaber:
Esegui tutti i simboli interrogando SymbolInfoTick (+ CopyTicks). Da lì, gratta via il tempo in millisecondi.
Un analogo in millisecondi di TimeCurrent è atteso da tempo, con il suo riflesso nella GUI.