StatusMailandAlertOnOrderClose

Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of closed ordersChecks for the total of open orders
Miscellaneous
It sends emails
0 Views
0 Downloads
0 Favorites
StatusMailandAlertOnOrderClose
//+------------------------------------------------------------------+
//|                          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