if( OrdersTotal() >= 8 ) if( OrderSelect(0, SELECT_BY_POS) ) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3);
No, it's incorrect.
1. Check number of open orders.
2. If number greater then 8 --> find oldest order and remember its ticket.
3. Close order with this ticket.
1. Check number of open orders.
2. If number greater then 8 --> find oldest order and remember its ticket.
3. Close order with this ticket.
fireflies:
if( OrdersTotal() >= 8 ) if( OrderSelect(0, SELECT_BY_POS) ) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3);
I want to close the oldest market order if there are >=8 market orders, but to ignore all the pending orders
extern int Magic = ... //----- int BuyCnt = 0; int SellCnt = 0; int cnt = OrdersTotal(); for (int i=0; i < cnt; i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != Magic) continue; int type = OrderType(); if (type == OP_BUY) BuyCnt++; if (type == OP_SELL) SellCnt++; } if (BuyCnt+SellCnt < 8) return; //----- datetime tm = 0; int ticket = -1; cnt = OrdersTotal(); for (i=0; i < cnt; i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != Magic) continue; type = OrderType(); if (type == OP_BUY || type == OP_SELL) { if (OrderOpenTime() > tm) { tm = OrderOpenTime(); ticket = OrderTicket(); } } } //----- if (ticket != -1) OrderClose(ticket, ...
RickD:
extern int Magic = ... //----- int BuyCnt = 0; int SellCnt = 0; int cnt = OrdersTotal(); for (int i=0; i < cnt; i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != Magic) continue; int type = OrderType(); if (type == OP_BUY) BuyCnt++; if (type == OP_SELL) SellCnt++; } if (BuyCnt+SellCnt < 8) return; //----- datetime tm = 0; int ticket = -1; cnt = OrdersTotal(); for (i=0; i < cnt; i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != Magic) continue; type = OrderType(); if (type == OP_BUY || type == OP_SELL) { if (OrderOpenTime() > tm) { tm = OrderOpenTime(); ticket = OrderTicket(); } } } //----- if (ticket != -1) OrderClose(ticket, ...
What to put here
extern int Magic = ...
and here
if (ticket != -1) OrderClose(ticket, ...
?
hopokuk:
What to put here
extern int Magic = ...
extern int Magic = ...
12345 for example.
RTFM
RickD:
12345 for example.
RTFM
Okay it works thanks
hopokuk:
What to put here
extern int Magic = ...
extern int Magic = ...
12345 for example.
RTFM
int close_trade_ticket; int start() { if (closeTrade(8, 5, 0, 0)) Print ("Order closed with ticket number "+close_trade_ticket); else if (close_trade_ticket > 0) Print ("Unsuccessful closing order with ticket number "+close_trade_ticket); return(0); } bool closeTrade (int oldest, int times_to_retry, int type, int Magic) { int opened_trades,count,ticket_time=TimeCurrent(); close_trade_ticket=0; bool result; double price; for (int i=0; i < OrdersTotal(); i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) { opened_trades++; if (OrderOpenTime() < ticket_time) { close_trade_ticket=OrderTicket(); ticket_time=OrderOpenTime(); { } } } if (opened_trades>=oldest) { if(!IsTesting()) price=MarketInfo(Symbol(),9+OrderType()); else { if (OrderType() == OP_BUY) price=Bid; else price=Ask; } while(!result) { result=OrderClose ( close_trade_ticket, OrderLots(), price, 0); count++; if (count >= times_to_retry) break; } } else close_trade_ticket=0; return(result); }
Rosh:
No, it's incorrect.
1. Check number of open orders.
2. If number greater then 8 --> find oldest order and remember its ticket.
3. Close order with this ticket.
Thanks Rosh.No, it's incorrect.
1. Check number of open orders.
2. If number greater then 8 --> find oldest order and remember its ticket.
3. Close order with this ticket.
So you're saying that the orders in the pool are not stored in any particular order?
How about the ticket number. Is it monotonic increasing or just some random but unique number?
Tickets numbers are monotonic increasing and always are unique.
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
IF NUMBER OF OPEN TRADES = 8 THEN CLOSE THE OLDEST OPEN TRADE
thanks