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
}
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
}
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(intOrderType)
{
double OpenPrice;
datetime lastOpen; // First line addedfor ( 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
}
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?
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 invendita.
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
if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS)==true)
una piccola modifica con il vostro permesso
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
2- funzione per ottenere e mantenere l'ultimo prezzo aperto dell'ordine per vendere3- funzione per ottenere e mantenere l'ultimo prezzo di chiusura dell'ordine sia in acquisto che in vendita4- 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.
E questo. . . .
per 3 . . .
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ì
la tua opinione
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