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
Cela s'imprime dans le journal pendant ma boucle for, où, dans le cas d'un ordre d'achat stop en attente, si la 60 EMA est > à la perte de l'ordre stop, il fermera l'ordre en attente, en ouvrira un nouveau avec un nouveau SL (qui est derrière la 60EMA), ajustera le take profit pour recevoir la récompense 1:2, et changera les lots relatifs à l'arrêt en points et mon profil de risque (disons 2%).
Donc, lorsque tout cela est fait, la variable personnalisée "Current Lots" qui est "LotSize" dans OrderSend fonctionne, mais elle envoie une taille de lot qui n'est pas correcte pour que le serveur reçoive "0.18215" ? Cela pourrait-il être un problème, bien que les ordres soient envoyés de toute façon - cette question est davantage liée à "cela pourrait-il être la raison pour laquelle je ne peux pas appeler "OrderType==OP_BUY" ?
Vous devriez corriger cela, valider la taille du lot de la même manière que vous l'avez déjà fait... vous pourriez même coder une fonction séparée pour le faire sur la base du code que vous avez déjà... par exemple :
Au lieu d'utiliser LotSize dans votre OrderSend(), vous utiliseriez ValidateLots(LotSize)
Je doute que cela soit à l'origine de votre problème, cependant...
Argh ! C'est tellement frustrant lol - je suis bloqué sur ce problème depuis trop longtemps maintenant :(
Je ne vois pas pourquoi c'est un problème et je ne peux pas sélectionner un "OP_BUY"... Je sais que j'ai probablement épuisé ce sujet, mais tout dernier coup de couteau dans le noir serait vraiment apprécié - merci de m'aider également !
Hmm - oui, je viens de jouer avec. Il semble que la commande soit simplement envoyée car le serveur ne permet que 0,00 (2 décimales) de toute façon. Donc les chiffres restants sont presque sans importance.
Argh ! C'est tellement frustrant lol - je suis coincé sur ce problème depuis trop longtemps maintenant :(
Je ne vois pas pourquoi c'est un problème et je ne peux pas sélectionner un "OP_BUY"... Je sais que j'ai probablement épuisé ce sujet, mais tout dernier coup de couteau dans le noir serait vraiment apprécié - merci de m'aider également !
Je pense que vous devez montrer tout votre code . . .
Je vois quelques problèmes ici :
-http://pastebin.com/eaY1wKbN
Désolé pour la syntaxe - un peu plus difficile de tout voir, mais ils n'ont pas MQL4 ? Alors mettez-le sous C++
Tout le code ne rentre pas ici ? Je l'ai mis sur pastebin cependant ?
-http://pastebin.com/eaY1wKbN
Désolé pour la syntaxe - un peu plus difficile de tout voir, mais ils n'ont pas MQL4 ? Alors mettez-le sous C++
Pas de problème...
Quand vous faites ça...
... quel ordre est déjà sélectionné ? l'ordre en attente ? votre OrderSelect() échouera si votre OrderTicket() échoue à moins que vous n'ayez déjà un ordre sélectionné. Avez-vous vraiment besoin de ce code ? Plus tard, vous avez une boucle où vous sélectionnez les ordres et vérifiez leur symbole, leur numéro magique et leur type...
Cela doit être corrigé aussi....
. . . ajouter des accolades . . .
Ok - J'ai ajouté plus d'impressions pour avoir un peu plus de clarté sur ce qui est fait et à quel moment. Je l'ai collé ci-dessous.
La ligne où il est écrit "Order Select for closing:-..." est ce qui est sélectionné au point "Close OP_BUY Half Lots @ 1:1 Function" que vous avez demandé ci-dessus. Il semble que le numéro de ticket soit différent à ce point de sélection ? J'avais supprimé la partie "...&& OrderType()==OP_BUY", car il semble que le reste soit imprimé lorsque cette partie n'est pas dans l'instruction "if"... Est-ce que ceci donne un peu plus de clarté ?
"First Buy Order Placed:-" est la première fonction OrderSend qui passe au début.
"Checking Buy Order:-" est celle qui, dans la boucle for, supprime et rouvre l'ordre en attente si la MA est > à l'OrderStopLoss().
"NEW BUY ORDER:-" est le nouvel ordre placé dans cette boucle for.
"Order Select for closing:-..." - comme déjà mentionné ci-dessus, c'est la partie qui est sélectionnée pour fermer la moitié des lots.
Désolé si c'était confus, car je viens juste d'ajouter ces parties - vous ne verrez pas cela dans le lien pastebin ci-dessus... juste de simples fonctions d'impression :)
Ok - J'ai ajouté plus d'impressions pour avoir un peu plus de clarté sur ce qui est fait et à quel moment. Je l'ai collé ci-dessous.
La ligne où il est écrit "Order Select for closing:-..." est ce qui est sélectionné au point "Close OP_BUY Half Lots @ 1:1 Function" que vous avez demandé ci-dessus. Il semble que le numéro de ticket soit différent à ce point de sélection ? J'avais supprimé la partie "...&& OrderType()==OP_BUY", car il semble que le reste soit imprimé lorsque cette partie n'est pas dans l'instruction "if"... Est-ce que ceci donne un peu plus de clarté ?
"First Buy Order Placed:-" est la première fonction OrderSend qui passe au début.
"Checking Buy Order:-" est celle qui, dans la boucle for, supprime et rouvre l'ordre en attente si la MA est > à l'OrderStopLoss().
"NEW BUY ORDER:-" est le nouvel ordre placé dans cette boucle for.
"Order Select for closing:-..." - comme déjà mentionné ci-dessus, c'est la partie qui est sélectionnée pour fermer la moitié des lots.
Désolé si c'était confus, car je viens juste d'ajouter ces parties - vous ne verrez pas cela dans le lien pastebin ci-dessus... juste de simples fonctions d'impression :)
Essayez le fichier joint... c'est ma meilleure idée de ce que vous essayez de faire....
Ah génial - merci. C'est un grand pas dans la bonne direction. Je pense que parce que c'est dans une boucle for, il veut fermer la moitié et la moitié et la moitié @ le prix ... Au lieu de le faire une seule fois ? Non seulement cela, mais il semble qu'il ne ferme pas la moitié dès que le prix >= au prix de sortie que je veux, au lieu de cela il va au-delà, et puis quand le prix oscille de nouveau plus bas dans le prix de sortie que je veux, il ferme alors - étrange... J'apprécie votre patience pour m'aider ! Très reconnaissant pour votre temps !
UPDATE : Aussi, je viens de comprendre que si je change les propriétés de l'expert (extern int) avant d'exécuter le testeur de stratégie, alors la moitié de fermeture ne fonctionne pas du tout - les choses qui affectent la moitié de fermeture sont "MA_PadAmount" c'est le nombre de points que je veux ajouter comme un tampon au stop loss qui suit en pips, et "OrderPrice_PadAmount" qui me permet de spécifier combien de pips je peux mettre comme un tampon sur le prix d'entrée des ordres...
Ah génial - merci. C'est un grand pas dans la bonne direction. Je pense que parce que c'est dans une boucle for, il veut fermer la moitié et la moitié et la moitié @ le prix ... Au lieu de le faire une seule fois ? Non seulement cela, mais il semble qu'il ne ferme pas la moitié dès que le prix >= au prix de sortie que je veux, au lieu de cela il va au-delà, et puis quand le prix oscille de nouveau plus bas dans le prix de sortie que je veux, il ferme alors - étrange... J'apprécie votre patience pour m'aider ! Très reconnaissant pour votre temps !
Je ne suis pas tout à fait sûr de la façon d'écrire cela, mais est-ce que cela va dans le bon sens ?