Erreurs, bugs, questions - page 1808

 
Alexey Kozitsyn:
Il n'y a vraiment que peu de choses à distribuer jusqu'à présent. En sélectionnant le temps le plus long. Mais c'est une dépense supplémentaire pour obtenir deux valeurs temporelles à chaque OnBookEvent()...
EmulerTimeTradeServer via GetMicrosecondCount. Ou ajouter la différence entre TimeTradeServer et TimeCurrent à 99% de BookEvent.
 

Application au SR#1674783

Veuillez vous décider le plus tôt possible !

 
fxsaber:
EmulerTimeTradeServer via GetMicrosecondCount. Soit ajouter la différence entre TimeTradeServer et TimeCurrent dans 99% du BookEvent.
Il y a toujours plusieurs paramètres.
 
Alexey Kozitsyn:
Il s'agit encore d'obtenir quelques paramètres.
Le problème n'est pas le nombre de paramètres, mais leur faible coût total.
 
fxsaber:
La question n'est pas le nombre de paramètres, mais leur coût total.
Vous pensez donc que TimeTradeServer() sera plus rapide que SymbolInfoInteger( _Symbol, SYMBOL_TIME ) ?
 
Alexey Kozitsyn:
Alors, pensez-vous que TimeTradeServer() fonctionnera plus rapidement que SymbolInfoInteger( _Symbol, SYMBOL_TIME ) ?

TimeTradeServer fonctionne par le biais de GetMicrosecondCount en ajoutant la différence correspondante à TimeCurrent.

Je ne sais pas ce que tu dois obtenir. Mais économiser de l'argent sur des microsecondes ne me semble pas raisonnable.

 
fxsaber:

TimeTradeServer fonctionne par le biais de GetMicrosecondCount en ajoutant la différence correspondante à TimeCurrent.

Je ne sais pas ce que tu dois obtenir. Mais économiser sur des unités de microsecondes ne me semble pas raisonnable.

J'ai besoin d'obtenir la valeur correcte de l'heure actuelle. Je demande au OnBookEvent() de l'heure actuelle d'écrire la valeur du paramètre lié à l'heure. Et j'ai besoin de l'heure actuelle, pas du temps écoulé, et de préférence sans béquilles sous forme d'obtention de plusieurs valeurs de temps avec le choix de la plus grande valeur. TimeCurrent() est censé gérer cette tâche (selon la description dans la documentation). Mais il s'est avéré qu'il ne le fait plus maintenant !
 
Alexey Kozitsyn:
J'ai besoin d'obtenir la valeur correcte de l'heure actuelle. Je demande l'heure actuelle à partir de OnBookEvent() pour écrire la valeur d'un paramètre lié à l'heure. Et j'ai besoin de l'heure actuelle, pas de l'heure passée, et de préférence sans les béquilles consistant à obtenir plusieurs valeurs temporelles et à sélectionner la valeur la plus élevée. TimeCurrent() est censé gérer cette tâche (selon la description dans la documentation). Mais il s'est avéré qu'il ne le fait plus maintenant !
Je ne l'ai pas vérifié.
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));
}
Vous auriez pu être plus précis. Par exemple, vous pouvez parcourir tous les caractères en interrogeant SymbolInfoTick (+ CopyTicks). A partir de là, grattez le temps en millisecondes. Je ne comprends pas quelle utilité pratique cela pourrait avoir.
 
fxsaber:
Passez en revue tous les caractères en interrogeant SymbolInfoTick (+ CopyTicks). A partir de là, grattez le temps en millisecondes.
Un analogue en millisecondes de TimeCurrent est attendu depuis longtemps, avec son reflet dans l'interface graphique.
 
fxsaber:
Je n'ai pas vérifié.
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));
}
Merci, mais je ne pense pas qu'une telle précision soit utile, d'autant plus que l'heure ne sera de toute façon "pas réelle", mais approximative et dépendra de nombreux facteurs. Pour être plus précis, nous avons besoin de la possibilité d'obtenir l'heure du serveur, c'est-à-dire que si je mets SymbolInfoDouble( _Symbol, SYMBOL_SESSION_TIME_INTEREST ), alors je peux obtenir l'heure immédiatement, par exemple avec SymbolInfoInteger( _Symbol, SYMBOL_SESSION_TIME_INTEREST ) (avec une précision de quelques millisecondes). Vous serez bien alors !
Raison: