Comment trades profit ( array )

 

hi all

This is a simple EA which will open 4 trades,

2 buy orders & 2 sell orders.


The EA will save the ticket numbers for the buy orders in array ( BuyA [ ] ),

and the same for sell orders in ( SellA [ ] ).


The problem is when I try Comment/Print the profits for BuyA [ ] & SellA[ ]

it is only working for BuyA[ ]

but not for SellA [ ].


I attached my EA if needed.

Can you please help

thanks in advance.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
Comment (
         "Buy Profit = ", BuyPROFIT(), "\n"
         "Sell Profit = ",  SellPROFIT()   , "\n"
        );
   
  
////////////////////////////////////////////////////
if ( num == 0 )
{
    ticket = OrderSend ( Symbol() , OP_BUY , Lot , Ask , 3 , 0 , 0 , NULL , MagicNo , 0 , clrBlue );
     ArrayResize ( BuyA , 1 );
     ArrayFill ( BuyA , 0 , 1 ,LastTicket() );
    ticket = OrderSend ( Symbol() , OP_BUY , Lot , Ask , 3 , 0 , 0 , NULL , MagicNo , 0 , clrBlue );
     ArrayResize ( BuyA , 2 );
     ArrayFill ( BuyA , 1 , 1 ,LastTicket() ); 

 num = 1 ;
}
////////////////////////////////////////////////////
if ( num == 1 )
{
    ticket = OrderSend ( Symbol() , OP_SELL ,  Lot   , Bid , 3 , 0 , 0 , NULL , MagicNo , 0 , clrRed );
      ArrayResize ( SellA , 1 );
      ArrayFill ( SellA , 0 , 1 ,LastTicket() );
    ticket = OrderSend ( Symbol() , OP_SELL ,  Lot   , Bid , 3 , 0 , 0 , NULL , MagicNo , 0 , clrRed );
      ArrayResize ( SellA , 2 );
      ArrayFill ( SellA , 1 , 1 ,LastTicket() );
 num = 2 ;
}
  
   
} /////////////////////// End OnTick


//+---------------------------------------------------------------------+
//| Return BuyPROFIT Orders                                             |
//+---------------------------------------------------------------------+
double BuyPROFIT() 
{
 double pts=0;
 for(int i=0;i<ArraySize(BuyA);i++)
 {
  bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

  string   sy=OrderSymbol();
  int      tk=OrderTicket(),
           mn=OrderMagicNumber();
  double   pt=OrderProfit(),
           sw=OrderSwap(),
           cm=OrderCommission(); 
  if(sy==Symbol()&&mn==MagicNo)
  {
   if(tk==BuyA[i])pts+=pt+sw+cm;
  } 
 }  
 return(pts);
}
//+---------------------------------------------------------------------+
//| Return SellPROFIT Orders                                            |
//+---------------------------------------------------------------------+
double SellPROFIT() 
{
 double pts=0;
 for(int i=0;i< ArraySize(SellA);i++) 
 {
  bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
  string   sy=OrderSymbol();
  int      tk=OrderTicket(),
           mn=OrderMagicNumber();
  double   pt=OrderProfit(),
           sw=OrderSwap(),
           cm=OrderCommission(); 
  if(sy==Symbol()&&mn==MagicNo)
  {
   if(tk==SellA[i])pts+=pt+sw+cm;
  } 
 }  
 return(pts);
}



//+------------------------------------------------------------------+
//| GET LAST TICKET NUMBER                                 |
//+------------------------------------------------------------------+
   int LastTicket(int type=-1)
{
 for(int i=OrdersTotal()-1;i>=0;i--)
     //       
 {
  bool   select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
  string sy=OrderSymbol();
  int    mn=OrderMagicNumber(),
         ty=OrderType(),
         tk=OrderTicket();          
  if(sy==Symbol()&&mn==MagicNo&&(ty==type||type==-1))
  {
   return(tk);
  }
 }
 return(0);
}

 
In future please post in the correct section
I will move your topic to the MQL4 and Metatrader 4 section.

Reason: