Author: Copyright 2016, cmillion@narod.ru
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself
0 Views
0 Downloads
0 Favorites
cm_control
//+------------------------------------------------------------------+
//|                                       cm_óïðàâëåíèå îðäåðàìè.mq4 |
//|                                Copyright 2016, cmillion@narod.ru |
//|                                               http://cmillion.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, cmillion@narod.ru"
#property link      "http://cmillion.ru"
//+------------------------------------------------------------------+
color Color=clrRed;
int slippage = 30;
string val;
//+------------------------------------------------------------------+
int start()
{
   ButtonCreate(0,"óäàëèòü âñå",0,300,10,200,20,"óäàëèòü âñå","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
   ButtonCreate(0,"óäàëèòü ñòîï",0,300,30,200,20,"óäàëèòü ñòîï","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
   ButtonCreate(0,"óäàëèòü ëèìèò",0,300,50,200,20,"óäàëèòü ëèìèò","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
   ButtonCreate(0,"çàêðûòü âñå",0,300,70,200,20,"çàêðûòü âñå","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
   ButtonCreate(0,"çàêðûòü BUY",0,300,90,200,20,"çàêðûòü BUY","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
   ButtonCreate(0,"çàêðûòü SELL",0,300,110,200,20,"çàêðûòü SELL","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
   ButtonCreate(0,"çàêðûòü ñêðèïò",0,300,130,200,20,"çàêðûòü ñêðèïò","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
   string name="âûáîð";
   double OOP,PriceMax,PriceMin;
   double WPMax=WindowPriceMax();
   double WPMin=WindowPriceMin();
   if (ObjectFind(name)==-1)
   {
      for (int i=0; i<OrdersTotal(); i++)
      {    
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         { 
            if (OrderSymbol()==Symbol())
            { 
               OOP   = NormalizeDouble(OrderOpenPrice(),Digits);
               if (PriceMax<OOP) PriceMax=OOP;
               if (PriceMin>OOP || PriceMin==0) PriceMin=OOP;
            }
         }
      } 
      if (PriceMax==0) PriceMax = WPMax-(WPMax-WPMin)/10;
      if (PriceMin==0) PriceMin = WPMin+(WPMax-WPMin)/10;
      ObjectCreate(name, OBJ_TREND, 0, 0,0, 0,0);
      ObjectSet   (name, OBJPROP_COLOR, Color);
      ObjectSet   (name, OBJPROP_TIME1 ,Time[0]);
      ObjectSet   (name, OBJPROP_PRICE1,PriceMax);
      ObjectSet   (name, OBJPROP_TIME2 ,Time[0]);
      ObjectSet   (name, OBJPROP_PRICE2,PriceMin);
      ObjectSet   (name, OBJPROP_WIDTH,5);
      ObjectSet   (name, OBJPROP_RAY,false);
   }
   val = StringConcatenate(" ",AccountCurrency());
   while (ObjectFind(name)!=-1 && !IsStopped())
   {
      PriceMax = ObjectGet(name,OBJPROP_PRICE1);
      PriceMin = ObjectGet(name,OBJPROP_PRICE2);
      if (PriceMax<PriceMin) {PriceMax=PriceMin; PriceMin = ObjectGet(name,OBJPROP_PRICE1);}
      string txt=StringConcatenate("Âûáèðàåì îðäåðà ïî öåíàì îòêðûòèÿ îò ",DoubleToStr(PriceMin,Digits)," äî ",DoubleToStr(PriceMax,Digits));
      //---
      int b=0,s=0,bs=0,ss=0,bl=0,sl=0,OT,Ticket;
      double ProfitS=0,ProfitB=0,Profit;
      for (i=OrdersTotal()-1; i>=0; i--)
      {    
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         { 
            if (OrderSymbol()==Symbol())
            { 
               OOP = NormalizeDouble(OrderOpenPrice(),Digits);
               OT  = OrderType();
               Ticket=OrderTicket();
               Profit = OrderProfit()+OrderSwap()+OrderCommission();
               if (PriceMax>=OOP && PriceMin<=OOP)
               {
                  if(OT==OP_BUY)
                  {
                     if (ObjectGetInteger(0,"çàêðûòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"çàêðûòü BUY",OBJPROP_STATE)) 
                     {
                        if (OrderClose(Ticket,OrderLots(),NormalizeDouble(Bid,Digits),slippage,Blue))
                           Comment("Çàêðûò BUY îðäåð ",Ticket," ïðèáûëü ",DoubleToStr(Profit,2),val);
                        else 
                        {
                           Comment("Îøèáêà ",GetLastError()," çàêðûòèÿ BUY îðäåðà ",Ticket);
                        }
                     }
                     else 
                     {
                        b++;
                        ProfitB+=Profit;
                     }
                  }
                  if(OT==OP_SELL)
                  {
                     if (ObjectGetInteger(0,"çàêðûòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"çàêðûòü SELL",OBJPROP_STATE)) 
                     {
                        if (OrderClose(Ticket,OrderLots(),NormalizeDouble(Ask,Digits),slippage,Red))
                           Comment("Çàêðûò SELL îðäåð ",Ticket," ïðèáûëü ",DoubleToStr(Profit,2),val);
                        else 
                        {
                           Comment("Îøèáêà ",GetLastError()," çàêðûòèÿ SELL îðäåðà ",Ticket);
                        }
                     }
                     else 
                     {
                        s++;
                        ProfitS+=Profit;
                     }
                  }
                  if(OT==OP_BUYSTOP)
                  {
                     if (ObjectGetInteger(0,"óäàëèòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"óäàëèòü ñòîï",OBJPROP_STATE)) 
                     {
                        if (OrderDelete(Ticket))
                           Comment("Óäàëåí BUYSTOP îðäåð ",Ticket);
                        else 
                           Comment("Îøèáêà ",GetLastError()," óäàëåíèÿ BUYSTOP îðäåðà ",Ticket);
                     }
                     else bs++;
                  }
                  if(OT==OP_SELLSTOP)
                  {
                     if (ObjectGetInteger(0,"óäàëèòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"óäàëèòü ñòîï",OBJPROP_STATE)) 
                     {
                        if (OrderDelete(Ticket))
                           Comment("Óäàëåí SELLSTOP îðäåð ",Ticket);
                        else 
                           Comment("Îøèáêà ",GetLastError()," óäàëåíèÿ SELLSTOP îðäåðà ",Ticket);
                     }
                     else ss++;
                  }
                  if(OT==OP_BUYLIMIT)
                  {
                     if (ObjectGetInteger(0,"óäàëèòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"óäàëèòü ëèìèò",OBJPROP_STATE)) 
                     {
                        if (OrderDelete(Ticket))
                           Comment("Óäàëåí BUYLIMIT îðäåð ",Ticket);
                        else 
                           Comment("Îøèáêà ",GetLastError()," óäàëåíèÿ BUYLIMIT îðäåðà ",Ticket);
                     }
                     else bl++;
                  }
                  if(OT==OP_SELLLIMIT)
                  {
                     if (ObjectGetInteger(0,"óäàëèòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"óäàëèòü ëèìèò",OBJPROP_STATE)) 
                     {
                        if (OrderDelete(Ticket))
                           Comment("Óäàëåí SELLLIMIT îðäåð ",Ticket);
                        else 
                           Comment("Îøèáêà ",GetLastError()," óäàëåíèÿ SELLLIMIT îðäåðà ",Ticket);
                     }
                     else sl++;
                  }
               }
            }
         }
      }
      //---
      txt = StringConcatenate(txt,"\n",b," ",DoubleToStr(ProfitB,2),val," buy\n",s," ",DoubleToStr(ProfitS,2),val," sell\n",bs," buyStop\n",ss," sellStop\n",bl," buyLimit\n",sl," sellLimit"); 
      Comment(txt);
      if (ObjectGetInteger(0,"çàêðûòü ñêðèïò",OBJPROP_STATE)) break;
      Sleep(500);
      RefreshRates();
   }
   ObjectDelete(name);
   ObjectDelete("óäàëèòü âñå");
   ObjectDelete("óäàëèòü ñòîï");
   ObjectDelete("óäàëèòü ëèìèò");
   ObjectDelete("çàêðûòü âñå");
   ObjectDelete("çàêðûòü BUY");
   ObjectDelete("çàêðûòü SELL");
   ObjectDelete("çàêðûòü ñêðèïò");
   Comment("Ñêðèïò çàêîí÷èë ñâîþ ðàáîòó\nÑêðèïòû è ñîâåòíèêè íà çàêàç http://cmillion.ru");
   return(0);
}
//+------------------------------------------------------------------+
color Color(double P)
{
   if (P>0) return(Lime);
   if (P<0) return(Red);
   return(Color);//Gray
}
//------------------------------------------------------------------
bool ButtonCreate(const long              chart_ID=0,               // ID ãðàôèêà
                  const string            name="Button",            // èìÿ êíîïêè
                  const int               sub_window=0,             // íîìåð ïîäîêíà
                  const long               x=0,                      // êîîðäèíàòà ïî îñè X
                  const long               y=0,                      // êîîðäèíàòà ïî îñè Y
                  const int               width=50,                 // øèðèíà êíîïêè
                  const int               height=18,                // âûñîòà êíîïêè
                  const string            text="Button",            // òåêñò
                  const string            font="Arial",             // øðèôò
                  const int               font_size=10,             // ðàçìåð øðèôòà
                  const color             clr=clrRed,               // öâåò òåêñòà
                  const color             clrON=clrLime,            // öâåò ôîíà
                  const color             clrOFF=clrBlack,          // öâåò ôîíà
                  const color             border_clr=clrNONE,       // öâåò ãðàíèöû
                  const bool              state=false)              // íàæàòà/îòæàòà
  {
   if (ObjectFind(chart_ID,name)==-1)
   {
      ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
      ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_CENTER);
      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,1);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,1);
      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
   }
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
   color back_clr;
   if (ObjectGetInteger(chart_ID,name,OBJPROP_STATE)) back_clr=clrON; else back_clr=clrOFF;
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
   return(true);
}
//--------------------------------------------------------------------

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 ---