Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Modification EA - ligne stop

  • popofpopof

    bonjour,

    j'ai un rebot qui prend 6 positions. Je souhaite que l'ensemble de mes lignes on le même stop qui doit être le stop de ma ligne 1 qui est avec 0.01 lot

    voila par exemple ma ligne d'achat

    OrderSend(Symbol(),OP_BUY,ldLot,NormalizeDouble(Ask,Digits),Slippage,Bid-300*Point,ldTake,lsComm,iMagic,0,NULL);

    j'ai fait ce code pour la gestion du stop identique sur tout les lignes mais sa ne marche pas

    Code
    for(i = 0 ; i <= 1 ; i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderMagicNumber() == iMagic && OrderSymbol()==Symbol() && OrderComment()==Name_Expert && OrderType()==OP_BUY && OrderLots()==0.01) { newstop=0; newstop=OrderStopLoss(); } } for(i=0;i<OrdersTotal();i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderMagicNumber() == iMagic && OrderSymbol()==Symbol() && OrderComment()==Name_Expert && OrderType()==OP_BUY ) { OrderModify(OrderTicket(),OrderOpenPrice(),newstop,OrderTakeProfit(),0,Green); return(0); } }

    pouvez vous m'aider?

    merci
    Modifié le 2015-02-03 21:28:03 par AliX
  • stani — en réponse à popofpopof dans son message #99905

    Pourquoi normalises-tu le Ask?
    Pourquoi calcule tu le sl(sans normaliser!) dans l'ordre, mais pas le tp?
    A quel moment passes-tu l'ordre?
    En vertus de quelle(s) donnée(s) initialises-tu la première boucle for?
    Ne trie pas avec OrderComment(), si il ne le fait pas souvent, ton broker peut être amené a le modifier pour des opérations de maintenance de ses serveurs. Ou a sa convenance.
    Ne trie pas avec la taille ce n'est pas un critère déterminant: elle n'est pas censée être unique.
    Sort de ta boucle dés que tu as trouvé.
    Pourquoi newstop = 0?
    bonne soirée. :)
  • popofpopof — en réponse à stani dans son message #99911

    salut
    pour OrderComment(), je ne savais pas d'onc je vais le modifier
    voila la ligne d’achat au complet :
    Code
    void OpenBuy() { double ldLot, ldTake; string lsComm; ldLot = GetSizeLotB(); ldTake = NormalizeDouble(GetTakeProfitBuy(),Digits); lsComm = GetCommentForOrder(); while (!IsTradeAllowed()){} OrderSend(Symbol(),OP_BUY,ldLot,NormalizeDouble(Ask,Digits),Slippage,Bid-300*Point,ldTake,lsComm,iMagic,0,NULL); }

    plus loin dans mon EA j'ai une ligne qui modifi le stop a chaque ligne

    Code
    p=0; for(int cnt=OrdersTotal();cnt>=0;cnt--) { if (OrderType()==OP_BUY) { if (TrailingStopLong>0) { if (Bid-OrderOpenPrice()>=(TrailingStopLong+DLong)*Point) { p=1; if (OrderStopLoss()<(Bid-Point*TrailingStopLong)) { while (!IsTradeAllowed()){} OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStopLong,0,0,CLR_NONE); return(0); ............
    c'est un code que j'ai récupéré dans une EA qui marche sans problème

    j'ai pas exemple plusieurs ligne en buy 0.01 ; 0.07 ; 0.15 ; 0.32.......
    avec toujours la 1er ligne a 0.01
    je souhaite récupéré la valeur du stop de la ligne qui a 0.01 lot par exemple sur euro/dollars stop a 1.145
    et mettre ce stop sur l'ensemble de mes autres lignes.

    Pourquoi newstop = 0? c'est pour l'initialisé a 0 puis je voulais mettre le stop de la ligne qui a 0.01 lot dans cette variable avec cette ligne newstop=OrderStopLoss(); mais sa ne fonctionne pas

    tu peux m'aidé?
    Modifié le 2015-02-03 22:01:45 par popofpopof : oublie de répondre a une question