Discussion de l'article "Échange de Données entre les Indicateurs : C'est facile" - page 2

 
<br/ translate="no">

...Une seule question se pose : comment convertir un pointeur en un entier ? C'est là que la Dynamic Link Library va nous aider, à savoir les capacités de conversion de type de données du C++. Comme les pointeurs en C++ sont un type de données de quatre octets, il est pratique d'utiliser le type int de quatre octets pour nos besoins...

Si je ne me trompe pas, l'auteur parle de conversion de type implicite. Article très instructif - merci beaucoup à l'auteur.

Je voulais aussi ajouter que si vous avez besoin de faire une méthode SetPtr, vous ne pouvez pas vous passer de la conversion de type explicite.

Elle ressemblera à ceci

double* SetPtr(int a)
{
  double* a1 = reinterpret_cast <double* > (a);
  return(a1);
}

En général, MQL5 gagnerait beaucoup à ce que les pointeurs soient largement reconnus et utilisés.

 

En général, MQL5 gagnerait beaucoup à ce que les pointeurs soient largement reconnus et utilisés.

J'ajouterais à cette liste la gestion des exceptions, les constructeurs avec paramètres et l'héritage multiple.

Mais pour une raison quelconque, les développeurs pensent que nous ne sommes pas assez intelligents pour tirer parti de toutes ces fonctionnalités et que nous ne ferons que nous nuire à nous-mêmes.

Pourtant, tous ces éléments sont des outils standards de la POO et n'ont jamais fait de mal à personne.

J'ai l'impression (en ce qui me concerne) qu'ils sont tout simplement incapables de mettre en œuvre ces mécanismes de manière fiable.

Il est triste que quelqu'un ait décidé que nous ne l'aurions pas ici

 

J'ai remarqué qu'avec les nouvelles versions de MT4, la fonction SetIndicatorValue() ne fonctionne pas, mais que GetIndicatorValue() fonctionne. Est-ce que c'est juste moi, ou est-ce qu'il y a quelque chose dans les nouvelles versions (je pense que le changement s'est produit quelque part après la version 225) qui a cassé cette fonction ? Si c'est le cas, avez-vous des suggestions sur la façon de faire fonctionner les méthodologies de cet article sur les nouvelles versions de MT4 ? Le fait que les anciennes versions ne soient plus supportées me pose un problème à cet égard, car j'aimerais vraiment que les calculs des indicateurs ne se produisent qu'une seule fois, dans un EA, mais qu'ils soient toujours affichés sur les graphiques en poussant les valeurs calculées vers les pointeurs des tampons de l'indicateur. (BTW, j'ai été très reconnaissant de trouver cet article et de pouvoir appliquer ses techniques - merci de l'avoir écrit).

J'ai remarqué que dans les notes de mise à jour de la version 392 de MT4 du 17 mars 2011, il est indiqué : "3. suppression des recalculs inutiles des indicateurs lorsqu'ils sont affichés sur un graphique". Cette amélioration rend-elle inutile les techniques présentées dans cet article, dans la mesure où l'utilisation d'indicateurs personnalisés de la manière dont ils ont été conçus ne sera plus aussi lente que l'utilisation des techniques basées sur les pointeurs enseignées dans cet article ? Je vous remercie de votre attention.

 
brisully:

J'ai remarqué qu'avec les nouvelles versions de MT4, la fonction SetIndicatorValue() ne fonctionne pas, mais que GetIndicatorValue() fonctionne. Est-ce que c'est juste moi, ou est-ce qu'il y a quelque chose dans les nouvelles versions (je pense que le changement s'est produit quelque part après la version 225) qui a cassé cette fonction ? Si c'est le cas, avez-vous des suggestions sur la façon de faire fonctionner les méthodologies de cet article sur les nouvelles versions de MT4 ? Le fait que les anciennes versions ne soient plus supportées me pose un problème à cet égard, car j'aimerais vraiment que les calculs des indicateurs ne se produisent qu'une seule fois, dans un EA, mais qu'ils soient toujours affichés sur les graphiques en poussant les valeurs calculées vers les pointeurs des tampons de l'indicateur. (BTW, j'ai été très reconnaissant de trouver cet article et de pouvoir appliquer ses techniques - merci de l'avoir écrit).

J'ai remarqué que dans les notes de mise à jour de la version 392 de MT4 du 17 mars 2011, il est indiqué : "3. suppression des recalculs inutiles des indicateurs lorsqu'ils sont affichés sur un graphique". Est-ce que cette amélioration annule effectivement le besoin des techniques de cet article en ce sens que l'utilisation d'indicateurs personnalisés de la manière dont ils ont été conçus ne sera plus plus lente que l'utilisation des techniques basées sur le pointeur enseignées dans cet article ? Je vous remercie.

Il semble que je me sois trompé et que les fichiers d'indicateurs joints à l'article fonctionnent dans les nouvelles versions de MT4. Désolé pour cette fausse alerte, et merci encore pour ce travail.
 
Zhunko:

Comme c'est compliqué !...

Avec l'aide d'Ilnur, il y a un an, j'ai écrit une bibliothèque en MQL4 pour travailler avec la mémoire. Vous pouvez allouer de la mémoire, déplacer des pointeurs, écrire et lire, transférer le nom d'une zone de mémoire à un autre programme.

Tout est basé sur le mapping. Elle est beaucoup plus simple que celle proposée.

Comment puis-je obtenir cette bibliothèque ? Je vous en serais reconnaissant. J'ai besoin de transférer des données entre deux MT.
 
merci
 

Est-il possible d'ajouter des fonctions à la DLL non seulement pour travailler avec double, mais aussi pour datetime, pour long et pour int ?

Il s'avère que les données des tableaux de prix peuvent maintenant être facilement transférées entre les structures imbriquées sans copie, mais les données sur le temps, l'étendue et les volumes doivent toujours être copiées.

J'ai essayé d'adapter GetPtr pour qu'il fonctionne avec datetime et long (et par des perversions avec des bits int mobiles) - cela ne fonctionne pas, la fonction accepte une référence à un tableau, et elle ne peut pas être convertie.

Quelqu'un a-t-il résolu ce problème ?

 

Le silence.

Eh... Je vais devoir me souvenir de C++ et installer MSVC moi-même...

 
Laryx:

Le silence.

Eh... Je vais devoir me souvenir de C++ et installer MSVC moi-même...

Et maintenant, personne ne vous répondra, tout le monde est parti au front.

Avez-vous entendu parler de la mise à jour de MT4 ?

 

Au bord de l'oreille, au bord de l'oreille... :)

La mise à jour de MT4 est très bien pour moi - j'ai de grandes bibliothèques, mais toutes sont sur MT5 (je ne peux pas imaginer ma vie sans OOP). Et les DCs, mauvaises personnes, n'ont pas tous MT5 dans la vraie vie.... Cette nouvelle est donc très bonne pour moi.

Mais - tant qu'il n'y aura pas de MT4++ normal, je ne vois pas l'intérêt d'adapter le code pour la plateforme mise à jour. Lorsque quelque chose comme une bêta officielle sortira (oui, avec la bibliothèque standard, je ne veux pas écrire d'Expert Advisors sans elle non plus) - alors nous commencerons à convertir le code....

Et maintenant, j'ai terriblement envie d'obtenir les adresses non seulement des tableaux doubles, mais aussi d'autres tableaux... Ah - beurk... Je voulais contourner le problème par une conversion de type (les time et les long sont également à huit octets), mais cela ne fonctionne pas encore....