//+------------------------------------------------------------------+
//| 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