Questions sur MQL4. - page 8

 
Figure 6
Dossiers :
zigtester.jpg  16 kb
 
ANK:
Qui sait si c'est correct ?
un fichier ne peut être inclus plus d'une fois dans le code.
donc ça doit l'être :
- ou faire plusieurs fichiers avec des noms différents pour les variables globales et les fonctions (c'est une version plus lente =)
- ou concevoir la logique de sorte qu'il n'y ait pas de chevauchement lors de l'appel de différentes fonctions (cela peut nécessiter un certain travail, mais c'est une bonne solution ;)

Et vous ne pouvez pas dire quelque chose de plus exact sans exemples, descriptions d'erreurs ou code complet (le meilleur de tous) =)
 
Le conseiller expert et le script en boucle sont exécutés dans la fenêtre en même temps.
Est-il correct de supposer que pendant que le conseiller expert attend que le serveur réponde à une opération de transaction
le script continue à fonctionner comme d'habitude, sans arrêts ni délais, effectue ses calculs (pas les opérations de trading) ?
 
SKif:
Le conseiller expert et le script en boucle sont exécutés dans la fenêtre en même temps.
Est-il correct de supposer que pendant que le conseiller expert attend que le serveur réponde à une opération de transaction
le script continue à suivre son cours sans arrêts et retards, effectue ses calculs (pas les opérations de trading) ?
Oui.
le conseiller expert et le script fonctionnent tous deux dans leurs propres fils.
 
OK, merci.
Devons-nous considérer comme normal que l'heure de démarrage de l'indicateur et de l'EA ne corresponde pas lorsque le bouton EA est activé ?
Peut-être que je comprends mal quelque chose ou que je fais quelque chose de mal, mais je comprends que la différence de temps peut être supérieure à 250 ms.

Aussi. L'état du bouton EA a-t-il un effet sur le fonctionnement de l'indicateur ?
Est-il possible de suivre l'état de ce bouton à partir de l'indicateur ?
 
J'ai fait une petite recherche...

Placez un indicateur dans la fenêtre :
int start() { GlobalVariableSet(GV_Tick, 1); return; }

Mettez un EA dans la fenêtre :
int start() { GlobalVariableSet(GV_Knopka, 1); return; }

Et un script avec un extrait comme celui-ci :
... T_Tick=0; T_Knopka=0; while (Tick==0 || Knopka==0 ) // Ждём тика и разреш. кнопки советн. { Tick = 0; Knopka = 0; Tick = GlobalVariableGet(GV_Tick ); Knopka = GlobalVariableGet(GV_Knopka ); if (Tick>0 && T_Tick==0)T_Tick=GetTickCount(); if (Knopka>0) { T_Knopka=GetTickCount(); Alert("T_Tick=",T_Tick, " T_Knopka=",T_Knopka, " Запазд= ",T_Knopka-T_Tick); } } ... GlobalVariableSet(GV_Knopka, 0 ); // Обнуляем прошлые события GlobalVariableSet(GV_Tick, 0 ); // Обнуляем прошлые события


Et voici les résultats :
Pendant la période surlignée en rouge, la souris s'est simplement déplacée dans un cercle de 50 mm de diamètre à raison de 3 tours par seconde.
Il n'y a pas eu d'impact sur le terminal.

Il s'avère qu'au cours d'une période de calme "normale", le décalage est d'environ 2,5 %. 20-60 ms, et encore plus pendant la période où l'utilisateur est en contact avec le terminal.
De plus, j'ai découvert que le start() de l'indicateur est lancé pendant la période de redimensionnement de la fenêtre et lors du changement de fenêtre.
---------------
Je suis principalement intéressé par la légalité de ce délai, "normal" et "inhabituel".
Et j'aimerais avoir des commentaires de la part des développeurs - à quel point cela correspond à l'intention.
Dossiers :
1.png  21 kb
 
Je vais effectuer les tests moi-même et vous faire part des résultats.
 
OK.
En l'absence d'autre option, je me suis laissé guider par la possibilité de mesurer le temps de latence des signaux de l'EA et des indicateurs, afin de juger si le bouton EA était désactivé. Cette période était censée être très courte. Mais cela varie trop.

C'est très intéressant, ce que vous allez découvrir.
(En général, j'ai besoin de toute cette cuisine pour répondre à une question simple : le statut du bouton EA)
 
Les experts travaillent dans leur propre fil de discussion, indépendamment des autres tâches.
Il s'avère que la charge du processeur est causée par les mouvements de la souris, lorsque des centaines de commandes de déplacement de la souris sont envoyées en masse. Parmi ces commandes "souris" se trouvent également des commandes de rafraîchissement des EA, ce qui entraîne des retards.
 
Nous devons donc supposer que le fonctionnement non simultané du script, de l'indicateur et du conseiller expert est un phénomène courant ?
Alors... comment vit-on dans le monde ?
Raison: