CopyTicksRange () ne fonctionne pas correctement dans MQL5. a - page 2

 
Alexey Viktorov #:

J'ai souligné les mots clés.

Ne demandez PAS de tiques qui n'existent pas déjà par définition. Si vous demandez des ticks ne serait-ce qu'une milliseconde au-delà du temps actuel en millisecondes, vous obtiendrez le très g.........y sous la forme des problèmes que vous avez énumérés.


Donc, d'après vous, je dois d'abord vérifier si ces ticks sont disponibles ? par exemple comment ? puis-je aussi vérifier si la plage demandée est en vacances ? cela doit être fait par la fonction CopyTicksRange() . Mon travail consiste à lui donner les paramètres d'entrée conformément à la documentation. Il peut les vérifier et, le cas échéant, renvoyer une erreur, mais pas des déchets dans la réponse.

Pouvez-vous penser à un moyen de vérifier si une barre existante contient des ticks de la deuxième à la troisième seconde, afin d'empêcher cette fonction de se planter ?


Plus haut, j'ai écrit un exemple de code où tout est là, mais la réponse est toujours fausse.

 
RusPro #:


Donc, selon votre compréhension, je devrais d'abord vérifier si ces ticks sont disponibles ? Comment, par exemple ? Devrais-je également vérifier si la plage demandée est sur le jour de repos ? Cela devrait être fait par la fonction CopyTicksRange(). Mon travail consiste à lui donner les paramètres d'entrée conformément à la documentation. Et il peut les vérifier, et si quelque chose se produit, il renverra une erreur, mais pas un déchet en réponse.


Ci-dessus, j'ai écrit un exemple de code où tout est présent, mais la réponse est toujours fausse.

SymbolInfoTick

Renvoie les prix actuels pour un symbole spécifié dans une variable de type MqlTick.

bool  SymbolInfoTick(
   string    symbol,     // символ
   MqlTick&  tick        // ссылка на структуру
   );
struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен
   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   long         time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags;         // Флаги тиков
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью
  };

Vous n'avez pas besoin d'interroger les ticks plus loin que time_msc.

 

1) Dans mon exemple ci-dessus, la plage demandée existe.

2) mais qu'est-ce qui empêche de faire cette vérification dansCopyTicksRange lui-même et de la refléter dans la documentation également ? pourquoi les développeurs me demandent-ils de faire des béquilles au lieu de corriger simplement leurs erreurs ?


En parlant deSymbolInfoTick - il fonctionne mal aussi, au moins pour les caractèressynthétiques:)

Si je me souviens bien, il renvoie toujours l'heure du tout premier tick au lieu du dernier.

 
RusPro SymbolInfoTick - il fonctionne mal aussi, au moins pour les caractèressynthétiques:)

Autant que je m'en souvienne, il renvoie toujours l'heure du tout premier tick au lieu du dernier.

Je ne participe plus à ce dialogue.

 
Alexey Viktorov #:

Je ne participe plus à ce dialogue.

Vous n'êtes pas non plus un développeur Metatrader, pourquoi avez-vous pris le rôle de leur défenseur ?

En substance, les points soulevés sont corrects, la fonction devrait fonctionner correctement.
 
Sergey Gridnev #:
Vous n'êtes pas non plus un développeur Metatrader, pourquoi avez-vous pris le rôle de leur défenseur ?

Pour l'essentiel, les points soulevés sont corrects, la fonction devrait fonctionner correctement.

Une ligne de retour au dialogue :

La fonction doit fonctionner comme les développeurs l'ont prévu, et non comme les utilisateurs le souhaitent. On veut une chose, on veut une autre, et on veut des bêtises.

C'est la raison pour laquelle les développeurs ne vous répondent pas. Et je ne suis pas un avocat, j'essaie de vous apporter une vérité simple, ne chargez pas les autres si vous ne pouvez pas le faire vous-même. Vous, par contre, vous avez allumé le "ne pas......... céder..." et vous inventez des mythes sur les béquilles.

C'est vraiment tout...¤¤¤ Les développeurs ne vous répondront pas... ne vous faites pas d'illusions.

 
RusPro #:

Et voici l'insecte :

c'est-à-dire la fonction utilisée par des milliers de programmeurs, m'a personnellement retourné tous les ticks depuis le début de la barre courante, mais non inclus dans la plage demandée

Il s'agit en effet d'un bug. Fournir les données complètes pour la lecture. Si cela est confirmé, les développeurs apporteront un correctif dans les prochaines versions.

Le problème se situe peut-être dans le tableau statique MqlTick.
 

Alexey Viktorov #:

Pas besoin de demander des ticks plus loin que time_msc

Le dernier tick historique peut être plus récent que le SymbolInfoTick (appelé après CopyTicks). Je rencontre ce problème tous les jours.

La situation inverse peut se produire. Les flux qui ne sont pas synchronisés.
 
fxsaber #:

Il s'agit en effet d'une erreur. Fournir des données complètes pour la relecture. Si cela est confirmé, les développeurs apporteront un correctif dans les prochaines versions.

Peut-être que le problème se trouve dans le tableau statique MqlTick.

Ok, je vais essayer de réduire le code au minimum et le poster. CopyTicks contient également de tels problèmes, mais ils sont survenus de manière moins prévisible, ce qui m'a conduit à utiliser des béquilles uniquement pour CopyTicksRange. Il s'agit probablement d'une erreur d'une fonction interne commune.

Je vais vous dessiner un exemple pour SymbolInfoTick aussi.

 
RusPro #:

fonction utilisée par des milliers de programmeurs

Unités.