Уважаемые программисты выручайте :(

 

Добрый день, начну с того что очень много расписал тут всего и при нажатии добавить вылезла ошибка :(((( емае 

Короче, есть скрипт от цмиллион, при выделении текста и при перемещении его происходит какое ибо действие
Я ни как не могу заменить эту всю процедуру на обычные кнопки


Внизу полного кода есть это:

      delall   =Chek("удалить все",   X0, Y0, bs+ss+bl+sl,0);
      delstop  =Chek("удалить стоп",  X0, Y1, bs+ss,0);
      dellimit =Chek("удалить лимит", X0, Y2, bl+sl,0);
      closeall =Chek("закрыть все",   X0, Y3, b+s,ProfitB+ProfitS);
      closebuy =Chek("закрыть BUY",   X0, Y4, b,ProfitB);
      closesell=Chek("закрыть SELL",  X0, Y5, s,ProfitS);
Пожалуйста кто нибудь замените "удалить все" на самую обыкновенную кнопку button(с сохранением функционала)


ВЕСЬ КОД:
//+------------------------------------------------------------------+
//|                                       cm_управление ордерами.mq4 |
//|                                Copyright 2013, cmillion@narod.ru |
//|                                               http://cmillion.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, cmillion@narod.ru"
#property link      "http://cmillion.ru"
//#property show_inputs
//+------------------------------------------------------------------+
string выбор = "линия";//квадрат
color Color=Aqua;
//+------------------------------------------------------------------+
int slippage = 30;
string val;
//+------------------------------------------------------------------+
int start()
{
   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;
      if (выбор=="квадрат")
      {
         ObjectCreate(name, OBJ_RECTANGLE, 0, 0,0, 0,0);
         ObjectSet   (name, OBJPROP_STYLE, STYLE_SOLID);
         ObjectSet   (name, OBJPROP_COLOR, Color);
         ObjectSet   (name, OBJPROP_BACK,  true);
         ObjectSet   (name, OBJPROP_TIME1 ,Time[0]);
         ObjectSet   (name, OBJPROP_PRICE1,PriceMax);
         ObjectSet   (name, OBJPROP_TIME2 ,Time[WindowFirstVisibleBar()/10]);
         ObjectSet   (name, OBJPROP_PRICE2,PriceMin);
      }
      else
      {
         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);
      }
   }
   int X0=300,
       Y0=0,
       Y1=Y0+15,
       Y2=Y1+15,
       Y3=Y2+15,
       Y4=Y3+15,
       Y5=Y4+15;
   val = StringConcatenate(" ",AccountCurrency());
   bool delall,dellimit,delstop,closeall,closebuy,closesell;
   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 (closeall || closebuy) 
                     {
                        if (OrderClose(Ticket,OrderLots(),NormalizeDouble(Bid,Digits),slippage,Blue))
                           Comment("Закрыт BUY ордер ",Ticket," прибыль ",DoubleToStr(Profit,2),val);
                        else 
                        {
                           Comment("Ошибка ",GetLastError()," закрытия BUY ордера ",Ticket);
                           ObjectSet("закрыть BUY",OBJPROP_XDISTANCE,X0+1);
                        }
                     }
                     else 
                     {
                        b++;
                        ProfitB+=Profit;
                     }
                  }
                  if(OT==OP_SELL)
                  {
                     if (closeall || closesell) 
                     {
                        if (OrderClose(Ticket,OrderLots(),NormalizeDouble(Ask,Digits),slippage,Red))
                           Comment("Закрыт SELL ордер ",Ticket," прибыль ",DoubleToStr(Profit,2),val);
                        else 
                        {
                           Comment("Ошибка ",GetLastError()," закрытия SELL ордера ",Ticket);
                           ObjectSet("закрыть SELL",OBJPROP_XDISTANCE,X0+1);
                        }
                     }
                     else 
                     {
                        s++;
                        ProfitS+=Profit;
                     }
                  }
                  if(OT==OP_BUYSTOP)
                  {
                     if (delall || delstop) 
                     {
                        if (OrderDelete(Ticket))
                           Comment("Удален BUYSTOP ордер ",Ticket);
                        else 
                           Comment("Ошибка ",GetLastError()," удаления BUYSTOP ордера ",Ticket);
                     }
                     else bs++;
                  }
                  if(OT==OP_SELLSTOP)
                  {
                     if (delall || delstop) 
                     {
                        if (OrderDelete(Ticket))
                           Comment("Удален SELLSTOP ордер ",Ticket);
                        else 
                           Comment("Ошибка ",GetLastError()," удаления SELLSTOP ордера ",Ticket);
                     }
                     else ss++;
                  }
                  if(OT==OP_BUYLIMIT)
                  {
                     if (delall || dellimit) 
                     {
                        if (OrderDelete(Ticket))
                           Comment("Удален BUYLIMIT ордер ",Ticket);
                        else 
                           Comment("Ошибка ",GetLastError()," удаления BUYLIMIT ордера ",Ticket);
                     }
                     else bl++;
                  }
                  if(OT==OP_SELLLIMIT)
                  {
                     if (delall || dellimit) 
                     {
                        if (OrderDelete(Ticket))
                           Comment("Удален SELLLIMIT ордер ",Ticket);
                        else 
                           Comment("Ошибка ",GetLastError()," удаления SELLLIMIT ордера ",Ticket);
                     }
                     else sl++;
                  }
               }
            }
         }
      }
      //---
      delall   =Chek("удалить все",   X0, Y0, bs+ss+bl+sl,0);
      delstop  =Chek("удалить стоп",  X0, Y1, bs+ss,0);
      dellimit =Chek("удалить лимит", X0, Y2, bl+sl,0);
      closeall =Chek("закрыть все",   X0, Y3, b+s,ProfitB+ProfitS);
      closebuy =Chek("закрыть BUY",   X0, Y4, b,ProfitB);
      closesell=Chek("закрыть SELL",  X0, Y5, s,ProfitS);
      //---
      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"); 
      if (!delall && !dellimit && !delstop && !closeall && !closebuy && !closesell) 
      {
         Comment(txt);
         Sleep(500);
      }
      else Comment("Производим действия над ордерами");
      RefreshRates();
   }
   ObjectDelete(name);
   ObjectDelete("удалить все");
   ObjectDelete("удалить стоп");
   ObjectDelete("удалить лимит");
   ObjectDelete("закрыть все");
   ObjectDelete("закрыть BUY");
   ObjectDelete("закрыть SELL");
   return(0);
}
//+------------------------------------------------------------------+
void DrawLABEL(string name, int X, int Y, int n, double P)
{
   string txt = StringConcatenate(name," ",n);
   if (P!=0) txt = StringConcatenate(txt,"  профит (",DoubleToStr(P,2),val,")");
   if (ObjectFind(name)==-1)
   {
      ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
      ObjectSet(name, OBJPROP_CORNER, 0);
      ObjectSet(name, OBJPROP_XDISTANCE, X);
      ObjectSet(name, OBJPROP_YDISTANCE, Y);
   }
   ObjectSetText(name,txt,10,"Arial",Color(P));
}
//--------------------------------------------------------------------
bool Chek(string name, int X,int Y, int n, double P)
{
   if (ObjectFind(name)!=-1)
   {
      if (X != ObjectGet(name,OBJPROP_XDISTANCE) || 
          Y != ObjectGet(name,OBJPROP_YDISTANCE))
      {
         ObjectSet(name,OBJPROP_XDISTANCE,X);
         ObjectSet(name,OBJPROP_YDISTANCE,Y);
         return(true);
      }
   }
   DrawLABEL(name,X,Y,n,P);
   return(false);
}
//--------------------------------------------------------------------
color Color(double P)
{
   if (P>0) return(Lime);
   if (P<0) return(Red);
   return(Color);//Gray
}
//------------------------------------------------------------------


как я безуспешно пытался:

PutButton("delall",100,100,"Удалить все");
      
      if(ObjectFind(0,"delall")==0)
         if(GetState("delall"))
           {
            delall      ;  
           }
         else
           {
// тут бы поставил чтобы кнопка сама отжималась
           }

//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,120);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,27);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,false);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(0,name,OBJPROP_ZORDER,0);
  }

bool GetState(string aName)
  {
   long value=0;
   ObjectGetInteger(0,aName,OBJPROP_STATE,0,value);
   return  (bool)value;
  }
 
//+------------------------------------------------------------------+
//|                                     Script Delete All Orders.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property script_show_inputs

#include <stdlib.mqh>  //ErrorDescription(code);

input int X       =  50; //X distance
input int Y       =  50; //Y distance
input int Magic   = -1;  //Magic Number (-1 - all orders)

string nameButton="Button_delete";
string textButton="Delete All Orders";
string textDeleting="Deleting process...";
int Slippage = 10;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart(){
   ButtonCreate(nameButton,X,Y,200,25,textButton);
   while(true){
      if(IsStopped()){
         ObjectDelete(0,nameButton);
         break;
      }
      bool state=ObjectGetInteger(0,nameButton,OBJPROP_STATE);
      if(!state)ObjectSetString(0,nameButton,OBJPROP_TEXT,textButton);
      else{
         ObjectSetString(0,nameButton,OBJPROP_TEXT,textDeleting);
         while(CountOrders(Symbol(),-1,Magic)>0){
            if(!ObjectGetInteger(0,nameButton,OBJPROP_STATE))break;
            if(IsStopped()){
               ObjectDelete(0,nameButton);
               break;
            }            
            for(int i=OrdersTotal()-1; i>=0; i--){
               if(!OrderSelect(i,SELECT_BY_POS))continue;
               int      ord_ticket  =OrderTicket();
               string   ord_symbol  =OrderSymbol();
               int      ord_magic   =OrderMagicNumber();
               int      ord_type    =OrderType();
               double   ord_lots    =OrderLots();
               double   ord_price   =OrderClosePrice();
               if(ord_symbol==Symbol() && (ord_magic==Magic || Magic==-1)){
                  if(ord_type<=1){
                     if(!OrderClose(ord_ticket,ord_lots,ord_price,Slippage))
                        Print("Failed closing order: ",ErrorDescription(GetLastError()));
                  }
                  if(ord_type>1){
                     if(!OrderDelete(ord_ticket))
                        Print("Failed deleting order: ",ErrorDescription(GetLastError()));
                  }
               }
            }
         }
         ObjectSetString(0,nameButton,OBJPROP_TEXT,textButton);
         ObjectSetInteger(0,nameButton,OBJPROP_STATE,false);
      }
   }
}
//--------------------------------------------------------------------+
//      Create BUTTON                                                 |
//--------------------------------------------------------------------+
bool ButtonCreate(const string            name="Button",
                  const int               x=0,                   
                  const int               y=0,               
                  const int               width=50,             
                  const int               height=18,           
                  const string            text="Button"){   
                  
   string font="Arial";
   int font_size=10;
   color clr=clrBlack;
   color back_clr=C'236,233,216';
   color border_clr=clrNONE;
 
   if(ObjectFind(0,name)!=-1){
      ObjectSetString(0,name,OBJPROP_TEXT,text); 
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); 
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); 
      ObjectSetInteger(0,name,OBJPROP_XSIZE,width); 
      ObjectSetInteger(0,name,OBJPROP_YSIZE,height); 
   }
   
   if(ObjectFind(0,name)==-1){
      ResetLastError(); 
      if(!ObjectCreate(0,name,OBJ_BUTTON,0,0,0)){ 
         Print(__FUNCTION__," ",GetLastError()); 
         return(false); 
      } 
   
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); 
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); 
      ObjectSetInteger(0,name,OBJPROP_XSIZE,width); 
      ObjectSetInteger(0,name,OBJPROP_YSIZE,height); 
      ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER); 
      ObjectSetString(0,name,OBJPROP_TEXT,text); 
      ObjectSetString(0,name,OBJPROP_FONT,font); 
      ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size); 
      ObjectSetInteger(0,name,OBJPROP_COLOR,clr); 
      ObjectSetInteger(0,name,OBJPROP_BGCOLOR,back_clr); 
      ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,border_clr); 
      ObjectSetInteger(0,name,OBJPROP_BACK,false); 
      ObjectSetInteger(0,name,OBJPROP_STATE,false); 
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); 
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false); 
      ObjectSetInteger(0,name,OBJPROP_HIDDEN,false); 
      ObjectSetInteger(0,name,OBJPROP_ZORDER,5); 
   }
   return(true); 
} 
//--------------------------------------------------------------------+
//      Count Orders                                                  |
//--------------------------------------------------------------------+
int CountOrders(string          symbol    = "",
                int             type      = -1,
                int             magic     = -1){
   int value=0;
   int total=OrdersTotal();
   for(int i=total-1; i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS)){
         
         string            ord_symbol    =OrderSymbol();
         int               ord_magic     =OrderMagicNumber();
         int               ord_type      =OrderType();
         
         if((ord_symbol   ==symbol || symbol=="") &&
            (ord_type     ==type   || type  ==-1) &&
            (ord_magic    ==magic  || magic ==-1))
            value++;
      }
   }
   return(value);
}
 
utock:

Добрый день, начну с того что очень много расписал тут всего и при нажатии добавить вылезла ошибка :(((( емае 

Короче, есть скрипт от цмиллион, при выделении текста и при перемещении его происходит какое ибо действие
Я ни как не могу заменить эту всю процедуру на обычные кнопки


Внизу полного кода есть это:

Пожалуйста кто нибудь замените "удалить все" на самую обыкновенную кнопку button(с сохранением функционала)


ВЕСЬ КОД:


как я безуспешно пытался:

Я смотрю мои подсказки ну никак не помогают? Вот код советника где есть и создание кнопок, и обработка события нажатия кнопки. Может так будет понятней.

Ну, а если и это не поможет, значит вы пытаетесь найти добродетеля не для того чтобы научил, а чтобы сделал за вас на халяву. В таком случае так и надо было просить чтобы кто-то сделал, а не парить мозги. Извините за резкость...

Файлы:
Handtester.mq4  24 kb
Причина обращения: