Comment puis-je régler le TP de moins de 5 pips ? - page 4

 
Est-ce correct ? Il ne fermera que les ordres des 100 dernières minutes.
if(Bid>CloseforBuy)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



if(Ask<CloseforSell)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }
 
ats:
Est-ce correct ? Il ne fermera que les ordres des 100 dernières minutes.

Presque, TimeCurrent() donne une datetime représentant l'heure du serveur du dernier tick . . .

Note : type datetime (nombre entier représentant le nombre de secondes écoulées depuis minuit, le 1er janvier 1970).

Vous devez donc vérifier que...

TimeCurrent()-OrderOpenTime() <=

100 minutes . . . . ou (100 * 60) secondes

 

Merci beaucoup pour votre aide !

Bon commerce !

 

Bonjour !

J'ai essayé de modifier l'EA mais cela ne fonctionne pas correctement. Avez-vous une idée de l'origine de l'erreur ?

Je vous remercie

extern double TPforBuys=1;
extern double TPforSells=1;
extern double TimeForEA=120;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{


double TPbuy = TPforBuys / 10000;
double TPB=OrderOpenPrice()+ TPbuy;

// Close Buys
if(Bid>TPB)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60)  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



double TPsell = TPforSells / 10000;
double TPS=OrderOpenPrice()- TPsell;



// Close Sells
if(Ask<TPS)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }


return(0);
}
 

Essayez de changer pour ceci et voyez si cela "fonctionne correctement" ...

TimeCurrent()- OrderOpenTime() >= (TimeForEA * 60) // time to close
 

C'est exact ! L'EA ferme seulement les ordres qui ne sont pas plus vieux que 2 heures ! Le problème est qu'il ne ferme pas correctement tous les ordres après 1 pip ! Mais je ne sais pas où est l'erreur !

Je vous remercie

 
ats:

C'est exact ! L'EA ferme seulement les ordres qui ne sont pas plus vieux que 2 heures ! Le problème est qu'il ne ferme pas correctement tous les ordres après 1 pip ! Mais je ne sais pas où est l'erreur !

Je vous remercie

Donc il fonctionne comme vous le souhaitez, ai-je raison ? Parce que je n'ai aucune idée de ce que vous entendez par "fonctionner correctement" et je suis assez paresseux pour ne pas lire 4 pages de réponses et de codes.

Donc en fait, je ne sais pas exactement pourquoi je vous ai donné cette réponse :)

 
onewithzachy:

Donc en fait, je ne sais pas exactement pourquoi je vous ai donné cette réponse :)

C'est agréable de voir de l'honnêteté sur Internet pour changer :-)
 
onewithzachy:

Donc, cela fonctionne comme vous le souhaitez, ai-je raison ? Parce que je n'ai aucune idée de ce que vous entendez par "fonctionner correctement" et je suis assez paresseux pour ne pas lire 4 pages de réponses et de codes.

Donc en fait, je ne sais pas exactement pourquoi je vous ai donné cette réponse :)

Pas de problème ! Je te remercie !
 

Quand vous faites ça...

double TPB=OrderOpenPrice()+ TPbuy;

. ... quel ordre utilisez-vous le prix d'ouverture de ? ? OrderOpenPrice() Note : " L'ordre doit d'abord être sélectionné par la fonctionOrderSelect()."

Raison: