[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 166

 
Xaoss1990:

Messieurs les professionnels, j'ai encore besoin de votre aide !

Vous trouverez ci-dessous un extrait de code responsable de la clôture des transactions, mais le problème est que lorsque les ordres en attente ne sont pas exécutés, ils ne sont pas supprimés, je n'arrive pas à comprendre pourquoi. Mais lorsque j'ai besoin de fermer un ordre en attente qui a déjà été exécuté, tout se passe correctement et si l'ordre n'a pas été exécuté, il reste simplement suspendu jusqu'à ce qu'il soit exécuté....

OrderSelect(0, SELECT_BY_POS, MODE_TRADES) ;
Magic = OrderMagicNumber() ;
orderticket = OrderTicket() ;

if (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0) {
if (H1_BUY_5 == 0 || H1_BUY_1 == 0) {
OrderClose(orderticket, lots, Bid, 5, Yellow) ;
if (OrdersTotal() == 1) OrderDelete(orderticket, Brown) ;
}

}



C'est la condition qui sélectionne uniquement l'ordre d'achat,

si (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)

il n'y a donc aucun moyen de supprimer l'ordre en attente

 
Roger:


Probablement parce que vous calculez le lot d'abord et ensuite

Merci, j'ai changé le calcul du lot, mais ça ne marche toujours pas.
 
Sancho77:
Merci, j'ai changé le calcul du lot, mais ça ne marche toujours pas.


Comment cela ne fonctionne-t-il pas, qu'est-ce que cela dit dans les journaux ?

Vérifiez les valeurs prises par np, ici

if (OrderSelect(np, SELECT_BY_POS, MODE_TRADES)) {
      ClosePosBySelect();}
    }
 
Il n'y a pas de messages d'erreur dans le journal de bord. Pouvez-vous regarder le code entier de l'EA ? Il devrait fermer 1/3 du lot si le stoploss a déjà été déplacé vers le breakeven par le chalutage.
 
Sancho77:
Il n'y a pas de messages d'erreur dans le journal de bord. Pouvez-vous regarder le code entier de l'EA ? Il devrait fermer 1/3 du lot si le stoploss a déjà été déplacé vers le breakeven par le chalutage.

Oooooooo comment tout est en désordre. En général, tout est faux, plus facile à jeter et à écrire un nouveau. Les paramètres sont définis de manière incorrecte, les fonctions sont appelées de manière incorrecte, beaucoup de calculs inutiles. Bon pour un tutoriel sur la façon de ne pas écrire de code.
 
Roger:

En somme, tout est faux, il est plus facile de le jeter et d'en écrire un nouveau. Les paramètres sont définis de manière incorrecte, les fonctions sont appelées de manière incorrecte, beaucoup de calculs inutiles. Il sera bon pour un tutoriel sur la façon de ne pas écrire de code.
Ok, commençons par le début)
 
Sancho77:
...Devrait fermer 1/3 du lot si un stop loss déjà déplacé au seuil de rentabilité par le chalut est déclenché.
Je regarde tout cela et je me dis : pourquoi se lancer dans de telles tâches si l'on n'est pas sûr des bases ? Ce genre d'auto-apprentissage fait plus de bien que de mal. L'étincelle de la pensée se noie dans un tas d'erreurs.
 
granit77:
Je regarde tout cela et je me dis : pourquoi se lancer dans de telles tâches si l'on n'est pas sûr des bases ? Ce genre d'auto-apprentissage fait plus de bien que de mal. L'étincelle de la pensée se noie dans un tas d'erreurs.

Il a probablement fait plus de mal que de bien.
 
Oui, une erreur de frappe.
 

Veuillez nous conseiller, messieurs !

Imaginez la situation : un arrêt est déclenché, en raison du déclenchement de la N-ième condition. Mais après quelques chandeliers, la N-ième condition est tombée. À l'aide de cette fonction, vous pouvez rouvrir l'affaire après que la Nième condition soit remplie. En d'autres termes, vous devez déterminer qu'un stop a été déclenché il y a un certain nombre de barres, et parce que la N-ième condition est tombée, répétez l'opération !