Come posso impostare il TP a meno di 5 pip? - pagina 4

 
È corretto? Chiuderà solo gli ordini degli ultimi 100 minuti
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:
È corretto? Chiuderà solo gli ordini degli ultimi 100 minuti

Quasi, TimeCurrent() dà un datetime che rappresenta il tempo del server dell'ultimo tick . . .

Nota: tipo datetime (intero che rappresenta la quantità di secondi trascorsi dalla mezzanotte del 1° gennaio 1970).

Quindi è necessario controllare che . . .

TimeCurrent()-OrderOpenTime() <=

100 minuti . . . . o (100 * 60) secondi

 

Grazie mille per il vostro aiuto!

Buon trading!

 

Ciao!

Ho provato a modificare l'EA ma non funziona correttamente. Hai idea di dove sia l'errore?

Grazie a voi

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);
}
 

Prova a passare a questo e vedi se questo "funziona bene" ...

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

Questo è corretto! L'EA chiude solo gli ordini che non sono più vecchi di 2 ore! Il problema è che non chiude correttamente tutti gli ordini dopo 1 pip! Ma non so dove sia l'errore!

Grazie per l'aiuto

 
ats:

Questo è corretto! L'EA chiude solo gli ordini che non sono più vecchi di 2 ore! Il problema è che non chiude correttamente tutti gli ordini dopo 1 pip! Ma non so dove sia l'errore!

Grazie

Quindi funziona come vuoi tu, ho ragione? Perché non ho idea di cosa intendi per "funzionare correttamente" e sono abbastanza pigro da non leggere 4 pagine di risposte e codici.

Quindi, in realtà, non so esattamente perché ti ho dato questa risposta :)

 
onewithzachy:

Quindi, in realtà, non so esattamente perché ti ho dato quella risposta :)

È bello vedere l'onestà su Internet per un cambiamento :-)
 
onewithzachy:

Quindi funziona come vuoi tu, ho ragione? Perché non ho idea di cosa intendi per "funzionare correttamente" e sono abbastanza pigro e quindi non leggo 4 pagine di risposte e codici.

Quindi, in realtà, non so esattamente perché ti ho dato questa risposta :)

Nessun problema! Grazie!
 

Quando fai questo. . .

double TPB=OrderOpenPrice()+ TPbuy;

. . . quale ordine stai usando il prezzo di apertura di ?? OrderOpenPrice() Nota: "L'ordine deve essere prima selezionato dalla funzioneOrderSelect() ".

Motivazione: