You will have to find the first or the last order in the symbol & then close it if you have more than one order in the same symbol.
Here is my example code for you:
int i = 0, totalOrders = OrdersTotal(), myOrders = 0; int firstOrderTicket, lastOrderTicket; for(; i < totalOrders; i++){ if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if(OrderSymbol() == Symbol()){ firstOrderTicket = OrderTicket(); lastOrderTicket = OrderTicket(); myOrders ++; } } } if(myOrders == 0){ return;//Nothing to do next if have no order. } if(myOrders > 1){ for(i = 0; i < totalOrders; i++){ if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if(OrderSymbol() == Symbol()){ if(OrderTicket() > lastOrderTicket){ lastOrderTicket = OrderTicket(); } if(OrderTicket() < firstOrderTicket){ firstOrderTicket = OrderTicket(); } } } } } //Now you have clearly first order & last order of that symbol. You can do anything as you want. //..
Due you may have both buying & selling positions on the symbol, so you can add more condition in the for loop to define everything more clearly.
int firstSellOrderTicket, lastSellOrderTicket;//Define selling order ticket. if(OrderSymbol() == Symbol() && OrderType() == OP_SELL)//Add more condition in if statement.
Have this code to close first ticket when orderstotal is higher than 1:
As the loop is forward counter it closes first order with no mistake, this way I close first open at reversal signal.
Now trying to do the same but when BuyOrders==1&&SellOrders==1.
It's closing last order continuously. I'm trying to do this for if it's more than 1 order in some direction then I want it to close at profit by averaging.
You are not selecting an order in either of your codes so your codes will close whichever was the last order selected.

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Have this code to close first ticket when orderstotal is higher than 1:
As the loop is forward counter it closes first order with no mistake, this way I close first open at reversal signal.
Now trying to do the same but when BuyOrders==1&&SellOrders==1.
It's closing last order continuously. I'm trying to do this for if it's more than 1 order in some direction then I want it to close at profit by averaging.
So the main problem is why it's closing last open this wayand don't actually know. Any idea?