Does anyone know these routines close the wrong orders ?
//+------------------------------------------------------------------+
//| expert CheckTrades function |
//+------------------------------------------------------------------+
void CheckTrades()
{
for(int c = 0; c < OrdersTotal(); c++)
{
if(OrderSelect(c,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber() == MagicNo)
{
if(TradeProfit(OrderSymbol()) > (((AccountBalance()*ProfitPerTrade)/100)))
{
CloseTrades(OrderSymbol());
}
}
}
}
//+------------------------------------------------------------------+
//| expert TradeProfit() function |
//+------------------------------------------------------------------+
double TradeProfit(string symbol)
{
double Profit = 0;
for(int d = 0; d < OrdersTotal(); d++)
{
if(OrderSelect(d,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber() == MagicNo)
{
if(OrderSymbol() == symbol && (OrderType() == 0 || OrderType() == 1))
{
Profit += OrderProfit() + OrderSwap() + OrderCommission();
}
}
}
return(Profit);
}
//+------------------------------------------------------------------+
//| expert CloseTrades function |
//+------------------------------------------------------------------+
void CloseTrades(string symbol)
{
for(int e = OrdersTotal() - 1; e >= 0; e--)
{
if(OrderSelect(e,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber() == MagicNo)
{
if(OrderSymbol() == symbol && (OrderType() == 0 || OrderType() == 1))
{
OrderCloseReliable(OrderTicket(),OrderLots(),OrderClosePrice(),30,CLR_NONE);
}
if(OrderSymbol() == symbol && (OrderType() != 0 && OrderType() != 1))
{
OrderDeleteReliable(OrderTicket());
}
}
}
}
//+------------------------------------------------------------------+
//| expert CheckTrades function |
//+------------------------------------------------------------------+
void CheckTrades()
{
for(int c = 0; c < OrdersTotal(); c++)
{
if(OrderSelect(c,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber() == MagicNo)
{
if(TradeProfit(OrderSymbol()) > (((AccountBalance()*ProfitPerTrade)/100)))
{
CloseTrades(OrderSymbol());
}
}
}
}
//+------------------------------------------------------------------+
//| expert TradeProfit() function |
//+------------------------------------------------------------------+
double TradeProfit(string symbol)
{
double Profit = 0;
for(int d = 0; d < OrdersTotal(); d++)
{
if(OrderSelect(d,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber() == MagicNo)
{
if(OrderSymbol() == symbol && (OrderType() == 0 || OrderType() == 1))
{
Profit += OrderProfit() + OrderSwap() + OrderCommission();
}
}
}
return(Profit);
}
//+------------------------------------------------------------------+
//| expert CloseTrades function |
//+------------------------------------------------------------------+
void CloseTrades(string symbol)
{
for(int e = OrdersTotal() - 1; e >= 0; e--)
{
if(OrderSelect(e,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber() == MagicNo)
{
if(OrderSymbol() == symbol && (OrderType() == 0 || OrderType() == 1))
{
OrderCloseReliable(OrderTicket(),OrderLots(),OrderClosePrice(),30,CLR_NONE);
}
if(OrderSymbol() == symbol && (OrderType() != 0 && OrderType() != 1))
{
OrderDeleteReliable(OrderTicket());
}
}
}
}