CloseBasketProfit





//+------------------------------------------------------------------+
//|                                            CloseBasketProfit.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property link      "http://www.metaquotes.net"
#property copyright "Copyright © 2006, Robert Hill."
#property show_inputs

//---- Include
#include <stderror.mqh>
#include <stdlib.mqh>

//---- 
extern int  ProfitTarget = 10; // Profit target in dollars

//---- 
double      TotalProfit = 0.0;
int         total, i;
bool        result = false;

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
   {
//---- Calculate total profit on all trades
      total = OrdersTotal();
      for(i=total-1;i>=0;i--)
         {
            OrderSelect(i, SELECT_BY_POS);
            TotalProfit += OrderProfit();
         }
      if (TotalProfit >= ProfitTarget)
         {
//---- First close losing trades
            //total = OrdersTotal();
            for(i=total-1;i>=0;i--)
               {
                  OrderSelect(i, SELECT_BY_POS);
                  result = false;
                  switch(OrderType())
                     {
//---- Close opened long positions
                        case OP_BUY : 
                           if ( OrderProfit() < 0) 
                              result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                           break;
//---- Close opened short positions
                        case OP_SELL   : 
                           if ( OrderProfit() < 0) 
                              result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
                     }
                  if(result == false)
                     {
                        Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
                        Sleep(3000);
                     }  
               }
//---- Now close remaining trades
            //total = OrdersTotal();
            for(i=total-1;i>=0;i--)
               {
                  OrderSelect(i, SELECT_BY_POS);
                  result = false;
                  switch(OrderType())
                     {
//---- Close opened long positions
                        case OP_BUY : 
                           result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                           break;
//---- Close opened short positions
                        case OP_SELL   : 
                           result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
                            
                     }
                  if(result == false)
                     {
                        Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
                        Sleep(3000);
                     }  
               }
         }
//----
      return(0);
   }
//+------------------------------------------------------------------+



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:

It issuies visual alerts to the screen