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
Salut Kronin,
Votre modification fonctionne. Vous avez limité le nombre d'ordres maximum, mais est-il possible de les fermer tous à la place ?
J'ai essayé de le faire avec le code suivant, mais cela ne semble pas fonctionner.
Meilleures salutations
Luis
Hmmm, je ne suis pas sûr de comprendre ce que vous voulez dire...
Vous voulez dire qu'au lieu d'ouvrir le dernier ordre (ordre 7 si MaxOrders est fixé à 7), vous fermez tous les ordres ?
Je suis sûr que vous ne voulez pas attendre que MaxOrders soit atteint et ensuite fermer immédiatement tous les ordres. Le dernier ordre se terminerait la plupart du temps (ou tout le temps) avec une perte.
Par ailleurs, avez-vous vu le PM sur le contrôleur de spread ?
Hmmm, je ne suis pas sûr de comprendre ce que vous voulez dire...
Voulez-vous dire qu'au lieu d'ouvrir le dernier ordre (ordre 7 si MaxOrders est fixé à 7), vous fermez tous les ordres ?
Je suis sûr que vous ne voulez pas attendre que MaxOrders soit atteint et ensuite fermer immédiatement tous les ordres. Le dernier ordre se terminerait la plupart du temps (ou tout le temps) avec une perte.
Par ailleurs, avez-vous vu le PM sur le contrôleur de spread ?
Salut Kronin,
Merci pour votre réponse rapide.
Disons qu'après un cycle de ping-pong de n ordres (MaxOrders) tous les ordres ouverts devraient être fermés, je sais que cela pourrait ne pas avoir de sens, mais quand même.
J'essaie d'inclure un code pour réintroduire l'ordre au cas où il échouerait et je doute que cela ait un sens car il y a déjà le code de IsContextBusy () Sleep (10). D'après ce que j'ai compris, la signification est la suivante : " si le serveur est occupé ou si un autre EA de la plateforme tente de communiquer, alors attendez 10 millisecondes et réessayez ". Je suppose donc que l'EA maintiendra ce comportement jusqu'à ce qu'un ticket ait été reçu, n'est-ce pas ?
En ce qui concerne le problème des PM, dans ce cas, il vaut mieux ne pas utiliser le test le week-end ou le faire avec la plateforme hors ligne.....
J'ai inséré la ligne 5, mais je pense que ce n'est pas nécessaire parce que la ligne 1 l'a déjà fait, n'est-ce pas ?
Un autre problème,
Dans le morceau de code suivant, les lignes en gras où se trouvent sym et mn ne doivent pas être remplacées par Symbol() et MagicNumber ?
Ici, dans le code suivant, j'ai inséré des filtres selon vos conseils ;
(//Phil :
//Check the total amount of orders. J'ajouterais un filtre pour le marché, la magie et le symbole...//<----------- Pas sûr de ce que vous voulez dire par filtre de marché..... (Phil : ordres du marché, pas d'ordres en attente)
//.... mais je suis paresseux maintenant..... c'est quelque chose que vous devez faire.
Est-ce que c'est correct ?
Meilleures salutations
Luis
Je ne commente pas l'utilisation des fonctions. RaptorUK l'a déjà fait quelques posts auparavant. Relisez et comprenez pourquoi vous n'avez pas besoin de changer quoi que ce soit dans le code donné. Encore mieux, comprenez pourquoi vous pouvez l'utiliser tel quel dans d'autres EAs.
OrdersTotal() donne une quantité d'ordres. Vous voulez probablement savoir si les ordres appartiennent à votre EA ou au trading manuel ou si les ordres sont en attente ou déjà sur le marché. Je créerais une fonction (int) qui renvoie le nombre d'ordres que l'EA a créé.
if(OTLastTick >= 2 //<------pourriez-vous commenter la signification de cette ligne ?
Si vous n'avez qu'un seul ordre ouvert (moins de 2), cela n'a aucun sens d'appeler la fonction CloseAllOnSL..... le seul ordre ouvert n'est évidemment pas arrêté.
Je ne commente pas l'utilisation des fonctions. RaptorUK l'a déjà fait quelques posts auparavant. Relisez et comprenez pourquoi vous n'avez pas besoin de changer quoi que ce soit dans le code donné. Encore mieux, comprenez pourquoi vous pouvez l'utiliser tel quel dans d'autres EAs.
OrdersTotal() donne une quantité d'ordres. Vous voulez probablement savoir si les ordres appartiennent à votre EA ou au trading manuel ou si les ordres sont en attente ou déjà sur le marché. Je créerais une fonction (int) qui renvoie le nombre d'ordres que l'EA a créés.
if(OTLastTick >= 2 //<------pourriez-vous commenter la signification de cette ligne ?
Si vous n'avez qu'un seul ordre ouvert (moins de 2), cela n'a aucun sens d'appeler la fonction CloseAllOnSL..... le seul ordre ouvert n'est évidemment pas arrêté.
Bonjour Kronin,
Merci pour votre réponse à mes questions.
J'accorderai toute mon attention à votre code ainsi qu'aux conseils de RaptorUK donnés précédemment.
Meilleures salutations
Luis
Salut Kronin,
Un problème est apparu et a à voir avec l'utilisation de deux EA. Si je place deux EA dans des graphiques différents et avec un numéro magique différent, ils ne fonctionnent pas en même temps. Je reçois une erreur comme uninit reason 5 mais après avoir jeté un coup d'oeil dans le forum je ne trouve pas d'information qui me mette dans la bonne direction pour traiter ce problème.
Avez-vous des informations complémentaires ?
Meilleures salutations
Luis
Salut Kronin,
Un problème est apparu et a à voir avec l'utilisation de deux EA. Si je place deux EA dans des graphiques différents et avec un numéro magique différent, ils ne fonctionnent pas en même temps. Je reçois une erreur comme uninit reason 5.
Bonjour RaptorUK,
Merci pour votre réponse rapide.
Dans le lien fourni, j'ai trouvé,
Mais avec cette information, je ne peux rien faire (pour autant que je sache). Je ne comprends pas quels paramètres d'entrée ont été modifiés. L'ea est la même, il faut seulement changer le nombre magique pour éviter les conflits entre les autres ea.
A propos, une fois que vous serez ici, pourriez-vous me dire si dans le code suivant il faut introduire un code pour que les ordres soient envoyés à nouveau alors que le ticket n'a pas été reçu, de même pour les ordres de fermeture ?
Meilleures salutations
Luis
Bonjour RaptorUK,
Merci pour votre réponse rapide.
Dans le lien fourni, j'ai trouvé,
Mais avec cette information, je ne peux rien faire (pour autant que je sache). Je ne comprends pas quels paramètres d'entrée ont été modifiés. L'ea est la même, il suffit de changer le nombre magique pour éviter les conflits entre les autres ea.
Si vous avez changé le nombre magique...
... et que c'est un externe, alors vous avez changé un paramètre, l'EA redémarre et donne la raison 5.
Si vous voulez exécuter votre EA sur plusieurs paires, je vous suggère de faire deux choses : d'abord, faites fonctionner votre EA correctement sur une paire, testez-le complètement pour savoir s'il fonctionne. Ensuite, introduisez un Mutex pour que vos transactions soient gérées lorsque l'autre EA n'essaie pas de faire la même chose.
Si vous avez modifié le nombre magique . . .
... et qu'il s'agit d'un externe, alors vous avez modifié un paramètre, l'EA redémarre et donne la raison 5.
Si vous voulez exécuter votre EA sur plusieurs paires, je vous suggère de faire deux choses : d'abord, faites fonctionner votre EA correctement sur une paire, testez-le complètement pour être sûr qu'il fonctionne. Ensuite, introduisez un Mutex pour que vos transactions soient gérées lorsque l'autre EA n'essaie pas de faire la même chose.
Salut RaptorUk,
Merci pour votre réponse au sujet de l'erreur, je suppose qu'il faut changer le nom et le numéro magique et mettre le deuxième EA dans le graphique sans fermer la plateforme.
En ce qui concerne l'autre question sur les ordres de réentrée, cela a à voir avec un échec dans la fermeture de l'ordre qui a retourné une erreur comme timeout. C'est pourquoi je ne sais pas si le code tel qu'il est va réentrer l'ordre de fermeture ou l'ordre d'envoi.
Meilleures salutations
Luis
Salut RaptorUk,
Merci pour votre réponse au sujet de l'erreur, je suppose que j'ai changé le nom et le numéro magique et mis la deuxième ea dans le graphique sans fermer la plate-forme.
En ce qui concerne l'autre question sur les ordres de réentrée, cela a à voir avec un échec dans la fermeture de l'ordre qui a retourné une erreur comme timeout. C'est pourquoi je ne sais pas si le code tel qu'il est va réentrer la fermeture de l'ordre ou l'envoi de l'ordre.
Meilleures salutations
Luis
Lisez les codes d'erreur d'exécution et mettez votre code en conformité avec les informations qui y sont données, par exemple . . .