Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 412
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
Bon sang... Je suis certainement heureux que vous avez commencé à résoudre le problème, mais mon message vous en quelque sorte n'ont pas remarqué, où j'ai dit la même chose, un peu de mots différents, et a immédiatement dit les lacunes, sauf pour la fermeture du fichier, pas immédiatement vu où vous avez il se passe :)
Vous avez écrit une réponse en trois points. Dans le premier cas, vous avez fait une erreur (mon entrée est tout à fait correcte), dans le deuxième cas, vous avez également fait une erreur (bien que ce message l'ait nivelée :) Le troisième point semblait indiquer que vous suggériez de déplacer le curseur à la fin après l'entrée, et non avant (ce qui a été pris comme une erreur à nouveau). Face à une telle image, j'ai préféré faire une mise au point auprès d'un modérateur beaucoup plus expérimenté qui a répondu.
Quoi qu'il en soit, je vous remercie pour vos commentaires. Et une bonne année ! :)
Bonjour. Face à une situation désagréable. Aidez-moi.
J'ai un conseiller expert. Il fonctionne bien dans le testeur de stratégie, je n'ai aucune réclamation. Lorsque je l'exécute sur une démo, le conseiller expert ne peut pas placer d'arrêts sur certains ordres. Il y a une erreur qui apparaît pas toujours, mais parfois. Je suis désespérée de le trouver par moi-même et j'espère obtenir votre aide. Il convient de noter que l'EA fonctionne parfaitement dans tous les autres aspects, tout comme dans le testeur, aucune plainte, sauf que le problème est que les arrêts ne sont pas toujours fixés. L'erreur apparaît chez différents courtiers sur différents comptes. Voici la partie du code responsable des opérations commerciales
Voici le code de la fonction Error(int er)
Ainsi, lorsque l'EA ne parvient pas à fixer des arrêts, un message s'affiche pour indiquer l'erreur et les paramètres de l'ordre qu'il a essayé de modifier. Ce qu'il écrit est le vrai mystère pour moi. Comme vous pouvez le voir sur les images ci-dessous, il écrit constamment que le volume est faux. C'est étrange. Je dois ajouter que tous les paramètres de l'ordre sont calculés correctement avant la modification, on peut le voir dans les messages. Sinon, l'erreur serait différente. Le programme a été testé avec un écart plus élevé que celui de la démo.
Bonjour. Face à une situation désagréable. Aidez-moi.
J'ai un conseiller expert. Il fonctionne bien dans le testeur de stratégie, je n'ai aucune réclamation. Cependant, lorsque je l'exécute sur une démo, je constate que l'EA ne peut pas placer de stops sur certains ordres. Il y a une erreur qui apparaît pas toujours, mais parfois. Je suis désespérée de le trouver par moi-même et j'espère obtenir votre aide. Il convient de noter que l'EA fonctionne parfaitement dans tous les autres aspects, tout comme dans le testeur, aucune plainte, sauf que le problème est que les arrêts ne sont pas toujours fixés. L'erreur apparaît chez différents courtiers sur différents comptes. Voici la partie du code responsable des opérations commerciales
Voici le code de la fonction Error(int er)
Ainsi, lorsque l'EA ne parvient pas à fixer des arrêts, un message s'affiche pour indiquer l'erreur et les paramètres de l'ordre qu'il a essayé de modifier. Ce qu'il écrit est le vrai mystère pour moi. Comme vous pouvez le voir sur les images ci-dessous, il écrit constamment que le volume est faux. C'est étrange. Je dois ajouter que tous les paramètres de l'ordre sont calculés correctement avant la modification, on peut le voir dans les messages. Sinon, l'erreur serait différente. Le programme a été testé avec un écart plus élevé que celui de la démo.
Vous devez être très prudent avec les valeurs de vos variables globales. Je peux suggérer que ord_ticket est une variable globale et qu'elle peut donc stocker la valeur précédente. Et avant d'appeler GetLastError() pour attraper l'erreur, vous devez réinitialiser la valeur précédente en l'appelant au début du code.
ord_ticket est déclaré au niveau local. Et puis, même si elle est déclarée globalement dans la première ligne
sa valeur va certainement changer. Ce sera soit le numéro de commande en cas de transaction réussie, soit -1 sinon. Ainsi, si l'ordre n'est pas ouvert, nous n'arrivons pas au blocage de la mise en place des stops.
Il convient également de noter que la fonction OrderSend() modifie toujours la valeur de la dernière erreur(selon la documentation et la logique), de sorte que la réinitialisation de la lecture précédente dans ce cas n'est pas nécessaire et entraînerait une simple perte de temps. C'est-à-dire que l'erreur 131 apparaît après l'entrée dans le bloc de réglage de l'arrêt et avant l'affichage du message d'erreur. Comme les arrêts ne sont pas réellement placés, la fonction OrderModify() doit être la dernière fonction à être appelée, qui, tout comme la précédente, modifie toujours la valeur de la dernière erreur. Mais je ne comprends pas pourquoi cela ne change pas la valeur de la dernière erreur. D'où vient-il ? Une fois encore, je dirai qu'il n'y a eu aucun problème dans le testeur.
J'avais l'idée que le courtier trichait parce que le serveur envoyait des numéros d'erreur au terminal et que ce dernier les envoyait à son tour au conseiller expert. J'ai abandonné cette idée car seuls les ordres d'un EA ont des erreurs, les autres EA travaillant en parallèle n'ont pas de telles erreurs.
ord_ticket est déclaré au niveau local. Et puis, même si elle est déclarée globalement dans la première ligne
sa valeur va certainement changer. Ce sera soit le numéro de commande en cas de transaction réussie, soit -1 sinon. Ainsi, si l'ordre n'est pas ouvert, nous n'arrivons pas au blocage de la mise en place des stops.
Il convient également de noter que la fonction OrderSend() modifie toujours la valeur de la dernière erreur (selon la documentation et la logique), de sorte que la réinitialisation de la lecture précédente dans ce cas n'est pas nécessaire et entraînerait une simple perte de temps. C'est-à-dire que l'erreur 131 apparaît après l'entrée dans le bloc de réglage de l'arrêt et avant l'affichage du message d'erreur. Comme les arrêts ne sont pas réellement placés, la fonction OrderModify() doit être la dernière fonction à être appelée, qui, tout comme la précédente, modifie toujours la valeur de la dernière erreur. Mais je ne comprends pas pourquoi il ne change pas la valeur de la dernière erreur. D'où vient-il ? Une fois encore, je dirai qu'il n'y a eu aucun problème dans le testeur.
J'avais l'idée que le courtier trichait parce que le serveur envoyait des numéros d'erreur au terminal et que ce dernier les envoyait à son tour au conseiller expert. J'ai rapidement abandonné cette idée car seuls les ordres d'un EA ont des erreurs, les autres EA travaillant en parallèle n'ont pas de telles erreurs.
Je vais ajouter. Le code de l'EA travaillant en parallèle est exactement le même, il est responsable de la mise en place des stops. Cet EA n'a jamais connu de situation où les stops n'étaient pas fixés pour les ordres.
Il semble qu'il y ait une erreur dans le calcul des paramètres quelque part ci-dessus, mais si un seul paramètre est erroné, une autre erreur devrait apparaître. Par exemple, le célèbre 130
ord_ticket est déclaré au niveau local. Et puis, même si elle est déclarée globalement dans la première ligne
sa valeur va certainement changer. Il s'agira soit du numéro de commande en cas de transaction réussie, soit de -1 dans le cas contraire. Ainsi, si l'ordre n'est pas ouvert, nous n'arrivons pas au blocage de la mise en place des stops.
Il convient également de noter que la fonction OrderSend() modifie toujours la valeur de la dernière erreur (selon la documentation et la logique), de sorte que la réinitialisation de la lecture précédente dans ce cas n'est pas nécessaire et entraînerait une simple perte de temps. C'est-à-dire que l'erreur 131 apparaît après l'entrée dans le bloc de réglage de l'arrêt et avant l'affichage du message d'erreur. Comme les arrêts ne sont pas réellement placés, la fonction OrderModify() doit être la dernière fonction à être appelée, qui, tout comme la précédente, modifie toujours la valeur de la dernière erreur. Mais je ne comprends pas pourquoi il ne change pas la valeur de la dernière erreur. D'où vient-il ? Une fois encore, je dirai qu'il n'y a eu aucun problème dans le testeur.
J'avais l'idée que le courtier trichait parce que le serveur envoyait des numéros d'erreur au terminal et que ce dernier les envoyait à son tour au conseiller expert. J'ai rapidement abandonné cette idée car seuls les ordres d'un EA ont des erreurs, les autres EA travaillant en parallèle n'ont pas de telles erreurs.
Vous avez écrit une réponse en trois points. Dans le premier cas, vous avez fait une erreur (mon entrée est tout à fait correcte), dans le deuxième cas, vous avez également fait une erreur (bien que ce message l'ait nivelée :) Le troisième point semblait indiquer que vous suggériez de déplacer le curseur à la fin après l'entrée, et non avant (ce qui a été pris comme une erreur à nouveau). Face à une telle image, j'ai préféré apporter une précision au modérateur polyvalent qui répondait.
Néanmoins, je vous remercie pour votre réponse. Et bonne année ! :)
:D ok, bonne année à vous aussi :)
Pour en revenir à ce qui a été écrit à la page 411 ... Quelqu'un a-t-il une idée de la façon de combiner ce code et les conditions d'entrée/sortie pour le croisement de deux MA ? ou les ordres en attente sont-ils la seule option ?
Après avoir ouvert une transaction sur un signal de mouvement, commencez à surveiller le nombre d'ordres ou cet ordre spécifiquement, si le nombre d'ordres à diminuer ou comme la deuxième option est fermée spécifiquement cet ordre, puis découvrez comment il a été fermé, si un arrêt, puis ouvre juste l'ordre opposé au prix actuel, c'est tout.
Après l'ouverture d'une transaction sur des signaux mobiles, commencez à surveiller le nombre d'ordres ou cet ordre en particulier, si le nombre d'ordres à diminuer ou que la deuxième option est fermée spécifiquement cet ordre, alors découvrez comment il est fermé, si l'arrêt, alors il suffit d'ouvrir l'ordre opposé au prix actuel, c'est tout.
Je le comprends, mais je ne peux pas l'écrire. Soit le conseiller expert ne négocie que sur les signaux muwings et n'ouvre pas de position inverse en cas de perte, soit il fait simplement planter le terminal lorsque les tests commencent. J'ai donc écrit quelque chose qui ne peut pas être traité du tout. Je ne suis pas très doué pour l'écriture. J'ai besoin d'aide sous forme de code écrit.
Si OrderProfit()<0, il ouvrira l' ordreopposé. Mais il ne fonctionne pas avec les signaux des aides à la mobilité. Pouvez-vous écrire un seul code pour fournir à la fois les signaux muwings et les conditions d'ouverture d'une position opposée ?