[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 656
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
Qu'est-ce qui peut provoquer un débordement de pile ? Lorsque vous ouvrez une position avec une prise importante (la prise est calculée à partir de la volatilité et multipliée par 100, la taille est 41*100), alors un dépassement de pile est écrit dans le journal et... ... juste le prendre. Aucune autre position n'est ouverte tant que celle-ci n'est pas fermée, et celle-ci, bien sûr, ne sera pas fermée à cause de l'énorme TP... Et l'EA ne fonctionne pas du tout correctement, car il devrait fermer toutes les positions lorsque le profit total prédéfini des positions ouvertes est atteint.... Mais cela ne se produit pas, même si cette position a enregistré d'énormes bénéfices pendant longtemps, environ deux mille points... Comment puis-je le combattre ? On ne peut pas se prémunir contre la situation où toutes les positions ouvertes déborderont de la pile, et tout sera sens dessus dessous...
.
la pile ne peut pas déborder juste avec un nombre qui est en dehors de la gamme de type - il y aura une autre erreur
Les données passées dans une fonction ou un appel récursif à une fonction sans quitter celle-ci peuvent faire déborder la pile.
start() est aussi une fonction - peut-être avez-vous beaucoup de variables ici.
la pile est une région de la mémoire où sont stockées les valeurs intermédiaires (variables locales) d'une fonction ; vous pouvez casser la pile vous-même si vous utilisez des tableaux dynamiques et que vous n'avez pas correctement vérifié la portée du tableau, c'est-à-dire que vous écrivez des données non pas dans un tableau, mais dans une région de la mémoire qui se trouve juste après le tableau.
essayez de déplacer certains des tableaux vers des variables globales - mettez-les en haut du tableau.
ZS : au moins c'est le même dans tous les langages de programmation - je pense que c'est le même dans mql
la pile ne peut pas déborder juste avec un nombre qui est en dehors de la gamme de type - il y aura une autre erreur
Les données passées dans une fonction ou un appel récursif à une fonction sans quitter celle-ci peuvent faire déborder la pile.
start() est aussi une fonction - peut-être avez-vous beaucoup de variables ici.
la pile est une région de la mémoire où sont stockées les valeurs intermédiaires (variables locales) d'une fonction ; vous pouvez casser la pile vous-même si vous utilisez des tableaux dynamiques et que vous n'avez pas correctement vérifié la portée du tableau, c'est-à-dire que vous écrivez des données non pas dans un tableau, mais dans une région de la mémoire qui se trouve juste après le tableau.
essayez de déplacer certains des tableaux vers des variables globales - mettez-les en haut du tableau.
ZS : au moins c'est le même dans tous les langages de programmation - je pense que c'est le même dans mql
Igor, tu sais que j'ai évité d'utiliser des tableaux jusqu'à présent... Je n'ai que deux tableaux dans mon code - un tableau des ordres avant le tick et un tableau des ordres après le tick. Je les ai définis dans la zone des variables globales. Ce qui est amusant, c'est que j'ai déplacé le code pour ouvrir ces positions ailleurs dans l'EA et l'erreur a disparu. Il semble qu'il y ait eu un appel récursif pour ouvrir des ordres, bien que je ne m'en sois pas vraiment occupé. J'ai simplement décidé qu'il ne serait pas approprié de placer l'ouverture immédiatement après la fermeture de toutes les positions dans le code pour vérifier si le profit total a été atteint et si toutes les positions ont été fermées... J'ai fait un gâchis... :)
J'ai créé un modèle pour la création d'un EA - lorsqu'un ordre est placé, le drapeau de cet ordre est immédiatement activé et ensuite, avant d'ouvrir un nouvel ordre de ce type, je vérifie toujours le drapeau - si l'ordre existe, mais j'écris des EA avec un seul ordre.
J'ai depuis longtemps créé un modèle pour la création d'un EA - lorsque je place un ordre, je mets immédiatement un signe (drapeau) qu'un tel ordre existe, et ensuite avant d'ouvrir un nouvel ordre de ce type je vérifie toujours le drapeau - si un tel ordre existe, mais j'écris des EAs avec un seul ordre
Oui, j'ai obtenu "0", mais que dois-je faire ? Je ne peux pas le faire des deux façons (j'ai même essayé des périodes égales), j'ai essayé les deux Print("NormalizeDouble(c1b_1..."), mais j'ai obtenu des zéros (seul c1b[i] montre la valeur, tous les autres y compris c1s[i] sont des zéros), pouvez-vous m'aider à mettre l'un d'entre eux en état de fonctionnement ou partager une astuce, si vous remarquez des défauts ?
Nouveau :
Vieux :
Entier :
Yuri, à l'avenir, si le code est répété au moins deux fois, il devrait être alloué à une méthode, et vous n'aurez pas besoin de tas de tableaux qui encombrent le code.
Voici une méthode pour vous :
Je pense que tout est clair avec les paramètres, entrez les données et en faisant varier le paramètre ma_shift obtenez le décalage dont vous avez besoin. Notez que cette méthode peut être utilisée comme modèle, il suffit de changer les méthodes d'accès pour les indicateurs i...(...) ou iCustom(...). Maintenant, votre bloc de décisions commerciales est comme il se doit :
Par conséquent, il n'y a plus besoin de variantes "anciennes" et "nouvelles", les transactions sont ouvertes en fonction de critères donnés (si j'ai bien compris, vous avez un modèle à trois barres de sommets et de creux lissés iCC). Il y a une variante corrigée dans le dossier.
Bonjour.
Pouvez-vous me donner le code pour écrire les prix depuis l'ouverture de l'ordre dans le tableau.
Comment faire pour que chaque nouveau prix soit ajouté au tableau.
Bonjour.
Pouvez-vous me donner le code pour écrire les prix depuis l'ouverture de l'ordre dans le tableau.
Comment faire pour que chaque nouveau prix soit ajouté au tableau.
Veuillez être plus précis dans votre question
Si vous êtes intéressé par le prix actuel au moment où vous passez la commande, vous pouvez ajouter un appel au code qui se chargera de stocker le prix actuel dans le tableau global en modifiant le compteur d'index du tableau, que vous pourrez consulter ultérieurement à partir de n'importe quel point du code.
comment vérifier les performances d'un EA - je voudrais juste afficher le temps d'exécution du code en millisecondes
Quelles sont les performances de MT5 par rapport à MT4 ?
comment vérifier les performances d'un EA - je voudrais juste afficher le temps d'exécution du code en millisecondes
Quelles sont les performances de MT5 par rapport à MT4 ?
GetTickCount serait utile https://docs.mql4.com/ru/common/GetTickCount
GetTickCount vous aidera https://docs.mql4.com/ru/common/GetTickCount
merci oui c'est ce que je cherchais, quelqu'un a-t-il mesuré la vitesse du même type de code pour mt4 et mt5 ?