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);
}
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
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.
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...
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.
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
poi metterò se ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Clo se la posizione
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.
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.
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
va nel secondo
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
ad un diverso iteratore come
e allo stesso modo, sostituire pos al nuovo iteratore (in questo caso, a) in tutta la logica del secondo ciclo SOLO.
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...