Questions des débutants MQL5 MT5 MetaTrader 5 - page 984
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Mais le fait est que. Le sommeil ne devrait pas affecter le recalcul des données dans l'indicateur. Il y a un problème avec le remplissage des tampons. Peut-être y a-t-il un morceau de code reproductible ?L'indicateur a été écrit sur commande - c'est un OOP sauvage, je ne le comprends pas :(
J'ai passé toute la nuit avec ce problème, alors que j'ai trouvé la raison de la divergence entre le testeur et le compte réel, peut-être qu'après avoir dormi je vais enlever une partie de la logique secrète et la poster pour révision.
J'ai été confronté à un problème, l'EA basé sur l'indicateur fonctionne correctement sur un compte réel, mais il ment dans le testeur, dans les modes de génération de tick à la fois par OHLC et par tous les ticks - le résultat est le même. Le résultat de cette erreur est le tampon vide de l'indicateur à la barre zéro (seulement quand il y a une nouvelle barre au TF supérieur, qui est utilisé pour le calcul de l'indicateur). Cependant, j'ai réussi à faire en sorte que l'indicateur soit calculé en ajoutant le Sleep à mon Expert Advisor. Mais j'ai découvert que selon le mode de génération des ticks, ce Sleep doit être différent - pour la génération à partir de tous les ticks, Sleep(15000) est suffisant, alors que pour OHLC Sleep(30000) est nécessaire.
La question se pose donc : la situation avec Sleep est-elle normale, car il s'avère logiquement que différents temps de retard y sont modélisés en fonction du mode de génération des ticks !
Chers développeurs, je vous demande d'expliquer la situation de l'indicateur, car je n'arrive pas à comprendre quelle en est la raison - un bug dans le code ou chez le testeur !
Je suis prêt à vous donner l'indicateur et le Conseiller Expert dans le PM, mais dites-moi à qui.
Si vous voulez copier le prix dans un tableau, vous devez vérifier si l'historique est disponible et vérifier si le prix n'a pas changé. Pour cela, nous devons vérifier si l'historique de TF est disponible, si non, nous devons essayer de le copier à nouveau et attendre qu'il soit chargé dans la boucle.
c'est une mauvaise main du programmeur s'il n'était pas au courant.
le glissement n'est pas normalVeuillez expliquer...
J'appuie sur la touche = j'obtiens l'événement id = 0. Cette opération peut être répétée plusieurs fois. Le résultat est le même tant que la barre d'espacement n'est pas enfoncée.
J'ai appuyé sur la barre d'espacement = j'obtiens l'événement id = 0. Après cela, toutes les manipulations sur le clavier ne donnent lieu à aucun événement.
Pour sortir de la stupeur, j'appuie sur le bouton de la souris = j'obtiens l'événement id = 4. Après cela, vous pouvez cliquer à nouveau sur le clavier = des événements se produisent pour chaque clic. Tant qu'on n'appuie pas sur la barre d'espacement = avec le même résultat.
Question : suis-je un idiot qui ne comprend pas quelque chose ou cela ne devrait pas être comme ça ? Veuillez fournir un lien.
Bonjour chers collègues.
Question : Dans mql4, afin de calculer le nombre de positions, vous pouvez écrire la fonction comme ceci
Comment est-elle mise en œuvre dans mql5 ? Comment puis-je calculer les positions par numéro magique ou par type ?
Ajoutez cette ligne avant la fonction MQL4
et il fonctionnera dans MT5.
Le problème avec les indicateurs est que les séries temporelles ne sont peut-être pas encore prêtes, c'est-à-dire qu'elles ne peuvent pas copier le prix dans un tableau en une seule fois. Pour cela, il faut vérifier si l'historique de TF est disponible, sinon il faut essayer de le recopier et attendre qu'il soit chargé dans la boucle.
C'est une mauvaise main du programmeur s'il ne le sait pas.
le glissement n'est pas acceptableComment cela est-il possible dans le testeur ? Je comprends que si le problème est sur le réel ou dans le testeur, il n'y a pas d'historique... Cependant, à quoi doit ressembler ce test ?
Les développeurs ignorent mon message, c'est regrettable.
Comment cela est-il possible dans le testeur ? Je comprends que si le problème est sur le réel ou dans le testeur, il n'y a pas d'historique... Cependant, à quoi doit ressembler ce test ?
Les développeurs ignorent mon message, c'est regrettable.
vérifie si les prix sont copiés, si Copyclose ou autre renvoie -1 alors ils ne sont pas copiés.
vérifie si les prix sont copiés, si Copyclose ou autre renvoie -1 alors ils ne sont pas copiés.
L'indicateur est calculé une fois à l'apparition d'une nouvelle barre, ce qui est implémenté, si je comprends bien, de cette façon :
elle est également confirmée par une simple empreinte.
C'est pourquoi la situation n'est pas claire, si nous supposons qu'il n'y a pas de prix à calculer, l'indicateur sera calculé 1 fois et le tampon restera non rempli, mais ce n'est pas le cas - il se remplira si nous ajoutons le sommeil à l'EA et attendons. Peut-être que l'indicateur est lent à calculer et que le testeur ne l'attend pas ? Mais comment le vérifier ?
L'indicateur est calculé 1 fois lorsqu'une nouvelle barre apparaît, ce qui est implémenté, si je comprends bien, de cette façon :
Ceci est également confirmé par une simple impression.
C'est pourquoi la situation n'est pas claire, si nous supposons qu'il n'y a pas de prix à calculer, l'indicateur sera calculé une fois et le tampon restera non rempli, mais ce n'est pas le cas - il se remplira si nous ajoutons le sommeil à l'EA et attendons. Peut-être que l'indicateur est lent à calculer et que le testeur ne l'attend pas ? Mais comment le vérifier ?
Peut-être que cela devrait être chronométré alors
On devrait peut-être utiliser un minuteur alors.
Oui, avec le timer dans l'EA, le test va un peu plus loin que sans le timer, mais moins bien qu'avec Sleep, et le timer est essentiellement le même que Sleep.
Je pense avoir compris le problème, l'indicateur est calculé en utilisant les données de deux autres indicateurs et le code demande le nombre de barres calculées des autres indicateurs.
et le nombre de barres calculé attendu
Si ces deux valeurs ne coïncident pas, le tampon n'est pas rempli.
Si je comprends bien, les indicateurs sont exécutés dans un thread et leur priorité est distribuée par le moment de leur création, c'est-à-dire qu'il s'avère que l'indicateur que j'adresse depuis l'EA a la priorité la plus élevée et effectue son calcul en premier et ensuite il passe le thread aux indicateurs qui devraient effectuer le calcul (sur la base des données des buffers).
Dans l'impression je vois que si je mets Sleep d'une taille suffisante, le recalcul est effectué dans l'indicateur (je ne comprends pas encore comment) et pourquoi seulement après 13 secondes ?
Il n'y a pas de minuterie dans l'indicateur.
Et que dois-je faire pour obtenir un calcul correct, en essayant d'utiliser while dans l'EA avant d'attendre la valeur dans la mémoire tampon, cela n'aide pas - il y a des blocages.