IcqNewOrderNotify

Author: detigeniev@ya.ru
Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of open ordersChecks for the total of closed orders
0 Views
0 Downloads
0 Favorites
IcqNewOrderNotify
//+------------------------------------------------------------------+
//|                                            IcqNewOrderNotify.mq4 |
//|                                                      deti_geniev |
//|                                                 (v.1) 13/09/2011 |
//+------------------------------------------------------------------+
#property copyright "detigeniev@ya.ru"
#property link      "detigeniev@ya.ru"

#include <DataExchange.mqh> 

extern string AccName="";
datetime LastTimeChecked;
datetime LastTime = 0;
bool res;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
LastTimeChecked = TimeCurrent();

_icqmessage[0]= "Îïîâåùåíèÿ ïî ICQ àêòèâèçèðîâàíû íà ñ÷åòå: " + AccName;   
SendIcq(1);
_icqmessage[0]= "";   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()

{
   if (LastTime >= Time[0]) return(0);
   LastTime = Time[0];


   int total=OrdersTotal();
   int histtotal=OrdersHistoryTotal();
   double totalprofit = 0;
   double TodayProfit = 0;
   int MsgCounter = 0;
   string StrMessage = ""; 
   for(int pos=0;pos<total;pos++)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==false) continue;
      if(OrderOpenTime() >= LastTimeChecked)
      {
       string TipOrdera = GetStrOrderType(OrderType());
     
       StrMessage = AccName + ": îòêðûò íîâûé îðäåð!\n   ";
       StrMessage = StrMessage + TipOrdera + " - " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + ", â " + TimeToStr(OrderOpenTime(),TIME_DATE|TIME_SECONDS);
       StrMessage = StrMessage + "\n   Òåêóùèé ïðîôèò ïî îðäåðó " + DoubleToStr(OrderProfit(), 2);
       StrMessage = StrMessage + "\n   Öåíà îòêðûòèÿ: " + DoubleToStr(OrderOpenPrice(), 5);
       StrMessage = StrMessage + "\n   StopLoss: " + DoubleToStr(OrderStopLoss(), 5);
       StrMessage = StrMessage + "\n   TakeProfit: " + DoubleToStr(OrderTakeProfit(), 5);
       StrMessage = StrMessage + "\n-----------------------------------------------------------";
            
       _icqmessage[MsgCounter]= StrMessage;
       MsgCounter = MsgCounter + 1;
       }
       totalprofit = totalprofit + OrderProfit();
     }
    
   StrMessage = "";  
   for(int pos2=0;pos2<histtotal;pos2++)
     {
      if(OrderSelect(pos2,SELECT_BY_POS,MODE_HISTORY)==false) continue;
      if(OrderCloseTime() >= LastTimeChecked)
      {
       TipOrdera = GetStrOrderType(OrderType());
     
       StrMessage = AccName + ": îðäåð çàêðûò!\n   ";
       StrMessage = StrMessage + TipOrdera + " - " + DoubleToStr(OrderLots(), 2) + " " + OrderSymbol() + ", â " + TimeToStr(OrderCloseTime(),TIME_DATE|TIME_SECONDS) + "\n";
       StrMessage = StrMessage + "\n   Äîñòèãíóòûé ïðîôèò ïî îðäåðó " + DoubleToStr(OrderProfit(), 2);
       StrMessage = StrMessage + "\n \n   Öåíà îòêðûòèÿ: " + DoubleToStr(OrderOpenPrice(), 5);
       StrMessage = StrMessage + "\n   StopLoss: " + DoubleToStr(OrderStopLoss(), 5);
       StrMessage = StrMessage + "\n   TakeProfit: " + DoubleToStr(OrderTakeProfit(), 5);
       StrMessage = StrMessage + "\n   Öåíà çàêðûòèÿ: " + DoubleToStr(OrderClosePrice(), 5) + "\n";
       StrMessage = StrMessage + "\n-----------------------------------------------------------";
      
       _icqmessage[MsgCounter]= StrMessage;
       MsgCounter++;
       }
       if(TimeToStr(TimeCurrent(),TIME_DATE) == TimeToStr(OrderCloseTime(),TIME_DATE))
       {
       TodayProfit = TodayProfit + OrderProfit();
       }
     }    
   
   if(MsgCounter == 0)
   {return(0);} 
    
   double DepoLoad = 100 - AccountFreeMargin()/AccountEquity() * 100;
   
   StrMessage = "\n Ñâîäêà ïî ñ÷åòó.";
   StrMessage = StrMessage + "\n   " + "Áàëàíñ ñ÷åòà: " + DoubleToStr(AccountBalance(), 2);
   StrMessage = StrMessage + "\n   " + "Ñðåäñòâà (ýêâèòè): " + DoubleToStr(AccountEquity(), 2);
   StrMessage = StrMessage + "\n   " + "Ñâîáîäíûå ñðåäñòâà: " + DoubleToStr(AccountFreeMargin(), 2);
   //StrMessage = StrMessage + "\n   " + "Çàãðóçêà äåïîçèòà: " + DoubleToStr(DepoLoad,2);
   StrMessage = StrMessage + "\n   " + "Îòêðûòî îðäåðîâ: " + total + ", îáùèé ïðîôèò ïî îòêðûòàì îðäåðàì: " + DoubleToStr(totalprofit,2);
   StrMessage = StrMessage + "\n   " + "Ïðîôèò ïî çàêðûòûì îðäåðàì çà ñåãîäíÿ: " + DoubleToStr(TodayProfit, 2);
   StrMessage = StrMessage + "\n-----------------------------------------------------------";
   
   _icqmessage[MsgCounter]= StrMessage;
   MsgCounter = MsgCounter + 1;
   
   int res = SendIcq(MsgCounter + 1);
   if(res == 1)
   {LastTimeChecked = TimeCurrent();}
   
   for (int pos3=0;pos3<MsgCounter;pos3++)
   {_icqmessage[pos3] = "";}
   
   return(0);
}

string GetStrOrderType(int OT)
{
   if(OT == OP_BUY)
   {return("ïîêóïêà");}
   else if(OT == OP_SELL)
   {return("ïðîäàæà");}
   else if(OT == OP_BUYLIMIT)
   {return("buy limit");}
   else if(OT == OP_BUYSTOP)
   {return("buy stop");}
   else if(OT == OP_SELLLIMIT)
   {return("sell limit");}
   else if(OT == OP_SELLSTOP)
   {return("sell stop");}
}
//+------------------------------------------------------------------+

Comments