Urdala_Helper

Author: ������ (urdala) ���������
Profit factor:
0.00
2 Views
0 Downloads
0 Favorites
Urdala_Helper
//+------------------------------------------------------------------+
//|                                                Urdala_Helper.mq4 |
//|                                        Ñåðãåé (urdala) Ðàøåâñêèé |
//|                                                   urdala@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Ñåðãåé (urdala) Ðàøåâñêèé"
#property link      "urdala@mail.ru"
#property show_inputs

extern double Lot=0.01;
extern color Menucol=Black;

datetime X1,X2,X,XOP,XTP;
double Y1,Y2;

int deinit()
  {
   DelAll();
  }
//--------------------------------------------------------------------
int start()
  {
   X1=WindowTimeOnDropped();
   int delta=WindowBarsPerChart()*0.18;
   if (iBarShift(Symbol(),0,X1)<delta) X1=Time[delta];
   X2=Time[iBarShift(Symbol(),0,X1)-delta];
   delta=(iBarShift(Symbol(),0,X1)+iBarShift(Symbol(),0,X2))/2;
   X=Time[delta];
   delta=WindowBarsPerChart()*0.03;
   XOP=Time[iBarShift(Symbol(),0,X)-delta];
   XTP=Time[iBarShift(Symbol(),0,X)+delta];
   Y1=WindowPriceOnDropped();
   Y2=Y1-(WindowPriceMax()-WindowPriceMin())*0.3;
   int Klick,Ticket,OrdTot;
   double OP,TP,SL,Price,Profit;
   bool Oper;
   
//--------------------------------------------------------------------
   WindowRedraw();
   DelAll();
   Menu1();
   WindowRedraw();
   for (int i=1; i<3000;i++)         
         {
          if (ObjectGet("Open",OBJPROP_TIME1)!=X){Klick=1;DelAll();break;}
          if (ObjectGet("Close",OBJPROP_TIME1)!=X){Klick=2;DelAll();break;}
          if (ObjectGet("Modify",OBJPROP_TIME1)!=X){Klick=3;DelAll();break;}
          if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
          Sleep(100);
         }
   if (Klick==1)
      {
       Klick=0;
       Menu2();
       WindowRedraw();
       for (i=1; i<3000;i++)         
           {
            if (ObjectGet("Market",OBJPROP_TIME1)!=X){Klick=1;DelAll();break;}
            if (ObjectGet("Pending",OBJPROP_TIME1)!=X){Klick=2;DelAll();break;}
            if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
            Sleep(100);
           }
       if (Klick==1)
          {
           Ticket=-1;
           Klick=0;
           DelAll();
           Menu3();
           WindowRedraw();
           for (i=1; i<3000;i++)         
               {
               if (ObjectGet("Buy",OBJPROP_TIME1)!=X){Klick=1;break;}
               if (ObjectGet("Sell",OBJPROP_TIME1)!=X){Klick=2;break;}
               if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
               Sleep(100);
               }
           if (Klick==1)Ticket=OpenOrder(Symbol(),0,Lot,Ask,0,0,"Urdala_Helper",0);
           if (Klick==2)Ticket=OpenOrder(Symbol(),1,Lot,Bid,0,0,"Urdala_Helper",0);
           
           if (Ticket>=0 && (ObjectGet("TP",OBJPROP_PRICE1)!=Y(50) || ObjectGet("SL",OBJPROP_PRICE1)!=Y(50)))
              {
               OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
               TP=OrderTakeProfit();
               SL=OrderStopLoss();
               if (ObjectGet("TP",OBJPROP_PRICE1)!=Y(50))TP=ObjectGet("TP",OBJPROP_PRICE1);
               if (ObjectGet("SL",OBJPROP_PRICE1)!=Y(50))SL=ObjectGet("SL",OBJPROP_PRICE1);
               ModifyOrder(Ticket,OrderOpenPrice(),SL,TP);
              } 
           DelAll();
           return(0);
          }
       if (Klick==2)
          {
           Ticket=-1;
           Klick=0;
           DelAll();
           Menu4();
           WindowRedraw();
           for (i=1; i<3000;i++)         
               {
               if (ObjectGet("Stop",OBJPROP_TIME1)!=X){Klick=1;break;}
               if (ObjectGet("Limit",OBJPROP_TIME1)!=X){Klick=2;break;}
               if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
               Sleep(100);
               }
           if (Klick==1)
              {
               if (ObjectGet("OP",OBJPROP_PRICE1)>Bid && ObjectGet("OP",OBJPROP_PRICE1)!=Y(50))Ticket=OpenOrder(Symbol(),4,Lot,ObjectGet("OP",OBJPROP_PRICE1),0,0,"Urdala_Helper",0);
               if (ObjectGet("OP",OBJPROP_PRICE1)<Bid && ObjectGet("OP",OBJPROP_PRICE1)!=Y(50))Ticket=OpenOrder(Symbol(),5,Lot,ObjectGet("OP",OBJPROP_PRICE1),0,0,"Urdala_Helper",0);
              }
           if (Klick==2)
              {
               if (ObjectGet("OP",OBJPROP_PRICE1)>Bid && ObjectGet("OP",OBJPROP_PRICE1)!=Y(50))Ticket=OpenOrder(Symbol(),3,Lot,ObjectGet("OP",OBJPROP_PRICE1),0,0,"Urdala_Helper",0);
               if (ObjectGet("OP",OBJPROP_PRICE1)<Bid && ObjectGet("OP",OBJPROP_PRICE1)!=Y(50))Ticket=OpenOrder(Symbol(),2,Lot,ObjectGet("OP",OBJPROP_PRICE1),0,0,"Urdala_Helper",0);
              }
           if (Ticket>=0 && (ObjectGet("TP",OBJPROP_PRICE1)!=Y(50) || ObjectGet("SL",OBJPROP_PRICE1)!=Y(50)))
              {
               OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
               TP=OrderTakeProfit();
               SL=OrderStopLoss();
               if (ObjectGet("TP",OBJPROP_PRICE1)!=Y(50))TP=ObjectGet("TP",OBJPROP_PRICE1);
               if (ObjectGet("SL",OBJPROP_PRICE1)!=Y(50))SL=ObjectGet("SL",OBJPROP_PRICE1);
               ModifyOrder(Ticket,OrderOpenPrice(),SL,TP);
              }
           DelAll();
           return(0);
          }
       DelAll();
       return(0);
      }
   if (Klick==2)
      {
       Klick=0;
       DelAll();
       Menu5();
       WindowRedraw();
       for (i=1; i<3000;i++)         
           {
            if (ObjectGet("One",OBJPROP_TIME1)!=X){Klick=1;break;}
            if (ObjectGet("Group",OBJPROP_TIME1)!=X){Klick=2;break;}
            if (ObjectGet("Pending",OBJPROP_TIME1)!=X){Klick=3;break;}
            if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
            Sleep(100);
           }
       if (Klick==1)
          {
           Klick=0;
           DelAll();
           Menu6();
           WindowRedraw();
           for (i=1; i<3000;i++)         
               {
                if (ObjectGet("Close",OBJPROP_TIME1)!=X){Klick=1;break;}
                if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
                if (ObjectGet("OP",OBJPROP_PRICE1)!=Y(50))
                   {
                    Price=NormalizeDouble(ObjectGet("OP",OBJPROP_PRICE1),Digits);
                    Ticket=TicketOP(Price);
                    if (Ticket==0)
                       {
                        Alert("Îðäåð íå íàéäåí");
                        DelAll();
                        return(0);
                       }
                    OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
                    ObjectMove("OP",0,Time[0],OrderOpenPrice());
                    WindowRedraw();
                   }
                Sleep(100);
               }
           if (ObjectGet("OP",OBJPROP_PRICE1)!=Y(50))
              {
               Oper=false;
               Price=NormalizeDouble(ObjectGet("OP",OBJPROP_PRICE1),Digits);
               OrderSelect(TicketOP(Price),SELECT_BY_TICKET,MODE_TRADES);
               if (OrderType()==0){CloseOrder(OrderTicket(),OrderLots(),Bid);Oper=true;}
               if (OrderType()==1){CloseOrder(OrderTicket(),OrderLots(),Ask);Oper=true;}
               if (OrderType()>1){OrderDelete(OrderTicket());Oper=true;}
               
               if (Oper==false)Alert("Îðäåð íå íàéäåí.");
               }
           DelAll();
           return(0);
          }
       if (Klick==2)
          {
           Klick=0;
           DelAll();
           Menu7();
           WindowRedraw();
           for (i=1; i<3000;i++)         
               {
                if (ObjectGet("Buy",OBJPROP_TIME1)!=X){Klick=1;break;}
                if (ObjectGet("Sell",OBJPROP_TIME1)!=X){Klick=2;break;}
                if (ObjectGet("All",OBJPROP_TIME1)!=X){Klick=3;break;}
                if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
                Sleep(100);
               }
           if (Klick==1)
              {
               
               for (i=0; i<OrdersTotal(); i++)
                   {
                    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                    if (OrderSymbol()==Symbol() && OrderType()==0){CloseOrder(OrderTicket(),OrderLots(),Bid);i--;}
                   }
               DelAll();
               return(0);
              }
           if (Klick==2)
              {
               
               for (i=0; i<OrdersTotal(); i++)
                   {
                    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                    if (OrderSymbol()==Symbol() && OrderType()==1){CloseOrder(OrderTicket(),OrderLots(),Ask);i--;}
                   }
               DelAll();
               return(0);
              }
           if (Klick==3)
              {
               
               for (i=0; i<OrdersTotal(); i++)
                   {
                    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                    if (OrderSymbol()==Symbol() && OrderType()==0){CloseOrder(OrderTicket(),OrderLots(),Bid);i--;}
                    if (OrderSymbol()==Symbol() && OrderType()==1){CloseOrder(OrderTicket(),OrderLots(),Ask);i--;}
                    if (OrderSymbol()==Symbol() && OrderType()>1){OrderDelete(OrderTicket());i--;}
                   }
               DelAll();
               return(0);
              }
          
          }
       if (Klick==3)
          {
           for (i=0; i<OrdersTotal(); i++)
                   {
                    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                    if (OrderSymbol()==Symbol() && OrderType()>1){OrderDelete(OrderTicket());i--;}
                   }
               DelAll();
               return(0);
          }
       DelAll();
       return(0);
      }
   if (Klick==3)
      {
       Klick=0;
       DelAll();
       Menu8();
       WindowRedraw();
       for (i=1; i<3000;i++)         
           {
            if (ObjectGet("One",OBJPROP_TIME1)!=X){Klick=1;break;}
            if (ObjectGet("Group",OBJPROP_TIME1)!=X){Klick=2;break;}
            if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
            Sleep(100);
           }
       if (Klick==1)
          {
           Klick=0;
           DelAll();
           Menu9();
           WindowRedraw();
           for (i=1; i<3000;i++)         
               {
                if (ObjectGet("Modify",OBJPROP_TIME1)!=X){Klick=1;break;}
                if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
                if (ObjectGet("OP",OBJPROP_PRICE1)!=Y(50))
                   {
                    Price=NormalizeDouble(ObjectGet("OP",OBJPROP_PRICE1),Digits);
                    Ticket=TicketOP(Price);
                    if (Ticket==0)
                       {
                        Alert("Îðäåð íå íàéäåí");
                        DelAll();
                        return(0);
                       }
                    OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
                    ObjectMove("OP",0,Time[0],OrderOpenPrice());
                    WindowRedraw();
                   }
                Sleep(100);
               }
           if (Klick==1 && (ObjectGet("TP",OBJPROP_PRICE1)!=Y(50) || ObjectGet("SL",OBJPROP_PRICE1)!=Y(50)))
              {
               TP=OrderTakeProfit();SL=OrderStopLoss();
               if (ObjectGet("TP",OBJPROP_PRICE1)!=Y(50))TP=ObjectGet("TP",OBJPROP_PRICE1);
               if (ObjectGet("SL",OBJPROP_PRICE1)!=Y(50))SL=ObjectGet("SL",OBJPROP_PRICE1);
               ModifyOrder(OrderTicket(),OrderOpenPrice(),SL,TP); 
              }
           
           DelAll();
           return(0);
          }
       if (Klick==2)
          {
           Klick=0;
           DelAll();
           Menu7();
           WindowRedraw();
           for (i=1; i<3000;i++)         
               {
                if (ObjectGet("Buy",OBJPROP_TIME1)!=X){Klick=1;break;}
                if (ObjectGet("Sell",OBJPROP_TIME1)!=X){Klick=2;break;}
                if (ObjectGet("All",OBJPROP_TIME1)!=X){Klick=3;break;}
                if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
                Sleep(100);
               }
           if (Klick==1)
              {
               Klick=0;
               DelAll();
               Menu10();
               BU(1);
               WindowRedraw();
               for (i=1; i<3000;i++)         
                   {
                    if (ObjectGet("Modify",OBJPROP_TIME1)!=X){Klick=1;break;}
                    if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
                    Sleep(100);
                   }
               if (Klick==1 && ObjectGet("TP",OBJPROP_PRICE1)!=Y(50))
                  {
                   Profit=NormalizeDouble(ObjectGet("TP",OBJPROP_PRICE1),Digits);
                   for (i=0; i<OrdersTotal(); i++)
                       {
                        OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                        if (OrderSymbol()==Symbol())
                           {
                            if (OrderType()==0)
                               {
                                if (Bid<Profit)ModifyOrder(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Profit);
                                if (Bid>Profit)ModifyOrder(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Profit-MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits),OrderStopLoss());
                               }
                            }
                       }
                   DelAll();
                   return(0);
                  }
               DelAll();
               return(0);
              }
           if (Klick==2)
              {
               Klick=0;
               DelAll();
               Menu10();
               BU(2);
               WindowRedraw();
               for (i=1; i<3000;i++)         
                   {
                    if (ObjectGet("Modify",OBJPROP_TIME1)!=X){Klick=1;break;}
                    if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
                    Sleep(100);
                   }
               if (Klick==1 && ObjectGet("TP",OBJPROP_PRICE1)!=Y(50))
                  {
                   Profit=NormalizeDouble(ObjectGet("TP",OBJPROP_PRICE1),Digits);
                   for (i=0; i<OrdersTotal(); i++)
                       {
                        OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                        if (OrderSymbol()==Symbol())
                           {
                            if (OrderType()==1)
                               {
                                if (Bid>Profit)ModifyOrder(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Profit);
                                if (Bid<Profit)ModifyOrder(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Profit+MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits),OrderStopLoss());
                               }
                            }
                       }
                   DelAll();
                   return(0);
                  }
               DelAll();
               return(0);
              }
           if (Klick==3)
              {
               Klick=0;
               DelAll();
               Menu10();
               BU(3);
               WindowRedraw();
               for (i=1; i<3000;i++)         
                   {
                    if (ObjectGet("Modify",OBJPROP_TIME1)!=X){Klick=1;break;}
                    if (ObjectGet("Exit",OBJPROP_TIME1)!=X){Klick=4;DelAll();break;}
                    Sleep(100);
                   }
               if (Klick==1 && ObjectGet("TP",OBJPROP_PRICE1)!=Y(50))
                  {
                   Profit=NormalizeDouble(ObjectGet("TP",OBJPROP_PRICE1),Digits);
                   for (i=0; i<OrdersTotal(); i++)
                       {
                        OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                        if (OrderSymbol()==Symbol())
                           {
                            if (OrderType()==0)
                               {
                                if (Bid<Profit)ModifyOrder(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Profit);
                                if (Bid>Profit)ModifyOrder(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Profit-MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits),OrderStopLoss());
                               }
                            if (OrderType()==1)
                               {
                                if (Bid>Profit)ModifyOrder(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Profit);
                                if (Bid<Profit)ModifyOrder(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Profit+MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits),OrderStopLoss());
                               }
                            }
                       }
                   DelAll();
                   return(0);
                  }
               DelAll();
               return(0);
              }
           DelAll();
           return(0);
          }
          
      }
   //DelAll();
   return(0);
  }
//--------------------------------------------------------------------
//                              Ôóíêöèè
//--------------------------------------------------------------------
double Y(int H)
  {
   double ykoord=Y1-(Y1-Y2)*H/100;
   return (ykoord);
  }
//--------------------------------------------------------------------
void Menu1()
  {
   Rect();
   
   ObjectCreate("Open",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("Open","Îòêðûòèå",16,"Times New Roman",Menucol);
   
   ObjectCreate("Close",OBJ_TEXT,0,X,Y(25));
   ObjectSetText("Close","Çàêðûòèå",16,"Times New Roman",Menucol);
   
   ObjectCreate("Modify",OBJ_TEXT,0,X,Y(45));
   ObjectSetText("Modify","Ìîäèôèêàöèÿ",16,"Times New Roman",Menucol);
   
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }
//---------------------------------------------------------------------
void Menu2()
  {
   Rect();
   
   ObjectCreate("Market",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("Market","Ðûíî÷íûé",16,"Times New Roman",Menucol);
   
   ObjectCreate("Pending",OBJ_TEXT,0,X,Y(25));
   ObjectSetText("Pending","Îòëîæåííûé",16,"Times New Roman",Menucol);
   
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }
//---------------------------------------------------------------------
void Menu3()
  {
   Rect();
   
   ObjectCreate("Buy",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("Buy","Buy",16,"Times New Roman",Menucol);
   
   ObjectCreate("Sell",OBJ_TEXT,0,X,Y(25));
   ObjectSetText("Sell","Sell",16,"Times New Roman",Menucol);
   
   ObjectCreate("TP",OBJ_ARROW,0,XTP,Y(50));
   ObjectSet("TP",OBJPROP_ARROWCODE,5);
   ObjectSet("TP",OBJPROP_COLOR,Green);
   
   ObjectCreate("SL",OBJ_ARROW,0,X2-Period()*60,Y(50));
   ObjectSet("SL",OBJPROP_ARROWCODE,5);
   ObjectSet("SL",OBJPROP_COLOR,Red);
   
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }
//---------------------------------------------------------------------
void Menu4()
  {
   Rect();
   
   ObjectCreate("Stop",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("Stop","Stop",16,"Times New Roman",Menucol);
   
   ObjectCreate("Limit",OBJ_TEXT,0,X,Y(25));
   ObjectSetText("Limit","Limit",16,"Times New Roman",Menucol);
   
   ObjectCreate("OP",OBJ_ARROW,0,XOP,Y(50));
   ObjectSet("OP",OBJPROP_ARROWCODE,5);
   ObjectSet("OP",OBJPROP_COLOR,Menucol);
   
   ObjectCreate("TP",OBJ_ARROW,0,XTP,Y(50));
   ObjectSet("TP",OBJPROP_ARROWCODE,5);
   ObjectSet("TP",OBJPROP_COLOR,Green);
   
   ObjectCreate("SL",OBJ_ARROW,0,X2,Y(50));
   ObjectSet("SL",OBJPROP_ARROWCODE,5);
   ObjectSet("SL",OBJPROP_COLOR,Red);
   
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }
//---------------------------------------------------------------------
void Menu5()
  {
   Rect();
   
   ObjectCreate("One",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("One","Îäèí",16,"Times New Roman",Menucol);
   
   ObjectCreate("Group",OBJ_TEXT,0,X,Y(25));
   ObjectSetText("Group","Ãðóïïà",16,"Times New Roman",Menucol);
   
   ObjectCreate("Pending",OBJ_TEXT,0,X,Y(45));
   ObjectSetText("Pending","Îòëîæåííûå",16,"Times New Roman",Menucol);
   
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }
//---------------------------------------------------------------------
void Menu6()
  {
   Rect();
   
   ObjectCreate("Close",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("Close","Çàêðûòü",16,"Times New Roman",Menucol);
   
   ObjectCreate("OP",OBJ_ARROW,0,XOP,Y(50));
   ObjectSet("OP",OBJPROP_ARROWCODE,5);
   ObjectSet("OP",OBJPROP_COLOR,Menucol);
   
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }
//---------------------------------------------------------------------
void Menu7()
  {
   Rect();
   
   ObjectCreate("Buy",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("Buy","Buy",16,"Times New Roman",Menucol);
   
   ObjectCreate("Sell",OBJ_TEXT,0,X,Y(25));
   ObjectSetText("Sell","Sell",16,"Times New Roman",Menucol);
   
   ObjectCreate("All",OBJ_TEXT,0,X,Y(45));
   ObjectSetText("All","Âñå",16,"Times New Roman",Menucol);
      
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }
//---------------------------------------------------------------------
void Menu8()
  {
   Rect();
   
   ObjectCreate("One",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("One","Îäèí",16,"Times New Roman",Menucol);
   
   ObjectCreate("Group",OBJ_TEXT,0,X,Y(25));
   ObjectSetText("Group","Ãðóïïà",16,"Times New Roman",Menucol);
   
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }   
//---------------------------------------------------------------------
void Menu9()
  {
   Rect();
   
   ObjectCreate("Modify",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("Modify","Ìîäèôèêàöèÿ",16,"Times New Roman",Menucol);
   
   ObjectCreate("OP",OBJ_ARROW,0,XOP,Y(50));
   ObjectSet("OP",OBJPROP_ARROWCODE,5);
   ObjectSet("OP",OBJPROP_COLOR,Menucol);
   
   ObjectCreate("TP",OBJ_ARROW,0,XTP,Y(50));
   ObjectSet("TP",OBJPROP_ARROWCODE,5);
   ObjectSet("TP",OBJPROP_COLOR,Green);
   
   ObjectCreate("SL",OBJ_ARROW,0,X2,Y(50));
   ObjectSet("SL",OBJPROP_ARROWCODE,5);
   ObjectSet("SL",OBJPROP_COLOR,Red);
   
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }
//---------------------------------------------------------------------
void Menu10()
  {
   Rect();
   
   ObjectCreate("Modify",OBJ_TEXT,0,X,Y(5));
   ObjectSetText("Modify","Ìîäèôèêàöèÿ",16,"Times New Roman",Menucol);
   
   ObjectCreate("TP",OBJ_ARROW,0,XOP,Y(50));
   ObjectSet("TP",OBJPROP_ARROWCODE,5);
   ObjectSet("TP",OBJPROP_COLOR,Green);
   
   ObjectCreate("Line",OBJ_TEXT,0,X,Y(60));
   ObjectSetText("Line","---------------------",16,"Times New Roman",Menucol);
   
   ObjectCreate("Exit",OBJ_TEXT,0,X,Y(75));
   ObjectSetText("Exit","Âûõîä",16,"Times New Roman",Menucol);
  }
//---------------------------------------------------------------------
void Rect()
  {
   ObjectCreate("Rect1",OBJ_TREND,0,X1,Y1,X2,Y1);
   ObjectSet("Rect1",OBJPROP_COLOR,Menucol);
   ObjectSet("Rect1",OBJPROP_WIDTH,4);
   ObjectSet("Rect1",OBJPROP_BACK,false);
   ObjectSet("Rect1",OBJPROP_RAY,false);
   
   ObjectCreate("Rect2",OBJ_TREND,0,X1,Y2,X2,Y2);
   ObjectSet("Rect2",OBJPROP_COLOR,Menucol);
   ObjectSet("Rect2",OBJPROP_WIDTH,4);
   ObjectSet("Rect2",OBJPROP_BACK,false);
   ObjectSet("Rect2",OBJPROP_RAY,false);
   
   ObjectCreate("Rect3",OBJ_TREND,0,X1,Y1,X1,Y2);
   ObjectSet("Rect3",OBJPROP_COLOR,Menucol);
   ObjectSet("Rect3",OBJPROP_WIDTH,4);
   ObjectSet("Rect3",OBJPROP_BACK,false);
   ObjectSet("Rect3",OBJPROP_RAY,false);
   
   ObjectCreate("Rect4",OBJ_TREND,0,X2,Y1,X2,Y2);
   ObjectSet("Rect4",OBJPROP_COLOR,Menucol);
   ObjectSet("Rect4",OBJPROP_WIDTH,4);
   ObjectSet("Rect4",OBJPROP_BACK,false);
   ObjectSet("Rect4",OBJPROP_RAY,false);
  }
//---------------------------------------------------------------------
void BU(int mode)
  {
   double Lots,Summ,bu;
   for (int i=0; i<OrdersTotal(); i++)
        {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if (OrderSymbol()==Symbol() && OrderType()==0 && (mode==1 || mode==3)){Lots=Lots+OrderLots();Summ=Summ+OrderLots()*OrderOpenPrice();}
         if (OrderSymbol()==Symbol() && OrderType()==1 && (mode==2 || mode==3)){Lots=Lots-OrderLots();Summ=Summ-OrderLots()*OrderOpenPrice();}
        }
   if (Lots==0)return(0); 
   bu=Summ/Lots;
   ObjectCreate("Óðîâåíü áåçóáûòêà îðäåðîâ",OBJ_ARROW,0,Time[0],bu);
   ObjectSet("Óðîâåíü áåçóáûòêà îðäåðîâ",OBJPROP_ARROWCODE,6);
   ObjectSet("Óðîâåíü áåçóáûòêà îðäåðîâ",OBJPROP_COLOR,Menucol);
  }   
//---------------------------------------------------------------------
void DelAll()
  {
   if (ObjectFind("Rect1")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Rect1");
             if (ObjectFind("Rect1")<0)break;
            }
       }
   if (ObjectFind("Rect2")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Rect2");
             if (ObjectFind("Rect2")<0)break;
            }
       }
   if (ObjectFind("Rect3")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Rect3");
             if (ObjectFind("Rect3")<0)break;
            }
       }
   if (ObjectFind("Rect4")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Rect4");
             if (ObjectFind("Rect4")<0)break;
            }
       }
   if (ObjectFind("Open")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Open");
             if (ObjectFind("Open")<0)break;
            }
       }
   if (ObjectFind("Close")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Close");
             if (ObjectFind("Close")<0)break;
            }
       }
   if (ObjectFind("Modify")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Modify");
             if (ObjectFind("Modify")<0)break;
            }
       }
   if (ObjectFind("Line")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Line");
             if (ObjectFind("Line")<0)break;
            }
       }
   if (ObjectFind("Exit")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Exit");
             if (ObjectFind("Exit")<0)break;
            }
       }
   if (ObjectFind("Market")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Market");
             if (ObjectFind("Market")<0)break;
            }
       }
   if (ObjectFind("Pending")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Pending");
             if (ObjectFind("Pending")<0)break;
            }
       }
   if (ObjectFind("Buy")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Buy");
             if (ObjectFind("Buy")<0)break;
            }
       }
   if (ObjectFind("Sell")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Sell");
             if (ObjectFind("Sell")<0)break;
            }
       }
   if (ObjectFind("TP")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("TP");
             if (ObjectFind("TP")<0)break;
            }
       }
   if (ObjectFind("SL")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("SL");
             if (ObjectFind("SL")<0)break;
            }
       }
   if (ObjectFind("OP")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("OP");
             if (ObjectFind("OP")<0)break;
            }
       }
   if (ObjectFind("Stop")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Stop");
             if (ObjectFind("Stop")<0)break;
            }
       }
   if (ObjectFind("Limit")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Limit");
             if (ObjectFind("Limit")<0)break;
            }
       }
   if (ObjectFind("One")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("One");
             if (ObjectFind("One")<0)break;
            }
       }
   if (ObjectFind("Group")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Group");
             if (ObjectFind("Group")<0)break;
            }
       }
   if (ObjectFind("All")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("All");
             if (ObjectFind("All")<0)break;
            }
       }
   if (ObjectFind("Óðîâåíü áåçóáûòêà îðäåðîâ")==0)
      {
       while(!IsStopped())
            {
             ObjectDelete("Óðîâåíü áåçóáûòêà îðäåðîâ");
             if (ObjectFind("Óðîâåíü áåçóáûòêà îðäåðîâ")<0)break;
            }
       }
   
  }
//----------------------------------------------------------------------------
int TicketOP( double op)
    {
     int ticket;
     double rast=10000000;
     for (int i=0; i<OrdersTotal(); i++)
         {
          OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          if (OrderSymbol()==Symbol() && MathAbs(OrderOpenPrice()-op)<rast)
             {
              rast=MathAbs(OrderOpenPrice()-op);
              ticket=OrderTicket();
             }
         }
     return(ticket);
    } 
//----------------------------------------------------------------------------
int OpenOrder(string symbol,int cmd,double volume,double price,double stoploss,double takeprofit,string comment,int magic)
             {
              int err,i,ticket;
              while(i<3)
                   {
                    RefreshRates();
                    if (cmd==0)ticket=OrderSend(symbol,cmd,volume,NormalizeDouble(Ask,Digits),3,NormalizeDouble(stoploss,Digits),NormalizeDouble(takeprofit,Digits),comment,magic);
                    if (cmd==1)ticket=OrderSend(symbol,cmd,volume,NormalizeDouble(Bid,Digits),3,NormalizeDouble(stoploss,Digits),NormalizeDouble(takeprofit,Digits),comment,magic);
                    if (cmd>1)ticket=OrderSend(symbol,cmd,volume,NormalizeDouble(price,Digits),3,NormalizeDouble(stoploss,Digits),NormalizeDouble(takeprofit,Digits),comment,magic);
                    err = GetLastError();
                    if (err == 0) break;
                    Alert("Urdala_Helper (",Symbol(),") ",Error(err),"  ïðè îòêðûòèè îðäåðà");
                    Sleep(1000);
                    i++;
                    
                   }
              return(ticket);
             }
//----------------------------------------------------------------------------
int CloseOrder(int ticket, double lots, double price)
              {
               int err,i;
               OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
               while(i<3)
                   {
                    RefreshRates();
                    if (OrderType()==0)OrderClose(ticket,lots,NormalizeDouble(Bid,Digits),3);
                    if (OrderType()==1)OrderClose(ticket,lots,NormalizeDouble(Ask,Digits),3);
                    if (OrderType()>1)OrderClose(ticket,lots,NormalizeDouble(price,Digits),3);
                    err = GetLastError();
                    if (err == 0) break;
                    Alert("Urdala_Helper (",Symbol(),") ",Error(err),"  ïðè çàêðûòèè îðäåðà");
                    Sleep(1000);
                    i++;
                    
                   }
               return(0);
              }
//----------------------------------------------------------------------------
int ModifyOrder(int ticket,double price,double stoploss,double takeprofit)
               {
                int err,i;
                while(i<3)
                   {
                    RefreshRates();
                    OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),NormalizeDouble(takeprofit,Digits),0,CLR_NONE);
                    err = GetLastError();
                    if (err == 0) break;
                    Alert("Urdala_Helper (",Symbol(),") ",Error(err),"  ïðè ìîäèôèêàöèè îðäåðà");
                    Sleep(1000);
                    i++;
                    
                   }
                return(0);
               }
//----------------------------------------------------------------------------
string Error(int error_code)
  {
   string error_string;
   switch(error_code)
     {
      case 0:   error_string="Íåò îøèáîê";                                                     break;
      case 1:   error_string="Íåò îøèáêè, íî ðåçóëüòàò íåèçâåñòåí";                            break;
      case 2:   error_string="Îáùàÿ îøèáêà";                                                   break;
      case 3:   error_string="Íåïðàâèëüíûå ïàðàìåòðû";                                         break;
      case 4:   error_string="Òîðãîâûé ñåðâåð çàíÿò";                                          break;
      case 5:   error_string="Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà";                            break;
      case 6:   error_string="Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì";                                  break;
      case 7:   error_string="Íåäîñòàòî÷íî ïðàâ";                                              break;
      case 8:   error_string="Ñëèøêîì ÷àñòûå çàïðîñû";                                         break;
      case 9:   error_string="Íåäîïóñòèìàÿ îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà";      break;
      case 64:  error_string="Ñ÷åò çàáëîêèðîâàí";                                              break;
      case 65:  error_string="Íåïðàâèëüíûé íîìåð ñ÷åòà";                                       break;
      case 128: error_string="Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè";                          break;
      case 129: error_string="Íåïðàâèëüíàÿ öåíà";                                              break;
      case 130: error_string="Íåïðàâèëüíûå ñòîïû";                                             break;
      case 131: error_string="Íåïðàâèëüíûé îáúåì";                                             break;
      case 132: error_string="Ðûíîê çàêðûò";                                                   break;
      case 133: error_string="Òîðãîâëÿ çàïðåùåíà";                                             break;  
      case 134: error_string="Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè";                     break;
      case 135: error_string="Öåíà èçìåíèëàñü";                                                break;
      case 136: error_string="Íåò öåí";                                                        break;
      case 137: error_string="Áðîêåð çàíÿò";                                                   break;
      case 138: error_string="Íîâûå öåíû";                                                     break;
      case 139: error_string="Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ";                        break;
      case 140: error_string="Ðàçðåøåíà òîëüêî ïîêóïêà";                                       break;
      case 141: error_string="Ñëèøêîì ìíîãî çàïðîñîâ";                                         break;
      case 145: error_string="Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó";    break;
      case 146: error_string="Ïîäñèñòåìà òîðãîâëè çàíÿòà";                                     break;
      case 147: error_string="Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì";         break;
      case 148: error_string="Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì.";break;
      case 4000: error_string="Íåò îøèáêè";                                                      break;
      case 4001: error_string="Íåïðàâèëüíûé óêàçàòåëü ôóíêöèè";                                  break;
      case 4002: error_string="Èíäåêñ ìàññèâà - âíå äèàïàçîíà";                                  break;
      case 4003: error_string="Íåò ïàìÿòè äëÿ ñòåêà ôóíêöèé";                                    break;
      case 4004: error_string="Ïåðåïîëíåíèå ñòåêà ïîñëå ðåêóðñèâíîãî âûçîâà";                    break;
      case 4005: error_string="Íà ñòåêå íåò ïàìÿòè äëÿ ïåðåäà÷è ïàðàìåòðîâ";                     break;
      case 4006: error_string="Íåò ïàìÿòè äëÿ ñòðîêîâîãî ïàðàìåòðà";                             break;
      case 4007: error_string="Íåò ïàìÿòè äëÿ âðåìåííîé ñòðîêè";                                 break;
      case 4008: error_string="Íåèíèöèàëèçèðîâàííàÿ ñòðîêà";                                     break;
      case 4009: error_string="Íåèíèöèàëèçèðîâàííàÿ ñòðîêà â ìàññèâå";                           break;
      case 4010: error_string="Íåò ïàìÿòè äëÿ ñòðîêîâîãî ìàññèâà";                               break;
      case 4011: error_string="Ñëèøêîì äëèííàÿ ñòðîêà";                                          break;
      case 4012: error_string="Îñòàòîê îò äåëåíèÿ íà íîëü";                                      break;
      case 4013: error_string="Äåëåíèå íà íîëü";                                                 break;
      case 4014: error_string="Íåèçâåñòíàÿ êîìàíäà";                                             break;
      case 4015: error_string="Íåïðàâèëüíûé ïåðåõîä";                                            break;
      case 4016: error_string="Íåèíèöèàëèçèðîâàííûé ìàññèâ";                                     break;
      case 4017: error_string="Âûçîâû DLL íå ðàçðåøåíû";                                         break;
      case 4018: error_string="Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó";                                 break;
      case 4019: error_string="Íåâîçìîæíî âûçâàòü ôóíêöèþ";                                      break;
      case 4020: error_string="Âûçîâû âíåøíèõ áèáëèîòå÷íûõ ôóíêöèé íå ðàçðåøåíû";                break;
      case 4021: error_string="Íåäîñòàòî÷íî ïàìÿòè äëÿ ñòðîêè, âîçâðàùàåìîé èç ôóíêöèè";         break;
      case 4022: error_string="Ñèñòåìà çàíÿòà";                                                  break;
      case 4050: error_string="Íåïðàâèëüíîå êîëè÷åñòâî ïàðàìåòðîâ ôóíêöèè";                      break;
      case 4051: error_string="Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè";                         break;
      case 4052: error_string="Âíóòðåííÿÿ îøèáêà ñòðîêîâîé ôóíêöèè";                             break;
      case 4053: error_string="Îøèáêà ìàññèâà";                                                  break;
      case 4054: error_string="Íåïðàâèëüíîå èñïîëüçîâàíèå ìàññèâà-òàéìñåðèè";                    break;
      case 4055: error_string="Îøèáêà ïîëüçîâàòåëüñêîãî èíäèêàòîðà";                             break;
      case 4056: error_string="Ìàññèâû íåñîâìåñòèìû";                                            break;
      case 4057: error_string="Îøèáêà îáðàáîòêè ãëîáàëüíûåõ ïåðåìåííûõ";                         break;
      case 4058: error_string="Ãëîáàëüíàÿ ïåðåìåííàÿ íå îáíàðóæåíà";                             break;
      case 4059: error_string="Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå";                          break;
      case 4060: error_string="Ôóíêöèÿ íå ðàçðåøåíà";                                            break;
      case 4061: error_string="Îøèáêà îòïðàâêè ïî÷òû";                                           break;
      case 4062: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà string";                                  break;
      case 4063: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà integer";                                 break;
      case 4064: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà double";                                  break;
      case 4065: error_string=" êà÷åñòâå ïàðàìåòðà îæèäàåòñÿ ìàññèâ";                           break;
      case 4066: error_string="Çàïðîøåííûå èñòîðè÷åñêèå äàííûå â ñîñòîÿíèè îáíîâëåíèÿ";          break;
      case 4067: error_string="Îøèáêà ïðè âûïîëíåíèè òîðãîâîé îïåðàöèè";                         break;
      case 4099: error_string="Êîíåö ôàéëà";                                                     break;
      case 4100: error_string="Îøèáêà ïðè ðàáîòå ñ ôàéëîì";                                      break;
      case 4101: error_string="Íåïðàâèëüíîå èìÿ ôàéëà";                                          break;
      case 4102: error_string="Ñëèøêîì ìíîãî îòêðûòûõ ôàéëîâ";                                   break;
      case 4103: error_string="Íåâîçìîæíî îòêðûòü ôàéë";                                         break;
      case 4104: error_string="Íåñîâìåñòèìûé ðåæèì äîñòóïà ê ôàéëó";                             break;
      case 4105: error_string="Íè îäèí îðäåð íå âûáðàí";                                         break;
      case 4106: error_string="Íåèçâåñòíûé ñèìâîë";                                              break;
      case 4107: error_string="Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè";                 break;
      case 4108: error_string="Íåâåðíûé íîìåð òèêåòà";                                           break;
      case 4109: error_string="Òîðãîâëÿ íå ðàçðåøåíà. Íåîáõîäèìî âêëþ÷èòü îïöèþ Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü â ñâîéñòâàõ ýêñïåðòà.";            break;
      case 4110: error_string="Äëèííûå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà.";           break;
      case 4111: error_string="Êîðîòêèå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà.";          break;
      case 4200: error_string="Îáúåêò óæå ñóùåñòâóåò";                                           break;
      case 4201: error_string="Çàïðîøåíî íåèçâåñòíîå ñâîéñòâî îáúåêòà";                          break;
      case 4202: error_string="Îáúåêò íå ñóùåñòâóåò";                                            break;
      case 4203: error_string="Íåèçâåñòíûé òèï îáúåêòà";                                         break;
      case 4204: error_string="Íåò èìåíè îáúåêòà";                                               break;
      case 4205: error_string="Îøèáêà êîîðäèíàò îáúåêòà";                                        break;
      case 4206: error_string="Íå íàéäåíî óêàçàííîå ïîäîêíî";                                    break;
      default:   error_string="Îøèáêà ïðè ðàáîòå ñ îáúåêòîì";
     }
   return(error_string);
  }
//------------------------------------------------------------

Comments