_KeelOver





//+------------------------------------------------------------------+
//|                                                    _KeelOver.mq4 |
//|                                           "ÑÊÐÈÏÒÛ ÄËß ËÅÍÈÂÎÃÎ" |
//|                ÏÅÐÅÂÎÐÎÒ:  Ñêðèïò çàêðûâàåò âñå îòêðûòûå ïîçèöèè |
//|                è îòêðûâàåò îäíó íà ðàçíèöó ñóìì ëîòîâ Buy è Sell |
//|                ÂÍÈÌÀÍÈÅ: åñëè ñóììû ëîòîâ Buy è Sell ðàâíû - âñå |
//|                                     ïîçèöèè ïðîñòî áóäóò çàêðûòû |
//|                           Bookkeeper, 2006, yuzefovich@gmail.com |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property show_inputs // Åñëè åñòü æåëàíèå ìåíÿòü ýêñòåðíû â ïðîöåññå
//----
extern int    DistSL     = 35;   // StopLoss â ïóíêòàõ
extern int    DistTP     = 35;   // TakeProfit â ïóíêòàõ
extern int    Slippage   = 7;    // Ïðîñêàëüçûâàíèå
extern bool   StopLoss   = true; // Ñòàâèòü èëè íåò
extern bool   TakeProfit = true; // Ñòàâèòü èëè íåò
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start() 
  {
   int    Total, i, Pos, ticket, MinLotDgts;
   bool   Result;
   double MinLot = MarketInfo(Symbol(), MODE_MINLOT);   
   double SL = 0, TP = 0, Stake, BuyLots = 0, SellLots = 0;   
   Total = OrdersTotal();
   if(Total > 0) // Åñëè åñòü îðäåðà
     {
       for(i = Total - 1; i >= 0; i--) 
         {
           if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)  
             {
               Pos = OrderType();
               Stake = OrderLots();
               if((OrderSymbol() == Symbol()) &&
                  (Pos == OP_BUY || Pos == OP_SELL)) // Ñìîòðèì òîëüêî îòêðûòûå Buy è Sell
                 {                                   // â àêòèâíîì îêíå
                   if(Pos == OP_BUY) 
                     {
                       BuyLots = BuyLots + Stake;    // Ñóììèðóåì Ëîòû îòêðûòûõ Buy
                       Result = OrderClose(OrderTicket(), OrderLots(), Bid , Slippage);
                       if(Result != true) 
                           Alert("KeelOver: CloseBuyError = ", GetLastError()); 
                     }
                   else 
                     {
                       SellLots = SellLots + Stake;  // Ñóììèðóåì Ëîòû îòêðûòûõ Sell
                       Result = OrderClose(OrderTicket(), OrderLots(), Ask , Slippage);
                       if(Result != true) 
                           Alert("KeelOver: CloseSellError = ", GetLastError()); 
                     }
                 }
             }
         }
       if(MinLot < 0.1) 
           MinLotDgts = 2;
       else
         {
           if(MinLot < 1.0) 
               MinLotDgts = 1;
           else
               MinLotDgts = 0;
         }
       Stake = NormalizeDouble(BuyLots - SellLots, MinLotDgts);
       if(Stake != 0) // Åñëè åñòü ÷òî ïåðåâîðà÷èâàòü
         {
           if(Stake > 0) // ïðîäàæåé
             {
               RefreshRates();
               if(StopLoss == true) 
                   SL = NormalizeDouble(Ask + DistSL*Point, Digits);
               if(TakeProfit == true) 
                   TP = NormalizeDouble(Bid - 2*DistTP*Point, Digits);
               ticket = OrderSend(Symbol(), OP_SELL, Stake, Bid , Slippage, SL, TP, "");
               if(ticket <= 0) 
                   Alert("KeelOver: OpenSellError: ", GetLastError()); 
             }
           else // ïîêóïêîé
             {
               Stake = -Stake;
               RefreshRates();
               if(StopLoss == true) 
                   SL = NormalizeDouble(Bid - DistSL*Point, Digits);
               if(TakeProfit == true) 
                   TP = NormalizeDouble(Ask + 2*DistTP*Point, Digits);
               ticket = OrderSend(Symbol(), OP_BUY, Stake, Ask , Slippage, SL, TP, "");
               if(ticket <= 0) 
                   Alert("KeelOver: OpenBuyError: ", GetLastError()); 
             }
         }
       else 
           Alert("KeelOver: BuyLots = SellLots");
     }
   return;
  }
//+------------------------------------------------------------------+





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
It automatically opens orders when conditions are reached

Other Features:

It issuies visual alerts to the screen

BackTest : EURUSD on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCAD on H1

From 2009-01-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-03-01 to 2010-03-27 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-04-16 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.00 Total Net Profit:0.00

Request Backtest for _KeelOver


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: