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

 
Comincia a imparare il codice e smetti di saltare il tuo thread.
 

Ho solo bisogno di un piccolo aiuto, poi tutto andrà bene (ho bisogno di sapere l'ultimo ordine di acquisto, l'ultimo ordine di vendita e l'ordine precedente per qualsiasi acquisto o vendita).

molte grazie per voi.

int LastOpenTicketForBuy(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    //for(int pos=0; pos<OrdersTotal(); i++) {
      OrderSelect(pos, SELECT_BY_POS);
    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.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_BUY
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}

int LastOpenTicketForSell(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    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.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_SELL
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}

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

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

ragazzi,

potreste dare un'occhiata e dirmi cosa c'è di sbagliato.


Ho bisogno di creare alcune funzioni per:
1- funzione per ottenere e mantenere l'ultimo prezzo di apertura dell'ordine per l'acquisto.
2- funzione per ottenere e mantenere l'ultimo prezzo di apertura dell'ordine per la vendita.
3- funzione per ottenere e mantenere l'ultimo ordine di chiusura per comprare o vendere

int LastOpenTicketForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ;
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 )
{ lastTime = OrderOpenTime ();
lastTicket = OrderTicket (); }
return (lastTicket);}

int LastOpenTicketForSell()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open.

int magi.number= 0 ;
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_SELL )
{ lastTime = OrderOpenTime (); 

lastTicket = OrderTicket (); }
return (lastTicket);}

int lastcloseorder()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; 
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.
&& OrderCloseTime () > lastTime
&& OrderType ()==OP_BUY||OP_SELL )
{ lastTime = OrderCloseTime (); lastTicket = OrderTicket (); }
return (lastTicket);}




poi metterò se ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Clo se la posizione

 
Secondo voi . . cosa fa return (lastTicket); ?
 

Vuoi dire che dovrei

1- mettere doppio LastOpenForBuy() invece int

2- mettere doppio orderforbuy poi return( orderforbuy )

In questo modo posso ottenere l'ultimo ordine 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);}

 
Hand:

Vuoi dire che dovrei

E' una domanda... Non voglio dire nient'altro che . . . qual è la tua risposta?

Se vuoi che ti aiuti, devi rispondere alla mia domanda... e "non lo so" non è una risposta accettabile. Pensaci un po'.

 

Secondo voi ... cosa fa return(lastTicket);?

Restituisce il numero del biglietto per l'ordine attualmente selezionato.

 
Hand:

Grazie WHRoeder,

Per il tuo aiuto reale. se ho bisogno di ottenere l'ultimo ordine di acquisto e l'ultimo ordine di vendita poi confrontarli facendo :

if ( l'ultimo ordineopenforbuy == OOTlastest )

{ fare qualcosa }

else

{ } ....... è il seguente codice funzionerà.

funziona davvero???

primo ciclo

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

va nel secondo

 for(pos--; pos >= 0 ; pos--) if (

pos decrementa fino a zero. il secondo ciclo finisce --> salta indietro al primo, e il primo ciclo non sa dove pos aveva lasciato dall'ultima volta. è probabile che pos = zero.

 

questo codice potrebbe funzionare... basta cambiare una 1 cosa:

la seconda istruzione for

for(pos--; pos >= 0 ; pos--) if (

ad un diverso iteratore come

for(int a=pos--; a>=0 ; a--) if(// abort the use of pos again and introduce a new iterator, a

e allo stesso modo, sostituire pos al nuovo iteratore (in questo caso, a) in tutta la logica del secondo ciclo SOLO.

 
Hand:

Secondo te . . cosa fa return(lastTicket);?

Restituisce il numero di ticket per l'ordine attualmente selezionato.

Hai detto . .

"Ho bisogno di creare alcune funzioni per:
1- funzione per ottenere e mantenere l'ultimo prezzo di apertura dell'ordine per l'acquisto.
2- funzione per ottenere e mantenere l'ultimo prezzo aperto per la vendita.

3- funzione per ottenere e mantenere l'ultimo ordine di chiusura, sia di acquisto che di vendita ".

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

Motivazione: