CloseAllOrders_v4

Author: Vladimir Khlistov
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself
Miscellaneous
It opens Message Boxes to the userIt issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
CloseAllOrders_v4
//+------------------------------------------------------------------+
#property copyright "Vladimir Khlistov"
#property link      "http://cmillion.narod.ru"
#property show_inputs
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
extern int   Magic       = 0;   //çàêðûâàòü òîëüêî ñäåëêè ñ ìàãèêîì 0-îòêðûòûå âðó÷íóþ
extern bool  MagicAll    = true;//åñëè true - çàêðûâàòü âñå
extern int   Profit      = 0;   //çàêðûâàòü òîëüêî ñäåëêè ñ ïðîôèòîì áîëüøå Profit
extern int   TipOrder    = 0;   //(0) - âñå îðäåðà   (1) - Buy     (-1) - Sell
extern bool  SymbolAll   = true;//åñëè true - âñå âàëþòíûå ïàðû   false - òîëüêî òåêóùèå
int   slippage    = 5;
int nn;
//+------------------------------------------------------------------+
int start()
{  
   if (Digits==5 || Digits==3) slippage=30;
   bool error=true;
   int Îøèáêà,DIGITS;
   string txt;
   double ASK,BID,POINT;
   if (!MagicAll)  txt=StringConcatenate(txt,"Cêðèïò çàêðûòèÿ îðäåðîâ ñ Magic=",Magic);
   else  txt=StringConcatenate(txt,"Cêðèïò çàêðûòèÿ âñåõ îðäåðîâ");
   Comment("");
   int ret=MessageBox("Çàêðûòü âñå îðäåðà (Äà)   Çàêðûòü òîëüêî ïðîôèòíûå (Íåò)",
       txt, MB_YESNOCANCEL|MB_TOPMOST);
   if (ret==IDCANCEL) return;
   while(true)
   {
      for (int j = OrdersTotal()-1; j >= 0; j--)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            if ((OrderSymbol() == Symbol()||SymbolAll) && (OrderMagicNumber() == Magic || MagicAll))
            {
               DIGITS = MarketInfo(OrderSymbol(),MODE_DIGITS);
               ASK = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),DIGITS);
               BID = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),DIGITS);
               POINT = MarketInfo(OrderSymbol(),MODE_POINT);
               if (OrderType()==OP_BUY && (TipOrder == 1||TipOrder ==0)) 
               {
                  if (ret==IDNO && Profit > (BID-OrderOpenPrice())/POINT) continue;
                  error=OrderClose(OrderTicket(),OrderLots(),BID,slippage,Red);
                  if (error) Alert("Çàêðûò îðäåð N ",OrderTicket(),"  ïðèáûëü ",OrderProfit(),
                                     "     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
               if (OrderType()==OP_SELL && (TipOrder ==-1||TipOrder ==0)) 
               {
                  if (ret==IDNO && Profit > (OrderOpenPrice()-ASK)/POINT) continue;
                  error=OrderClose(OrderTicket(),OrderLots(),ASK,slippage,Red);
                  if (error) Alert("Çàêðûò îðäåð N ",OrderTicket(),"  ïðèáûëü ",OrderProfit(),
                                     "     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
               
               if (!error) 
               {
                  Îøèáêà = GetLastError();
                  if (Îøèáêà<2) continue;
                  if (Îøèáêà==129) 
                  {  Comment("Íåïðàâèëüíàÿ öåíà ",TimeToStr(TimeCurrent(),TIME_SECONDS));
                     Sleep(5000);
                     RefreshRates();
                     continue;
                  }
                  if (Îøèáêà==146) 
                  {
                     int ret1=MessageBox("Ïîäñèñòåìà òîðãîâëè çàíÿòà"," ", 
                         MB_RETRYCANCEL|MB_TOPMOST|MB_ICONWARNING);
                     if (ret1==IDCANCEL) return;
                     j++;
                     if (IsTradeContextBusy()) Sleep(2000);
                     continue;
                  }
                  Comment("Îøèáêà ",Îøèáêà," çàêðûòèÿ îðäåðà N ",OrderTicket(),
                          "     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
            }
         }
      }
      int n=0;
      for (j = 0; j < OrdersTotal(); j++)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            if ((OrderSymbol() == Symbol()||SymbolAll) && (OrderMagicNumber() == Magic || MagicAll))
            {
               DIGITS = MarketInfo(OrderSymbol(),MODE_DIGITS);
               ASK = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),DIGITS);
               BID = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),DIGITS);
               POINT = MarketInfo(OrderSymbol(),MODE_POINT);
               if (OrderType()==OP_BUY  && (TipOrder == 1||TipOrder ==0))
               {
                  if (ret==IDNO && Profit > (BID-OrderOpenPrice())/POINT) continue;
                  n++;
               }
               if (OrderType()==OP_SELL && (TipOrder ==-1||TipOrder ==0))
               {
                  if (ret==IDNO && Profit > (OrderOpenPrice()-ASK)/POINT) continue;
                  n++;
               }
            }
         }  
      }
      if (n==0) break;
      nn++;
      if (nn>10) {Comment("Íå óäàëîñü çàêðûòü âñå ñäåëêè, îñòàëîñü åùå ",n);break;}
      Sleep(1000);
      RefreshRates();
   }
   return(0);
}
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---