J'ai donc trouvé la cause de la division par zéro - je n'avais jamais vu cela jusqu'à présent. Je pensais en avoir fini avec mon code jusqu'à ce que cela apparaisse ! J'ai 3 variantes de mon EA. L'une fonctionne parfaitement, les deux autres sont similaires dans ce département (code ci-dessous). Je n'arrive pas à comprendre pourquoi cela provoquerait une division par zéro ?
Cherchez les lignes avec les flèches indiquant les lignes qui posent problème... J'ai isolé ce problème ici ? Soit cela, soit j'obtiens une anomalie avec le backtest AUDUSD (je télécharge mes données historiques à partir de Forex Tester 2... cela semble bien fonctionner avec l'un de mes EA).
Je ne suis pas sûr que vous ayez trouvé le problème... comment savez-vous que vous l'avez trouvé ?
Je ne pense pas que le code que vous avez fléché provoquera une erreur de division par zéro, pour en être certain remplacez ceci....
if(ema21 - H1_low > Point / 2) // << These parts here?
par ceci...
double HalfAPoint = Point / 2.0; if(ema21 - H1_low > HalfAPoint)
et réessayez.
Je pense que votre erreur restera car elle est située ailleurs....
Je ne peux localiser qu'un seul problème de subdivision ci-dessus.
La division par zéro ne vient pas de la fonction ci-dessus.
Si vous ne voulez pas montrer tous les codes alors :
Retrouvez tous vos problèmes de division dans ea, custom_indicators et les fichiers inclus.
Assurez-vous que l'expression du côté droit de / ne peut pas être égale à 0.
Ajouté :
Sur une autre note, vous pourriez vraiment bénéficier de ArraySort().
Si vous voulez savoir si Daily_3 est le plus haut/le plus bas, faites un tableau et triez.
Je ne suis pas sûr que vous ayez trouvé le problème... Comment savez-vous que vous l'avez trouvé ?
Je ne pense pas que le code que vous avez indiqué causera une erreur de division par zéro, pour en être certain, remplacez ceci...
par ceci...
et réessayez.
Je pense que votre erreur restera car elle est située ailleurs...
J'ai les "V1-V2-V3" de mon EA.
J'ai essentiellement copié la V1 sur un nouveau modèle vierge et modifié la partie que j'ai illustrée ci-dessus en (code ci-dessous) et cela m'a donné une erreur de division par zéro pendant un back-test sur AUDUSD. Les données ont-elles quelque chose à voir avec la division par zéro ? Lorsque j'exécute un back-test de toutes les versions de mon EA sur EURUSD de 2001 à 2013 (Forex Tester a téléchargé les données et les a importées dans ST), je n'obtiens aucune erreur sur aucune de mes EA ?
PullBack_Bar = Time[1]; // << These parts here? } if(PullBack_Bar > triggerBarTime) // << These parts here? { H1_Buy_Touch = "H1 Buy Touch"; OrderEntry(0); // Pending order Buy Stop function is called. }
J'ai parcouru d'autres paires et ce problème de division par zéro ne semble pas apparaître, à moins que ce soit sur AUDUSD avec V2 et V3 ? Corrigez-moi si les données n'ont rien à voir avec cela ?
J'ai les "V1-V2-V3" de mon EA.
J'ai essentiellement copié la V1 sur un nouveau modèle vierge et modifié la partie que j'ai illustrée ci-dessus en (code ci-dessous) et cela m'a donné une erreur de division par zéro pendant un back-test sur AUDUSD. Les données ont-elles quelque chose à voir avec la division par zéro ? Lorsque j'exécute un back-test de toutes les versions de mon EA sur EURUSD de 2001 à 2013 (données téléchargées par Forex Tester et importées dans ST), je n'obtiens aucune erreur sur aucune de mes EA ?
Il n'y a pas de lecteurs de pensées ici. Vous ne nous avez pas montré le code avec la division, donc personne ici ne peut vous aider.
Je n'ai posé qu'une simple question, les données ont-elles quelque chose à voir avec ça ? Si ce n'est pas le cas, alors je comprends mieux la division par zéro grâce aux personnes qui en ont l'expérience... Je ne pensais pas qu'il y avait des lecteurs de pensées ici...
Il y a trop de code pour poster chaque petite division ici. En ce qui me concerne, je pensais avoir isolé le problème à ce que j'ai expliqué ci-dessus, mais apparemment non. C'est juste un peu bizarre de voir que je change une toute petite chose et qu'ensuite ça ne fonctionne pas parce que j'obtiens une division nulle (la petite chose que j'ai changée est ce que j'ai illustré dans le premier post).
@RaptorUK donc essentiellement cela pourrait être une anomalie dans le prix des données pendant mon back-test, dans ce cas, sur l'AUDUSD. C'est juste un peu bizarre que V2 et V3 fonctionnent à peu près 1/4 du chemin sans problème et que tout d'un coup il y ait une division par zéro et que l'EA ne fonctionne plus du tout.
@RaptorUK donc essentiellement cela pourrait être une anomalie dans le prix des données pendant mon back-test, dans ce cas, sur l'AUDUSD. C'est juste un peu bizarre que V2 et V3 fonctionnent à peu près 1/4 du chemin sans problème et que tout d'un coup il y ait une division par zéro et que l'EA ne fonctionne plus du tout.
Si vous voulez passer des jours à résoudre ce simple problème, alors n'hésitez pas.... Je ne le ferais pas.
Si vous savez quand cela se produit pendant votre back test, alors c'est facile à trouver... commencez le back test un jour avant la date à laquelle cela se produit... trouvez exactement, à la minute près, quand cela va se produire... pour toutes les divisions de votre code... oui, toutes... . oui, toutes, ajoutez un Print() avant la ligne contenant la division qui imprime le diviseur et une référence à la ligne de code en question ... .
Par exemple :
if(d == 0.0) Print("a = c / d - divisor d is " + d ); a = c / d;
Lorsque votre code se termine avec l'erreur de division par zéro, vérifiez le fichier journal et dans les dernières impressions se trouvera l'impression montrant la ligne de code qui a produit l'erreur et quelle variable a été mise à zéro...
... apprenez à travailler plus intelligemment et à traquer vos problèmes de manière logique et efficace.
Hey, tu as raison, désolé d'avoir été vague !
Et vous n'apprenez pas - On vous a demandé à plusieurs reprises TOUT le code (pertinent) et vos valeurs de variables. Pourquoi devons-nous encore demander 21 messages plus tard ? Mettez les instructions print dans votre code et obtenez des informations comme quoi et étaient.
Ensuite, si vous ne pouvez toujours pas résoudre votre problème, demandez.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
J'ai donc trouvé la cause de la division par zéro - je n'avais jamais vu cela jusqu'à maintenant. Je pensais en avoir fini avec mon code jusqu'à ce que cela apparaisse ! J'ai 3 variantes de mon EA. La première fonctionne parfaitement, les deux autres sont similaires dans ce domaine (code ci-dessous). Je n'arrive pas à comprendre pourquoi cela provoquerait une division par zéro ?
Cherchez les lignes avec les flèches indiquant les lignes qui posent problème... J'ai isolé ce problème ici ? Soit cela, soit j'obtiens une anomalie avec le backtest AUDUSD (je télécharge mes données historiques à partir de Forex Tester 2... cela semble bien fonctionner avec l'un de mes EA).