Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 337

 
tara:

Des béquilles, imho.
+
 

Bonjour !

Pouvez-vous nous dire comment fonctionne une bibliothèque en tant qu'ensemble de fonctions utilisées ?

C'est-à-dire qu'en appelant les fonctions d'une bibliothèque dans deux EA, accrochés à des paires différentes - chaque EA sera chargé et initialisé sa propre instance de bibliothèque ?

Ou s'attendre à ce que les mêmes variables (internes) de la bibliothèque soient utilisées par la concurrence ?

Simplement, j'ai intégré certaines fonctions dans la bibliothèque (*.mqh que je ne veux pas), et ces fonctions utilisent des variables/rays déclarés dans la bibliothèque pour stocker les données réelles . Ces données sont communes à tous les symboles, mais peuvent être modifiées à des moments aléatoires par l'un des EA actifs. Lorsqu'un seul EA fonctionne - tout va bien, mais lorsque deux EA fonctionnent - des fissures incompréhensibles (données désordonnées) apparaissent, et je soupçonne que l'accès concurrentiel aux variables est tordu.

 
Mr.Profit:

Bonjour !

Pouvez-vous nous dire comment fonctionne une bibliothèque en tant qu'ensemble de fonctions utilisées ?

C'est-à-dire qu'en appelant les fonctions d'une bibliothèque dans deux EA, accrochés à des paires différentes - chaque EA sera chargé et initialisé sa propre instance de bibliothèque ?

Ou s'attendre à ce que les mêmes variables (internes) de la bibliothèque soient utilisées par la concurrence ?

Simplement, j'ai intégré certaines fonctions dans la bibliothèque (*.mqh que je ne veux pas), et ces fonctions utilisent des variables/rays déclarés dans la bibliothèque pour stocker les données réelles . Ces données sont communes à tous les symboles, mais peuvent être modifiées à des moments aléatoires par l'un des EA actifs. Lorsqu'un seul EA fonctionne, tout va bien, mais lorsque deux EA fonctionnent, des données bizarres (désordonnées) sortent, et je soupçonne que l'accès concurrentiel aux variables est tordu.

Ici.
 

Comme vous le savez, la ligne inférieure du terminal contient les informations suivantes, par exemple

Solde : 211721.72 Fonds : 101193.75 Collatéral : 55595.98 Libre : 45481.77 Niveau : 181.81% -110643, 34 (environ)

Cependant, sur l'un de mes terminaux, sur un compte en cents réels, seules les informations suivantes sont affichées, bien qu'il y ait des positions ouvertes :

Solde : 211721,72 Fonds : 101193,75 -110643,34

Quelle peut en être la raison ? Merci de votre attention.

 
borilunad:

Dans le testeur, MarketInfo() ne fonctionne pas, et les Bid et Ask sont lents et déformés. Par conséquent, sur les conseils de Xrust'a, je les récupère à partir de iClose(NULL,0,0) :


J'ai déjà écrit tant de choses, je les ai passées au testeur pour m'assurer qu'il n'y avait pas d'erreurs de logique, et... Ce n'est que maintenant que je découvre que MarketInfp() ne fonctionne pas dans mon testeur.

Qu'est-ce que je vérifie si soigneusement alors ? Comment cela fonctionne-t-il pour moi ?

Shaitan ! !!

 
TarasBY:
Tut.


Merci.

Comment cela fonctionne-t-il dans le cas d'un EA qui plane sur deux paires ? C'est-à-dire que le module appelant est un (expert.ex4) ou deux (deux instances en cours d'exécution) ?

 
Mr.Profit:


Merci.

Comment cela fonctionne-t-il dans le cas d'un EA qui plane sur deux paires ? C'est-à-dire que le module appelant est un (expert.ex4) ou deux (deux instances en cours d'exécution) ?

Contrairement aux bibliothèques système, les bibliothèques personnalisées (MQL4) sont chargées séparément pour chaque module appelant, indépendamment du fait que la bibliothèque appelée ait été chargée par un autre module. Par exemple, le module caller.ex4 appelle des fonctions des bibliothèques lib1.ex4 et lib2.ex4. À son tour, la bibliothèque lib1.ex4 appelle des fonctions de la bibliothèque lib2.ex4. Dans ce cas, une copie de la bibliothèque lib1.ex4 et deux copies de la bibliothèque lib2.ex4 seront chargées, malgré le fait que tous les appels proviennent du module caller.ex4.
Pour chaque EA (quel que soit leur nombre sur les graphiques), il existe son propre module d'appel (fichier EA).
 
Pouvez-vous s'il vous plaît me dire si j'ai trouvé l'indicateur MACD_Histogram.mq4 par le lien https://www.mql5.com/ru/code où trouver le manuel de l'indicateur ? J'ai essentiellement compris que je peux trader par les flèches, mais je veux savoir ce que d'autres indicateurs montrent dans celui-ci. Si quelqu'un a un lien où vous pouvez lire ou regarder s'il vous plaît répondre ou envoyer un mail à Aleks-R-13@yandex.ru. Merci
 
TarasBY:
Chaque EA (quel que soit le nombre d'entre elles accrochées aux graphiques) possède son propre module d'appel (fichier EA).

Pour dissiper toute confusion, j'ai écrit un test EA et une bibliothèque.

Le Conseiller Expert sort simplement à Comment la valeur actuelle de la variable de la bibliothèque, plus pour EURUSD il incrémente la valeur de la variable. La réception de la variable et son incrémentation sont mises en œuvre par les fonctions de la bibliothèque.

Par conséquent, le commentaire sur l'EURUSD montre la valeur changeante, alors que sur l'autre symbole il ne le fait pas.

Il est donc correct de dire que pour chaque instance (et non un fichier) de l'EA, sa propre instance de EX4-library est chargée.

 
tara:

Des béquilles, imho.
Les mauvaises prothèses dentaires sont pires.