Mon compte
Déjà membre ? S'identifier
Non inscrit ? S'inscrire
 
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Membre lvl 50 CHNOPE est sur la route de la réputation... Avatar de CHNOPE
    Date d'inscription
    January 2009
    Localisation
    Gard
    Messages
    65
    Pouvoir de réputation
    6

    Casse tête !!!! Casse tête !!!!

    Bonjour à tous,

    J'ai un problème avec un trailing stop qui va me rendre fou. Je vous explique :

    Je voudrais, par exemple pour un buy, dès que le Bid est supérieur d'1 pips par rapport a l'OrderOpenPrice que le Stop remonte d'1 pips aussi et ainsi de suite. Même si le stop est loin de 200 pips, dès que le bid est à +1 alors le stop doit être à 199....

    J'ai commencé à le coder mais ça marche pas. qu'est ce qui manque ???

    void TrailStops()
    {
    int total=OrdersTotal();
    for (int cnt=0;cnt<total;cnt++)
    {
    OrderSelect(cnt, SELECT_BY_POS);
    int mode=OrderType();
    if ( OrderSymbol()==Symbol() )
    {
    if ( mode==OP_BUY )
    {
    double OpenBuy = OrderOpenPrice();
    double Stop = OrderStopLoss();
    double Ecart = Bid-OpenBuy;

    if ( Bid>OpenBuy && (Ecart+Stop)>Stop )
    {
    double ModifStop = OrderStopLoss()+Ecart;
    OrderModify(OrderTicket(),OrderOpenPrice(),
    NormalizeDouble(ModifStop, MarketInfo(Symbol(),MODE_DIGITS)),
    OrderTakeProfit(),0,LightGreen);
    }

    }
    //-----------------------------


    Merci d'avance pour votre aide.
    "Même un voyage de mille kilomètres commence par un premier pas"

  2. #2
    Membre Star pipsforever is just really nice pipsforever is just really nice pipsforever is just really nice pipsforever is just really nice Avatar de pipsforever
    Date d'inscription
    November 2008
    Localisation
    Londres
    Messages
    1 340
    Pouvoir de réputation
    42

    J'utilise ceci pour mon trailing stop, vois si ça peut t'aider
    Code:
     if((OrderStopLoss()<Bid-1*Point))
    {
     OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-1*Point,Digits),OrderTakeProfit(),0);
    }
    Chaque trade doit avoir seul et unique but ...... faire un nouveau plus haut sur votre équity!!!
    Chez moi, la prog c'est une affaire de famille!
    Même notre chien s'y met

  3. #3
    Membre lvl 50 CHNOPE est sur la route de la réputation... Avatar de CHNOPE
    Date d'inscription
    January 2009
    Localisation
    Gard
    Messages
    65
    Pouvoir de réputation
    6

    Citation Envoyé par pipsforever Voir le message
    J'utilise ceci pour mon trailing stop, vois si ça peut t'aider
    Code:
     if((OrderStopLoss()<Bid-1*Point))
    {
     OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-1*Point,Digits),OrderTakeProfit(),0);
    }
    Merci pour ta réponse, mais c'est pas ce que je cherche et aussi je tiens a mon capital

    Pour faire simple il faudrait que la distance initiale entre le le prix d'entrée et le stop (ex: 50pips) se réduit (donc le stop remonte) a chaque pips gagné dans le sens du trade.

    J'ai remarqué en travaillant sur mes stat. que si ma gestion du Stop était faite de cette manière, j'améliore pas mal mon facteur profit.

    Je ne parle pas ici de la gestion globale de la position suivant le plan de trading, mais simplement d'une gestion systématique du risque : je rentre à tel prix, le marché avance même juste d'1 pips dans le sens de mon trade, aucune raison de garder mon stop au niveau initial en attendant de le bouger suivant mon plan de trade (si TP 1 touché, si....), le stop remonte d'1 pips aussi. Et ainsi de suite pips par pips le stop remonte...

    Je parle pour mon cas car je ne fais pas de scalping.

    Merci pour votre aide.
    Dernière modification par CHNOPE ; 02/07/2011 à 23h39.
    "Même un voyage de mille kilomètres commence par un premier pas"

  4. #4
    Membre Star remjie est actif et passionnant Avatar de remjie
    Date d'inscription
    January 2011
    Localisation
    Rhone
    Messages
    279
    Pouvoir de réputation
    10

    Code:
    void StepStops()
    {        
        double BuyStop, SellStop;
        int total=OrdersTotal();
        for (int cnt=0;cnt<total;cnt++)
        { 
         OrderSelect(cnt, SELECT_BY_POS);   
         int mode=OrderType();    
            if ( OrderSymbol()==Symbol() ) 
            {
                if ( mode==OP_BUY )
                {
                   BuyStop = OrderStopLoss();
                   if ( Bid-OrderOpenPrice()>0 || OrderStopLoss()==0) 
                   {
                   if ( Bid-OrderOpenPrice()>=Point*BreakEven && !BE) {BuyStop = OrderOpenPrice();BE = true;}
                   
                   if (OrderStopLoss()==0) {BuyStop = OrderOpenPrice() - InitialStop * Point; k=1; BE = false;}
                   
                   if ( Bid-OrderOpenPrice()>= k*StepSize*Point) 
                   {
                   BuyStop = OrderStopLoss()+ StepSize*Point; 
                   if (Bid - BuyStop >= MinDistance*Point)
                   { BuyStop = BuyStop; k=k+1;}
                   else
                   BuyStop = OrderStopLoss();
                   }                              
                   //Print( " k=",k ," del=", k*StepSize*Point, " BuyStop=", BuyStop," digit=", digit);
                   OrderModify(OrderTicket(),OrderOpenPrice(),
                               NormalizeDouble(BuyStop, digit),
                               OrderTakeProfit(),0,LightGreen);
    			      return(0);
    			      }
    			   }
                if ( mode==OP_SELL )
                {
                   SellStop = OrderStopLoss();
                   if ( OrderOpenPrice()-Ask>0 || OrderStopLoss()==0) 
                   {
                   if ( OrderOpenPrice()-Ask>=Point*BreakEven && !BE) {SellStop = OrderOpenPrice(); BE = true;}
                   
                   if ( OrderStopLoss()==0 ) { SellStop = OrderOpenPrice() + InitialStop * Point; k=1; BE = false;}
                   
                   if ( OrderOpenPrice()-Ask>=k*StepSize*Point) 
                   {
                   SellStop = OrderStopLoss() - StepSize*Point; 
                   if (SellStop - Ask >= MinDistance*Point)
                   { SellStop = SellStop; k=k+1;}
                   else
                   SellStop = OrderStopLoss();
                   }
                   //Print( " k=",k," del=", k*StepSize*Point, " SellStop=",SellStop," digit=", digit);
                   OrderModify(OrderTicket(),OrderOpenPrice(),
       		                  NormalizeDouble(SellStop, digit),
       		                  OrderTakeProfit(),0,Yellow);	    
                   return(0);
                   }    
                }
             }   
          } 
    }
    *siflotte*
    Mieux vaut ouvrir sa gueule et passer pour un con que la fermer et ne laisser aucun doute sur le sujet.

  5. #5
    Membre lvl 50 CHNOPE est sur la route de la réputation... Avatar de CHNOPE
    Date d'inscription
    January 2009
    Localisation
    Gard
    Messages
    65
    Pouvoir de réputation
    6

    Citation Envoyé par remjie Voir le message
    Code:
    void StepStops()
    {        
        double BuyStop, SellStop;
        int total=OrdersTotal();
        for (int cnt=0;cnt<total;cnt++)
        { 
         OrderSelect(cnt, SELECT_BY_POS);   
         int mode=OrderType();    
            if ( OrderSymbol()==Symbol() ) 
            {
                if ( mode==OP_BUY )
                {
                   BuyStop = OrderStopLoss();
                   if ( Bid-OrderOpenPrice()>0 || OrderStopLoss()==0) 
                   {
                   if ( Bid-OrderOpenPrice()>=Point*BreakEven && !BE) {BuyStop = OrderOpenPrice();BE = true;}
                   
                   if (OrderStopLoss()==0) {BuyStop = OrderOpenPrice() - InitialStop * Point; k=1; BE = false;}
                   
                   if ( Bid-OrderOpenPrice()>= k*StepSize*Point) 
                   {
                   BuyStop = OrderStopLoss()+ StepSize*Point; 
                   if (Bid - BuyStop >= MinDistance*Point)
                   { BuyStop = BuyStop; k=k+1;}
                   else
                   BuyStop = OrderStopLoss();
                   }                              
                   //Print( " k=",k ," del=", k*StepSize*Point, " BuyStop=", BuyStop," digit=", digit);
                   OrderModify(OrderTicket(),OrderOpenPrice(),
                               NormalizeDouble(BuyStop, digit),
                               OrderTakeProfit(),0,LightGreen);
    			      return(0);
    			      }
    			   }
                if ( mode==OP_SELL )
                {
                   SellStop = OrderStopLoss();
                   if ( OrderOpenPrice()-Ask>0 || OrderStopLoss()==0) 
                   {
                   if ( OrderOpenPrice()-Ask>=Point*BreakEven && !BE) {SellStop = OrderOpenPrice(); BE = true;}
                   
                   if ( OrderStopLoss()==0 ) { SellStop = OrderOpenPrice() + InitialStop * Point; k=1; BE = false;}
                   
                   if ( OrderOpenPrice()-Ask>=k*StepSize*Point) 
                   {
                   SellStop = OrderStopLoss() - StepSize*Point; 
                   if (SellStop - Ask >= MinDistance*Point)
                   { SellStop = SellStop; k=k+1;}
                   else
                   SellStop = OrderStopLoss();
                   }
                   //Print( " k=",k," del=", k*StepSize*Point, " SellStop=",SellStop," digit=", digit);
                   OrderModify(OrderTicket(),OrderOpenPrice(),
       		                  NormalizeDouble(SellStop, digit),
       		                  OrderTakeProfit(),0,Yellow);	    
                   return(0);
                   }    
                }
             }   
          } 
    }
    *siflotte*
    Merci pour votre aide mais j'ai réussi à trouver et ça marche:

    Code:
    void TrailStops()
    {        
    double trailing_stop1;
    double trailing_stop2;
    double ts;
    
    for (int i = OrdersTotal()-1; i >= 0; i --) // on parcourt tous les ordres
    {
       OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() == Symbol())
       {
          if (OrderType() == OP_BUY) // trailing stop pour un ordre d’achat
          {
             trailing_stop1=(OrderOpenPrice()-stopInitial);
             ts = Bid-trailing_stop1; // calcul trailing stop
             if (OrderStopLoss()<ts) // test si nouveau plus haut
    OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,Green);
          }
          if (OrderType() == OP_SELL) // trailing stop pour un ordre de vente
          {
             trailing_stop2=(stopInitial-OrderOpenPrice());
             ts = Ask+trailing_stop2; // calcul trailing stop
             if (OrderStopLoss()>ts) // test si nouveau plus bas
    OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,Red);
          }
       }          
    }
    }
    Je *siflotte* , très sympa, prochaine fois je me passerais de ton aide
    "Même un voyage de mille kilomètres commence par un premier pas"

  6. #6
    Membre Star remjie est actif et passionnant Avatar de remjie
    Date d'inscription
    January 2011
    Localisation
    Rhone
    Messages
    279
    Pouvoir de réputation
    10

    Citation Envoyé par CHNOPE Voir le message
    Je *siflotte* , très sympa, prochaine fois je me passerais de ton aide
    Content que tu ai trouvé.
    Et, désolé, ce n'était pas contre toi, j'étais seulement content de te proposer une solution qui marche, je n'imaginais pas que tu le prendrais mal.
    Mieux vaut ouvrir sa gueule et passer pour un con que la fermer et ne laisser aucun doute sur le sujet.

  7. #7
    Membre lvl 50 CHNOPE est sur la route de la réputation... Avatar de CHNOPE
    Date d'inscription
    January 2009
    Localisation
    Gard
    Messages
    65
    Pouvoir de réputation
    6

    Citation Envoyé par remjie Voir le message
    Content que tu ai trouvé.
    Et, désolé, ce n'était pas contre toi, j'étais seulement content de te proposer une solution qui marche, je n'imaginais pas que tu le prendrais mal.
    Mille excuses alors, c'est juste que ta suggestion est à double sens, je dois avoir l'esprit mal tourné... sans rancune.

    Bon Trades

    CHNOPE
    "Même un voyage de mille kilomètres commence par un premier pas"

Discussions similaires

  1. Les marchés limitent la casse
    Par Saxo Banque dans le forum Analyses Forex professionnelles
    Réponses: 0
    Dernier message: 07/06/2010, 19h20
  2. L'euro casse les 1.34$
    Par Saxo Banque dans le forum Analyses Forex professionnelles
    Réponses: 0
    Dernier message: 24/03/2010, 18h40
  3. Le CAC 40 Casse les 3800 points
    Par Saxo Banque dans le forum Analyses Forex professionnelles
    Réponses: 0
    Dernier message: 03/02/2010, 18h40
  4. Support cassé?
    Par photo118218 dans le forum Novice sur le Forex
    Réponses: 4
    Dernier message: 07/11/2008, 07h57
  5. USD/JPY - Le cours casse actuellement sa résistance des 104.80
    Par Saxo Banque dans le forum Analyses Forex professionnelles
    Réponses: 0
    Dernier message: 02/05/2008, 09h23

Ajouter aux Favoris | Plan du site | Archives | Forex | Contact