EquityTracker





//+------------------------------------------------------------------+
//|                                                EquityTracker.mq4 |
//|                                                    Tibor Gellert |
//|                                          tibor.gellert@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Tibor Gellert - $Revision: 234 $"
#property link      ""

/*
  Revision control: $Id: EquityTracker.mq4 234 2008-07-30 20:44:08Z tibor $
*/  

#include <stdlib.mqh>

extern int  TargetEquity = 0;

bool  gExpertEnabled = false;
int   gCloseAttempts = 0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   if (TargetEquity>0)
     gExpertEnabled = true;
   else
     gExpertEnabled = false;
     
   gCloseAttempts = 0;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if (gExpertEnabled && TargetEquity>0 && AccountEquity()>=TargetEquity)
     {
      if (CloseAllOrders(Symbol())==0)
        {
         gExpertEnabled = false;
        }
      gCloseAttempts++;
     }
     
   ManageComment();
//----
   return(0);
  }
//+------------------------------------------------------------------+

int CloseAllOrders(string market)
{
 for(int i=OrdersTotal()-1; i>=0; i--)
   {
    if (OrderSelect(i, SELECT_BY_POS))
      {
       if (OrderSymbol()==market)
         {
          switch (OrderType())
            {
             case OP_BUY:
             case OP_SELL:
               Print("Order to delete:", OrderTicket(), " (", i, ")");
               if (OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0, Black))
                 {
                  Print("Order closed:", OrderTicket());
                 }
               else // OrderClose failed
                 {
                  PrintError("OrderClose failed:"+OrderTicket());
                  return (1);
                 }
               break;
            } //switch
         } // if MAGIC
      } // if OrderSelect
    else // OrderSelect failed
      {
       PrintError("OrderSelect failed" );
       return (1);
      }
   } // for
 return (0);
}

//+------------------------------------------------------------------+

void PrintError( string msg )
{
 int errCode = GetLastError();
 Print(msg, " Code: ", errCode, " Desc: ", ErrorDescription(errCode));
}

//+------------------------------------------------------------------+

void ManageComment()
{
   string cmnt = "EquityTracker";
   if (TargetEquity>0)
     {
      cmnt = cmnt + "\n   Target equity:"+DoubleToStr(TargetEquity,0)+
                    "\n   Close attemps made:"+gCloseAttempts;
     }
   else
     {
      cmnt = cmnt + "\n\n Missing target equity - set TargetEquity parameter!";
     }
   
   if (gExpertEnabled)
     {
      cmnt = cmnt + "\n\n      Expert is enabled";
     }
   else
     {
      cmnt = cmnt + "\n\n      Expert is DISABLED";
     }
   Comment(cmnt);
}



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself

Other Features: