ouvrir des ordres avec un écart de 10pip - page 6

 
WHRoeder:
  1. J'ai demandé le code qui trouve le prix ouvert le plus élevé. Est-ce le cas ? En présence d'un slippage ?
  2. Que pensez-vous que cela signifie ?
  3. Je vous ai demandé de montrer le code qui teste si l'offre est 10 pips au-dessus de la dernière ouverture. Pourquoi ouvrir une vente quand le marché est 10 points au-dessus de n'importe quel ordre (pas le plus haut).
  4. Décidez-vous, vous voulez 10 points ou 10 pips.





Oui, je veux 10 pips.

 
dan100:

et aussi vérifier cette condition que j'ai ajoutée si j'ai raison..............

 double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
         RefreshRates();
          if (Bid>=highest_open_price+10*Point)
   highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);


     }

S'il vous plaît, ne postez pas de code avec un } errant

cela prête à confusion

Essayez votre EA dans le testeur de stratégie et vous verrez si vous avez raison ou non.


 
GumRai:

} -- WHRoeder l'a signalé et je l'ai corrigé, merci de l'avoir noté.



Je pense que WHRoeder: a raison sur le point et les pips, maintenant que le haut est atteint, je pense que les pips devraient être considérés.


 

maintenant regardez comment j'ai calculé mes pips depuis que le haut est obtenu, j'ai raison ..........


 double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
        

 int look_pips=0; 
for(pos=OrdersTotal()-1; pos>=0; pos--) 

      highest_open_price=MathAbs(High[pos]-Low[pos])/Point;  //pips levels of the bar
      if (Bid>=highest_open_price && look_pips >=my_pips)
      Print("The last price movement more than ",my_pips); 
 
         RefreshRates();
   highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);



rappelez-vous que mes pips sont ajoutés dans extern double my_pips =10 ; et que je n'ai pas non plus calculé pour correspondre aux courtiers à 5 chiffres, je le ferai plus tard.

	          
 

Je n'ai aucune idée de ce que vous essayez de faire.

Vous obtenez la valeur dehighest_open_price dans la première boucle.

Ensuite, vous parcourez à nouveau les commandes en boucle et vous lui donnez une valeur différente.

pourquoi ?????

 
GumRai:

Je n'ai aucune idée de ce que vous essayez de faire.

Vous obtenez la valeur dehighest_open_price dans la première boucle.

Ensuite, vous parcourez à nouveau les ordres et vous lui donnez une valeur différente.

pourquoi ?????




Je suis désolé, c'est une erreur, j'étais sur le point de le réécrire avant de voir votre post. J'ai juste travaillé dessus pour le changer en valeur tick......

maintenant j'utilise la valeur tick pour calculer les pips.....



 double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
        
        
   double tickvalue = (MarketInfo(Symbol(),MODE_TICKVALUE));
   if(Digits == 5 || Digits == 3){
      tickvalue = tickvalue*10;
   }
       if (Bid>=highest_open_price + tickvalue*10)
      Print("The last price movement more than ",tickvalue); 
 
         RefreshRates();
   highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);




now to add my comment on this tick value. one thing i know is -----10pips is a movement of price upward or down to definite number point stored while 10tick 
is count of moving price without storing number

else 10tick can complete in 1 candle far below pips. while 10pips can complete in more than 20bars/candle or even 1bar/candle.

conclusion i dont think i got it right?


please point me through 



in addition double MYPIP= MarketInfo(Symbol(), MODE_DIGITS); can  it work on this case to get pip
 
        
   double PipDecimal=Point;
   if(Digits == 5 || Digits == 3)
      PipDecimal = PipDecimal*10;

   if (Bid>=highest_open_price + PipDecimal *10)
 
GumRai:


Merci pour vos corrections, j'apprécie.


maintenant j'ai joint le code ensemble le plus haut est obtenu les pips sont obtenus....

J'ai fait un back-test mais le résultat ne correspondait pas au code. Pourquoi ?

je dois encore ajouter au code ou est-ce parce que le marché a été fermé...merci

ou faut-il considérer le double PipDecimal = (MarketInfo(Symbol(),MODE_DIGITS)) ;.


 double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
        
   double PipDecimal=Point;
   if(Digits == 5 || Digits == 3)
      PipDecimal = PipDecimal*10;

   if (Bid>=highest_open_price + PipDecimal *10)
      Print("The last price movement more than ",PipDecimal); 
 
         RefreshRates();
   highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);





résultat
 
   if (Bid>=highest_open_price + PipDecimal *10)
      {
      Print("The last price movement more than ",PipDecimal); 
      RefreshRates();
      highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);
      }
Sans les accolades, une nouvelle transaction sera ouverte à chaque tic-tac.
 
GumRai:
Sans les accolades, une nouvelle transaction sera ouverte à chaque tick.


c'est génial ! ça a bien marché... parfaitement repéré.


mais le seul problème est que pendant le deuxième ordre, il continue à ouvrir plusieurs ordres après que le premier ordre ait été ouvert avec succès...

s'il vous plaît, y a-t-il quelque chose que j'ai mal fait ?