Filter for:
- OrderMagicNumber() if needed
- OrderSymbol() if needed
- Ordertype() == OP_BUY
- OrderOpenTime()
Ticket number is not needed.
thank you very much for your reply sir
for instance
there are 6 orders
1st buy
2nd sell
3rd buy
4th sell
5th buy
6th sell
i want to select the first and last buy only and not the second buy
look for the oldest and the newest ones.
Post your code if you want help.
double ABuy() { double Lots = 0; double OrderOPrice = 0; double LotsPrice = 0; double a = 0; for (int i = OrdersTotal() - 1; i >= 0; i--) { bool select = OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() == _Symbol && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber) { Alert( Lots = Lots + OrderLots()); LotsPrice = LotsPrice + OrderLots() * OrderOpenPrice(); } } if(Lots > 0) a = LotsPrice/Lots; return(a); }
//+------------------------------------------------------------------+ //---> find first buy //+------------------------------------------------------------------+ int FirstBuy() { datetime time=0; int ticket=-1; //--- find first buy for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==_Symbol) { if(OrderType()==OP_BUY) { if(OrderMagicNumber()==MagicNumber) { if(OrderOpenTime() > time || time==0) { time=OrderOpenTime(); ticket=OrderTicket(); } } } } } } return(ticket); } //+------------------------------------------------------------------+ //---> find last buy //+------------------------------------------------------------------+ int LastBuy() { datetime time=0; int ticket=-1; //--- find last buy for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==_Symbol) { if(OrderType()==OP_BUY) { if(OrderMagicNumber()==MagicNumber) { if(OrderOpenTime() < time || time==0) { time=OrderOpenTime(); ticket=OrderTicket(); } } } } } } return(ticket); } //+------------------------------------------------------------------+These return the ticket number so you can then use that to load the additional values.
double AveragePrice(int type)
{
double Lots = 0;
double OrderOPrice = 0;
double LotsPrice = 0;
double average = 0;
double Lots1 = 0;
double LotsPrice1 = 0;
double Lots2 = 0;
double LotsPrice2 = 0;
for (int i = OrdersTotal() - 1; i >= 0; i--)
{
bool select = OrderSelect(FirstBuy(), SELECT_BY_TICKET, MODE_HISTORY);
if(select && OrderSymbol() == _Symbol && OrderType() == type)// && OrderMagicNumber() == MagicNumber)
{
Lots1 = OrderLots();
LotsPrice1 = OrderLots() * OrderOpenPrice();
}
bool s = OrderSelect(LastBuy(), SELECT_BY_TICKET, MODE_HISTORY);
if(s && OrderSymbol() == _Symbol && OrderType() == type)// && OrderMagicNumber() == MagicNumber)
{
Lots2 = OrderLots();
LotsPrice2 = OrderLots() * OrderOpenPrice();
}
}
Lots = Lots1 + Lots2;
LotsPrice = LotsPrice1 + LotsPrice2;
if(Lots > 0) average = LotsPrice/Lots;
return(average);
}
{
double Lots = 0;
double OrderOPrice = 0;
double LotsPrice = 0;
double average = 0;
double Lots1 = 0;
double LotsPrice1 = 0;
double Lots2 = 0;
double LotsPrice2 = 0;
for (int i = OrdersTotal() - 1; i >= 0; i--)
{
bool select = OrderSelect(FirstBuy(), SELECT_BY_TICKET, MODE_HISTORY);
if(select && OrderSymbol() == _Symbol && OrderType() == type)// && OrderMagicNumber() == MagicNumber)
{
Lots1 = OrderLots();
LotsPrice1 = OrderLots() * OrderOpenPrice();
}
bool s = OrderSelect(LastBuy(), SELECT_BY_TICKET, MODE_HISTORY);
if(s && OrderSymbol() == _Symbol && OrderType() == type)// && OrderMagicNumber() == MagicNumber)
{
Lots2 = OrderLots();
LotsPrice2 = OrderLots() * OrderOpenPrice();
}
}
Lots = Lots1 + Lots2;
LotsPrice = LotsPrice1 + LotsPrice2;
if(Lots > 0) average = LotsPrice/Lots;
return(average);
}

You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
hey there
hope you find it in a good health
i am trying to select only the first and last buy order but i cant get the loop condition
i am using the ticket number but still not working
any help will be highly appreciated
Thanks