Can you help please I'm getting some pending orders not deleting (usually when a trade is initiated on opposite side)?
On each bar I'm trying to close all pending orders...
Code: Select all
if(Volume[0]==1) newbar=true;
// close previous pending orders
ClosePending(NULL);
Code: Select all
void ClosePending(int MagicNumber)
{
if(OrderType()== OP_BUYSTOP || OrderType()==OP_SELLSTOP ){OrderDelete(OrderTicket());}
}
Also not sure how to call the function when it is removed, from what I understand it would simply be ClosePending(); ?
I did try counting the pending orders to determine the magic number...
Code: Select all
int CountPending(int MagicNumber)
{
int count=0;
int trade;
int trades=OrdersTotal();
for(trade=0;trade<trades;trade++)
{
OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber )
continue;
if(OrderType()==OP_BUYSTOP || OrderType()==OP_BUYSTOP)
count++;
}//for
return(count);
}
Code: Select all
int i = OrdersTotal();
while( CountShorts(MagicNumber) != 0 && i >= 0 )
{
....
}
Stefan
