MT4 - Niveaux de prises multiplesFermeture partielle
Résultats de 1 é 10 sur 10

Sujet : MT4 - Niveaux de prises multiplesFermeture partielle

  1. #1
    Je voudrais fermer une commande ? diff?rents niveaux. Exemple Je ferme la moiti? de ma commande chez takeprofit1 et le reste chez takeprofit2 en utilisant quelque chose comme ceci:
    Code ins?r? if (OrderType () == OP_BUY) {if (gt Bid; OrderOpenPrice () TakeProfit1) {OrderClose (12345, 0.5, Bid, 2); } if (Bid gt; OrderOpenPrice () TakeProfit2) {OrderClose (12345, 0.5, Bid, 2); }} Le probl?me ?vident est que, lorsque le prix atteint mon TakeProfit1, il essaiera de fermer ? chaque nouveau tick et finira par cl?turer toute la commande. Y a-t-il un moyen de faire en sorte que cette action ne soit ex?cut?e qu'une seule fois?

    Je me rends compte que je pourrais ouvrir deux ordres avec des prises diff?rentes mais je pr?f?rerais apprendre ? le faire diff?remment s???il existe un autre moyen. J'aime l'id?e de cacher mes profits au courtier. Toute aide ou conseil est appr?ci?.

  2. #2

    Citation Envoy? par ;
    Je voudrais fermer une commande ? diff?rents niveaux. Exemple Je ferme la moiti? de ma commande ? takeprofit1 et le reste ? takeprofit2 en utilisant quelque chose comme ceci: Code ins?r? if (OrderType () == OP_BUY) {if (Bid gt; OrderOpenPrice () TakeProfit1) {OrderClose (12345, 0.5, Bid , 2); } if (Bid gt; OrderOpenPrice () TakeProfit2) {OrderClose (12345, 0.5, Bid, 2); }} Le probl?me ?vident est que, lorsque le prix atteint mon TakeProfit1, il essaiera de se fermer ? chaque nouveau tick qui finira par se fermer ...
    utilisez simplement deux commandes s?par?es. Le fractionnement d'une commande apr?s son ouverture est une t?che ardue. Il est n?cessaire de suivre les commandes en cours et de rechercher des tickets nouvellement cr??s, etc., etc. Il est pr?f?rable de le laisser pour l'instant et de le conserver pour l'avenir, lorsque vous pourrez mieux coder. utilisez simplement deux ordres distincts et poursuivez votre vie. sinon, nous serons ceux qui finirons par ?crire le code pour vous et vous n???aurez rien r?gl? pour vous-m?me.

  3. #3
    La cl?ture d'une commande est d?finitivement destin?e aux codeurs de niveau avanc?.

  4. #4

    Citation Envoy? par ;
    Le probl?me ?vident est que lorsque TakeProfit1 touchera un prix, il tentera de fermer ? chaque nouveau tick et finira par cl?turer la totalit? de la commande. Y a-t-il un moyen de faire en sorte que cette action ne soit ex?cut?e qu'une seule fois? Je me rends compte que je pourrais ouvrir deux ordres avec des prises diff?rentes mais je pr?f?rerais apprendre ? le faire diff?remment s???il existe un autre moyen. J'aime l'id?e de cacher mes profits au courtier. Toute aide ou conseil est appr?ci?.
    //----- hey trumpjr ...... utiliser orderselect pour choisir order ..... utiliser un filtre orderlots () .... ci-dessous n'est qu'un exemple approximatif ... h/- --- Code ins?r? pour (int i = Orderstotal () - 1; i gt; = 0; i--) {OrderSelect (i, SEL_BY_POSITION, MODE_TRADES); if (OrderSymbol ()! = Symbol ()) continue; if (OrderLots () gt; = 1)/filtre de orderlots {if (OrderType () == OP_BUY) {if (Bid gt; OrderOpenPrice () TakeProfit1) {OrderClose (OrderTicket (), 0.5, Bid, 0, CLR_NONE ) }}

  5. #5
    Vous devez suivre chaque commande via un num?ro magique unique afin de g?rer les positions par morceaux. D?s que vous fermez partiellement une commande ouverte donn?e, son ticket de commande change et vous devez ensuite r?cup?rer le nouveau num?ro de ticket. L'ancien num?ro de ticket est simplement jet?. Pour obtenir le nouveau num?ro de ticket et ainsi garder le contr?le de l'ordre restant partiellement ouvert, vous devez r?cup?rer le num?ro de ticket en fonction du num?ro magique. Le nombre magique attribu? ? une commande ne changera pas par rapport aux fermetures fractionn?es de plusieurs commandes, vous pouvez donc toujours suivre le cycle de vie de la commande d'origine.

  6. #6
    Les nombres magiques ne sont pas uniques ? un ordre. Le m?me num?ro magique (g?n?ralement) est attribu? ? chaque commande ouverte par un EA. Il pourrait y avoir beaucoup de commandes avec le m?me nombre magique. Votre suggestion ne fonctionnera pas.

  7. #7
    y a-t-il un moyen simple de faire cela? la premi?re s?rie d'arr?ts devra ?tre plus serr?e comme indiqu? par fifo. Supposons que, d?s la codition, j'ach?te deux commandes distinctes: lot A et lot B pour lotA, je veux SL-A ? 30 pips et TP-A ? 30pips pour lotB Je veux SL-B ? 50 pips et TP-B ? 50 pips. J'imagine que je devrais fermer via le num?ro de ticket et utiliser des pertes cach?es car mon courtier ferme toutes les positions sur tous les TP de SL. et im moi-m?me conduisant des noix y at-il des exemples de ce code afin que je puisse d?composer visuellement comment cela fonctionne

  8. #8
    Toute autre chose que le profit effectif de la commande va ?tre imaginaire, vous devrez donc calculer votre valeur secondaire dans votre boucle OrderSelect: Code ins?r? if ((OrderType () == OP_BUY) (OrderSymbol () == Symbol ( )) (OrderMagicNumber () == MagicNumber)) {if (OrderLots () = gt; 1 (Offre = gt; OrderTakeProfit () - (TakeProfitA * Point))) {double dNewLotSize = NormalizeDouble (OrderLots ()2, 2 ) if (! OrderClose (OrderTicket (), dNewLotSize, Bid, 3, Violet)) Print (erreur OrderClose, GetLastError ()); else Print (OrderClose - OrderTicket ()); }}

  9. #9
    merci beaucoup d'avoir pris le temps de poster ce message, j'ai du mal ? traduire la syntaxe dans la boucle if. Comment se diff?rencie-t-il entre LotA et Lot B? ou bien suppose-t-il que TakeProfit A doit ?tre ex?cut? en premier afin de rechercher gt; than only? que fait cette ligne de code? Code ins?r? double dNewLotSize = NormalizeDouble (OrderLots ()2, 2); J'ai suppos? que cela aurait d? se produire en s?lectionnant la fermeture via le num?ro de ticket mais votre boucle si semble fonctionner autour de cela, je ne peux tout simplement pas le traduire clairement

  10. #10
    Comment cela fonctionne-t-il autour du num?ro de ticket?

Régles des messages

  • Vous ne pouvez pas cr?er de sujets
  • Vous ne pouvez pas r?pondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas ?diter vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Désactivé
  • Le code HTML est Désactivé
Le site d'sundytrading utilise des cookies
Le site d'sundytrading utilise des cookies pour vous assurer la meilleure expérience sur notre site ; certains sont déjà effectifs. Vous pouvez consulter plus de détails sur leurs usages ici. Veuillez cliquer sur le bouton à droite pour accepter nos cookies. Si vous continuez à utiliser le site internet d???sundytrading, nous considérerons que vous acceptez nos cookies.