come posso ottenere il più alto dopo che orderopenprice è stato aperto. - pagina 3

 

Allora perché stai restituendo il numero del biglietto? Leggi il codice che stai copiando e incollando, capiscilo, impara...

L'ho usato per fare quanto segue

if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS)==true)
{ ordine di acquisto= OrderOpenPrice();}

allora se ( (( ordine di acquisto+ ordine di vendita)/2))<MarketInfo("EURUSD",MODE_BID) )

chiudere la posizione

 
Hand:


if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS)==true)


una piccola modifica con il vostro permesso

if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_TICKET)==true)
 

Caro qjol

grazie mille per il tuo aiuto concreto. ma non sono ancora sicuro se funzionerà o meno (penso che le mie funzioni siano un po' difficili). vediamo

prima funzione :

funzione per ottenere e mantenere il ultimo ordine prezzo aperto solo per l'acquisto

double LastOpenForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; double orderforbuy;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_BUY )
{ orderforbuy = OrderOpenprice ();
lastTicket = OrderTicket (); }
return (orderforbuy);}

if(OrderSelect(LastOpenForBuy(), SELECT_BY_TICKET)==true)
{ order for buy= OrderOpenPrice();}

// then something like// // if ( (( order for buy+ order for sell)/2))<MarketInfo("EURUSD",MODE_BID) )

//close the position

     Quello di cui ho bisogno è: 1- funzione per ottenere e mantenere il ultimo prezzo di apertura dell'ordine solo per l'acquisto 
2- funzione per ottenere e mantenere l'ultimo prezzo aperto dell'ordine per vendere
3- funzione per ottenere e mantenere l'ultimo prezzo di chiusura dell'ordine sia in acquisto che in vendita
4- funzione per ottenere e mantenere il precedente prezzo di chiusura prima dell'ultimo ordine di chiusura per comprare o vendere.
 

OK, prova questo . . .

Farà 1 & 2 . . .

LastOpenPrice(OP_BUY) per il prezzo aperto dell'ultimo acquisto.

LastOpenPrice(OP_SELL) per il prezzo aperto dell'ultima vendita.

double LastOpenPrice(int  OrderType)
   { 
 
   double OpenPrice;                         

   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() == OrderType )
         {
         OpenPrice = OrderOpenprice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}
 

E questo. . . .

per 3 . . .

double LastClosePrice()
   { 
 
   double ClosePrice;                         

   for ( int pos = OrdersHistoryTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY)            // Only my CLOSED  orders 
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() < OP_BUYLIMIT )
         {
         ClosePrice = OrderCloseprice();
         break;
         }
   return (ClosePrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}
 
Non sono sicuro di capire cosa intendi per n. 4.
 

raptor

Penso che ti manchi qualcosa se ha più di 1 ordine sulla stessa coppia (e la stessa magia) quindi penso che sia meglio così

double LastOpenPrice(int OrderType)
   { 
 
   double OpenPrice;                         
   datetime lastOpen; // First line added

   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() == OrderType
      && OrderOpenTime() > lastOpen) // Second line added
         {
         OpenPrice = OrderOpenprice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

la tua opinione

 
Se fai il conto alla rovescia, il primo ordine che corrisponde al numero e al simbolo magico sarà l'ultimo piazzato per l'EA e il simbolo in questione, no?
 
Non sono sicuro
 
qjol:

raptor

Penso che vi manchi qualcosa se ha più di 1 ordine sulla stessa coppia (e la stessa magia) quindi penso che sia meglio così

la tua opinione


ragazzi,

Grazie mille,

ti spiego perché voglio utilizzare LastOpenPrice(OP_BUY) e LastOpenPrice(OP_SELL) perché voglio utilizzarli in alcune condizioni come

if ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0.0090 // per questo motivo ho bisogno di mantenere l'ultimo ordine aperto per comprare e l'ultimo ordine aperto per vendere, quindi ho bisogno di un ultimo ordine separato uno per comprare e l'altro per vendere.

-----

per double LastClosePrice() // posso usare if ( OrderType() == OP_BUY || OP_SELL) invece *** OrderType() < OP_BUYLIMIT*** per ottenere l'ultima chiusura sia in acquisto che in vendita.

----

per la funzione numero 4:

4- funzione per ottenere e mantenere il precedente prezzo di chiusura prima dell'ultimo ordine di chiusura whatover buy o sell. // voglio ottenere l'ordine chiuso prima dell'ultimo ordine chiuso , sia in acquisto che in vendita .

grazie