Erreurs, bugs, questions - page 2572

 

J'ai constaté que dans mon mode de test visuel, SymbolInfoTick() renvoie une valeur mais la série chronologique Close[0] a une valeur différente.

Est-ce une erreur de ma part ? Est-ce que je fais quelque chose de mal ?

Il semble que les valeurs devraient être les mêmes :

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   MqlTick mtLastTick;
   SymbolInfoTick(Symbol(),mtLastTick);
   
   ArraySetAsSeries(close,true);


   Comment("Close[0] = " + DoubleToString(close[0],5) + "\nLastBid = " + DoubleToString(mtLastTick.bid,5));
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Habituellement, la différence est de 1 à 2 points, mais sur les mouvements brusques, elle peut être plus importante.

Est-ce que c'est seulement moi ?

S'il s'avère que SymbolInfoTick() donne une valeur différente de Close[0], je suppose que la valeur correcte est Close[0] et je laisse le spread tel qu'il a été renvoyé par SymbolInfoTick().

Cependant, je veux savoir quel est le prix correct et si c'est Close[0] ou SymbolInfoTick().

Dossiers :
TestTick.mq5  2 kb
 
Georgiy Merts:

J'ai constaté que dans mon mode de test visuel, SymbolInfoTick() renvoie une valeur mais la série chronologique Close[0] a une valeur différente.

Est-ce une erreur de ma part ? Est-ce que je fais quelque chose de mal ?

Il semble que les valeurs devraient être les mêmes :

Habituellement, la différence est de 1 à 2 points, mais sur les mouvements brusques, elle peut être plus importante.

Est-ce que c'est seulement moi ?

S'il s'avère que SymbolInfoTick() donne une valeur différente de Close[0], alors je pense que la valeur correcte est Close[0] et je laisse le spread tel qu'il a été retourné par SymbolInfoTick().

Mais je veux savoir quel est le prix correct - que ce soit SymbolInfoTick() ou Close[0].

Il existe également SymbolInfoDouble(_Symbol,SYMBOL_BID).

 
Andrey Barinov:

Il y a aussi SymbolInfoDouble(_Symbol,SYMBOL_BID)

Oui, il renvoie la même chose que SymbolInfoTick().

 

Quelques conseils sur les variables globales. Résolution du problème de la sauvegarde des ticks de Market Watch.

Chaque nouveau tic augmente d'une unité la variable globale correspondante. À l'œil, Market Watch reçoit environ 100 ticks par seconde.

Au total, les variables globales sont mises à jour à une fréquence de 100 Hz. Je me demande si cela affecte négativement le SSD ?

J'écris les ticks eux-mêmes tous les 1000 (~1 Gb pour une semaine). Donc, je suis d'accord avec ça. Mais avec global - n'ont pas pensé avant, qu'ils sont écrits à SSD avec chaque mise à jour.

C'est pourquoi j'avais une telle question.

 
fxsaber:

Quelques conseils sur les variables globales. Résolution du problème de la sauvegarde des ticks de Market Watch.

Chaque nouveau tic augmente d'une unité la variable globale correspondante. À l'œil, Market Watch reçoit environ 100 ticks par seconde.

Au total, les variables globales sont mises à jour à un rythme de 100 Hz. Je me demande si cela affecte négativement le SSD ?

J'écris les ticks eux-mêmes tous les 1000 (~1 Gb pour une semaine). Donc, je suis d'accord avec ça. Mais avec global - n'ont pas pensé avant, qu'ils sont écrits à SSD avec chaque mise à jour.

C'est pourquoi j'avais une telle question.

Ils ne sont pas écrits sur le disque à chaque mise à jour

 
fxsaber:

Quelques conseils sur les variables globales. Résolution du problème de la sauvegarde des ticks de Market Watch.

Chaque nouveau tic augmente d'une unité la variable globale correspondante. À l'œil, Market Watch reçoit environ 100 ticks par seconde.

Au total, les variables globales sont mises à jour à un rythme de 100 Hz. Je me demande si cela affecte négativement le SSD ?

J'écris les ticks eux-mêmes tous les 1000 (~1 Gb pour une semaine). Donc, je suis d'accord avec ça. Mais avec global - n'ont pas pensé avant, qu'ils sont écrits à SSD avec chaque mise à jour.

C'est pourquoi une telle question s'est posée.

Je pense que les variables globales du terminal sont implémentées via des ressources avec une sauvegarde automatique périodique sur le disque. Je ne pense pas que l'autosave se produise plus souvent qu'une fois toutes les 3 secondes, très probablement beaucoup moins souvent, et il est même possible qu'il ne se produise que lorsqu'un événement de désinit se produit.

 

Je n'ai pas envie de rechercher ce que j'ai lu dans l'aide à propos des variables globales du terminal, mais il semble qu'elles soient sauvegardées lorsque le terminal est fermé - bien que je puisse oublier, cela fait longtemps que je ne l'ai pas lu

c'est plus facile à vérifier, dans le gestionnaire de tâches de Windows il y a un diagramme de l'utilisation du disque dur


 
Igor Makanu:

Je n'ai pas envie de rechercher ce que j'ai lu dans l'aide à propos des variables globales du terminal, mais il semble qu'elles soient sauvegardées lorsque le terminal est fermé - bien que je puisse oublier, cela fait longtemps que je ne l'ai pas lu

c'est facile à vérifier, dans le gestionnaire de tâches de Windows, il y a un tableau d'utilisation du disque dur.


Probablement dans la note de bas de page ici.

 
Merci à tous ceux qui ont répondu. La fonction de rinçage a immédiatement écarté toute interprétation ambivalente.
 

Oh, oui, alors vous n'avez pas à vous soucier de la surcharge du disque.
Ce qui me surprend, c'est l'utilisation des variables globales du terminal (si c'est bien de cela qu'il s'agit) pour sauvegarder de grands ensembles de données.
C'est une béquille effrayante, n'est-ce pas ?

Bon, les variables elles-mêmes, mais il y a leurs noms de chaîne, qui doivent aussi être stockés et le font encore chaque fois qu'une recherche de chaîne pour accéder à cette variable, sans parler du seul type double, qui peut être stocké. Bien sûr, vous pouvez utiliser le syndicat, mais son utilisation n'est pas gratuite.

Il est beaucoup plus correct d'implémenter la sauvegarde indépendamment des ressources de n'importe quel tableau de données avec une sauvegarde automatique sur le disque ou lorsque l'événement de désinit se produit.

Raison: