Not closing correctly, anyone know why?

 
else
bool found = false;
for(int k=OrdersHistoryTotal()-1;k>=0;k--)
{
if((OrderSelect(k,SELECT_BY_POS,MODE_HISTORY))&&(OrderMagicNumber()==MagicNumber150000))
{
found = true;
break;
}
}
if(found == false)
{
for(k=OrdersTotal()-1;k>=0;k--)
{
if((OrderSelect(k,SELECT_BY_POS,MODE_TRADES))&&(OrderMagicNumber()==MagicNumber150001)&& OrderType()==OP_SELL || OrderType()==OP_BUY)
{
if(OrderProfit() >= 50)
{
if((OrderSelect(k,SELECT_BY_POS,MODE_TRADES))&&(OrderMagicNumber()==MagicNumber150000) && OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,Pink);
}
if((OrderSelect(k,SELECT_BY_POS,MODE_TRADES))&&(OrderMagicNumber()==MagicNumber150000) && OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,Pink);
}
if((OrderSelect(k,SELECT_BY_POS,MODE_TRADES))&&(OrderMagicNumber()==MagicNumber150001) && OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,Pink);
}
if((OrderSelect(k,SELECT_BY_POS,MODE_TRADES))&&(OrderMagicNumber()==MagicNumber150001) && OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,Pink);
}
if((OrderSelect(k,SELECT_BY_POS,MODE_TRADES))&&(OrderMagicNumber()==MagicNumber150002))
{
OrderDelete(OrderTicket());
}
}

}

IN THE ABOVE CODE, THE "FIRST ORDER" (AS DENOTED BY MAGICNUMBER 150000), IS NOT CLOSING. DURING TRADING CONDITIONS WHERE BOTH THE ORDERS ARE ON AND FILLED, THIS CODE IS CLOSING THE SECOND ORDER (MAGICNUMBER 150001) AND IT IS ALSO MANAGING TO DELETE THE THIRD ORDER(MAGICNUMBER150002) AS THE CODE IS REQUESTING BUT THE SECOND ORDER IS BEING OVERLOOKED. THE ONLY POSSIBLE EXPLANATION I CAN COME UP WITH IS THAT THE CONDITION THAT FORCES THIS PIECE IS "IF ORDERPROFIT >=50" SO IF THAT IS NOT TRUE FOR THE FIRST ORDER, WILL IT NOT "TOUCH" THAT ONE AND CLOSE IT? BASICALLY WHAT I AM TRYING TO DO HERE IS CLOSE BOTH OPEN ORDERS AND WHEN THE SECOND ONE IS AROUND +$50, THAT MEANS THEY NET OUT TO ABOUT EVEN. I CANNOT USE ACCOUNTPROFIT AS I HAVE OTHER EA'S RUNNING INDEPENDENTLY OF THIS ONE.


COULD SOMEONE PLEASE LEND A HELPING HAND IN SUGGESTING HOW I CAN CHANGE THIS TO CLOSE BOTH OPEN ORDERS, NOT JUST THE SECOND OPEN ONE? I KNOW THIS IS PROBABLY TRIVIAL FOR SOME-I AM NOT A COMPUTER PROGRAMMER-JUST KNOW ENOUGH OF THIS STUFF TO BE DANGEROUS! :)

THANK YOU EVERYONE AS ALWAYS FOR THE WONDERFUL FORUM! DANIEL


COULD I USE THE FOLLOWING SOMEHOW?


for(i=OrdersTotal()-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

int type = OrderType();

bool result = false;

switch(type)

{

//Close opened positions

case OP_BUY : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,Pink);

break;

case OP_SELL : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,Pink);

break;

case OP_BUYLIMIT : result = OrderDelete( OrderTicket() );

break;

case OP_SELLLIMIT : result = OrderDelete( OrderTicket() );

break;

case OP_BUYSTOP : result = OrderDelete( OrderTicket() );

break;

case OP_SELLSTOP : result = OrderDelete( OrderTicket() );

}

}