//+------------------------------------------------------------------+
//|                          StatusMailandAlertOnOrderClose.mq4      |
//|                                              Guido Mittmann      |
//|                                           gm4poker@wtnet.de      |
//|                                                                  |
//+------------------------------------------------------------------+
//This EA is made with many help thrue http://www.codesbase.mql4.com
//and the WWW.
//The advantage of an external EA to send the emails  is,
//he tells you all closed order, 
//no matter how many different EA you have run in an MT4-Cient.
extern bool SEND_REPORT_EMAIL       = false;
extern string MinuteOptions         = "--choose somewhat between 10 and 58--";
extern int STATUS_EMAIL_MINUTE     =    55;
extern bool SEND_CLOSED_EMAIL       = false;
extern string StartBalanceOptions   = "--tell him here your startbalance--";
extern int StartBalance             =   500;
datetime lastClose;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
      for(int pos=0; pos < OrdersHistoryTotal(); pos++) 
         if (OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY) &&  OrderCloseTime()  > lastClose)                
       { 
       lastClose = OrderCloseTime();
       }
   
   
   start();
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
//--- Status EMail Settings 
   int flagg;
   if (Minute() < STATUS_EMAIL_MINUTE) flagg=0;{
   if (Minute() == STATUS_EMAIL_MINUTE && SEND_REPORT_EMAIL==true && (DayOfWeek()!=0 || DayOfWeek()!=6) && flagg==0)
      {
      string AccBal = DoubleToStr(AccountBalance(),2);
      double Profit = (AccountBalance()-StartBalance);
      string Profitdec = DoubleToStr(Profit,2);
      double ProfPercent = (AccountBalance()*100/StartBalance-100);
      string Percent = DoubleToStr(ProfPercent,2);
      SendMail("Your EA CashFlowReport ","Your account balance is " + AccBal+" "+AccountCurrency()+". "+"Since you started with  "+StartBalance+" "+AccountCurrency()+" I have already earned \n \n --->> " + Profitdec+" "+AccountCurrency()+" <<--- \n \n for you, which is  "+Percent+" %! not bad right? \n"+" Currently I have  "+OrdersTotal()+" open order.\n");
      if (Minute()>STATUS_EMAIL_MINUTE) flagg=1;
      }
      Sleep(60000);
      RefreshRates();
      } 
      
//--- Closed Orders EMail Settings     
      int flag=0;
      string ordertyp;
      string EAType;
      double x=OrderOpenPrice(),y=OrderClosePrice(),pips;
      pips =y - x;
      pips =pips * 10000;
//      if(pips < 0)pips = - pips;
      if(OrderType()==0)ordertyp="BUY";
      if(OrderType()==1)ordertyp="SELL";
      
   for(int pos=0; pos < OrdersHistoryTotal(); pos++)
    if (OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
      {   
      if (OrderCloseTime()    > lastClose )flag=1;
      }             
         if (flag == 1 && SEND_CLOSED_EMAIL==true)
         { 
        SendMail("CLOSED ORDER! Profit: "+DoubleToStr(OrderProfit(),2)+", Balance: "+DoubleToStr(AccountBalance(),2)+", eq: "+DoubleToStr(AccountEquity(),2)+"",
      "Symbol: "+Symbol()+"  "+ordertyp+"  "+(OrderMagicNumber())+" \n"+
      "Comment: "+OrderComment()+" \n"+ 
      "Ticket#: "+OrderTicket()+" \n"+ 
      "Lot: "+DoubleToStr(OrderLots(),2)+" \n"+ 
      "OpenTime: "+TimeToStr(OrderOpenTime())+" \n"+
      "Close Time: "+TimeToStr(OrderCloseTime())+" \n"+
      "Open: "+DoubleToStr(OrderOpenPrice(),5)+" \n"+
      "Close: "+DoubleToStr(OrderClosePrice(),5)+" \n"+
      "Profit: "+DoubleToStr(OrderProfit(),2)+" \n"+
      "Pips: "+DoubleToStr(pips,1)+" \n\n"+
      "Balance: "+DoubleToStr(AccountBalance(),2)+" \n"+
      "Used Margin: "+DoubleToStr(AccountMargin(),2)+" \n"+
      "Free Margin: "+DoubleToStr(AccountFreeMargin(),2)+" \n"+
      "Equity: "+DoubleToStr(AccountEquity(),2)+" \n"+
      "Open Orders: "+DoubleToStr(OrdersTotal(),0)+" \n\n");
      lastClose = OrderCloseTime();
      flag = 0;
      }
   
      return(0);
 }
//----
  
//+------------------------------------------------------------------+
            
Comments