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