cm-trade_system_290514

Author: Copyright 2014, cmillion@narod.ru
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt Closes Orders by itself
Miscellaneous
It plays sound alertsIt opens Message Boxes to the userIt issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
cm-trade_system_290514
//+------------------------------------------------------------------+
//|                                Copyright 2014, cmillion@narod.ru |
//|                                               http://cmillion.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, cmillion@narod.ru"
#property link      "http://cmillion.ru"
#property version   "2.00"
#property strict
#property description "Ñîâåòíèê äëÿ ðó÷íîé òîðãîâëè"
#property description "Ïîìîãàåò âûñòàâëÿòü îðäåðà è ñîïðîâîæäàòü ñäåëêè"

int     StopLoss_Buy=0,         //ñòîïëîññ
TakeProfit_Buy    = 0,          //òåéêïðîôèò
TrailingStop_Buy  = 0,          //òðåéëèíãñòîï, åñëè 0, òî íåò òðåéëèíãà
NoLoss_Buy        = 0,          //ïåðåâîä â áåçóáûòîê, åñëè 0, òî íåò ïåðåâîäà â áåçóáûòîê
StopLoss_Sell=0,                //ñòîïëîññ
TakeProfit_Sell   = 0,          //òåéêïðîôèò
TrailingStop_Sell = 0,          //òðåéëèíãñòîï, åñëè 0, òî íåò òðåéëèíãà
NoLoss_Sell       = 0;          //ïåðåâîä â áåçóáûòîê, åñëè 0, òî íåò ïåðåâîäà â áåçóáûòîê

input int      TrailingStep      = 1,     //øàã òðàëà
TrailingStart     = 0;                    //ìèíèìàëüíàÿ ïðèáûëü ñ êîòîðîé ñòàðòóåò òðàëë

extern double  Lot               = 0.1;   //ëîò
input int      slippage          = 3;     //ïðîñêàëüçûâàíèå
input int      delta             = 10;    //îòñòóï îò òåêóùåé öåíû äî îòëîæåííîãî îðäåðà 
input int      dpips             = 5;     //äèñêðåòíîñòü èçìåíåíèÿ ñòîïîâ
input double   dlot              = 0.1;   //äèñêðåòíîñòü èçìåíåíèÿ ëîòà
input double   dpr               = 1;     //äèñêðåòíîñòü èçìåíåíèÿ %
input bool     confirmation=true;         //ïîäòâåðæäåíèå äåéñòâèé
extern bool    TradeNoLossBuy    = true;  //ñòîïû îò óðîâíÿ áåçóáûòêà
extern bool    TradeNoLossSell   = true;  //ñòîïû îò óðîâíÿ áåçóáûòêà
extern int     Magic=0;                   //ìàãèê (åñëè -1 òî âñå ìàãèêè)

input string   Font        = "Times New Roman"; // Øðèôò
input int      Width       = 10;                // ðàçìåð
extern int      TypeWind=1;                     // òèï îêíà

extern int      TypeColor=0;                   // òèï öâåòîâîãî îôîðìëåíèÿ
input color    Color1     = clrBlack;          // öâåò 
input color    Color2     = clrWhite;          // öâåò 
input color    Color3     = clrBlue;           // öâåò 
input color    Color4     = clrRed;            // öâåò 
input color    Color5     = clrGreen;          // öâåò 
input color    Color6     = clrLemonChiffon;   // öâåò 
input color    Color7     = clrLightGray;      // öâåò 
input color    Color8     = clrSnow;           // öâåò 
input color    Color9     = clrGray;           // öâåò 

extern bool    MoveWindow=true;//ïåðåìåùàòü îêíî 

long X=10;
long Y=10;


double StopLossB,TakeProfitB,TrailingStopB,NoLossB,StopLossS,TakeProfitS,TrailingStopS,NoLossS;
string InpName="cm-Trade System";
double bid,risk=1,cz=100;
int STOPLEVEL;
string AC,knTpB,knSlB,knTsB,knNlB,knTpS,knSlS,knTsS,knNlS,knTrNlB,knTrNlS;
color Color_1,Color_2,Color_3,Color_4,Color_5,Color_6,Color_7,Color_8,Color_9;
//+------------------------------------------------------------------+
void _color(int t)
  {
   switch(t)
     {
      case 0:
         Color_1     = Color1;
         Color_2     = Color2;
         Color_3     = Color3;
         Color_4     = Color4;
         Color_5     = Color5;
         Color_6     = Color6;
         Color_7     = Color7;
         Color_8     = Color8;
         Color_9     = Color9;
         break;
      case 1:
         Color_1     = clrWhite;
         Color_2     = clrBlack;
         Color_3     = clrLime;
         Color_4     = clrRed;
         Color_5     = clrLime;
         Color_6     = clrGray;
         Color_7     = clrGray;
         Color_8     = clrDarkGray;
         Color_9     = clrBlack;
         break;
      case 2:
         Color_2     = clrBlack;
         Color_1     = clrWhite;
         Color_3     = clrLime;
         Color_4     = clrRed;
         Color_5     = clrLime;
         Color_6     = clrSlateGray;
         Color_7     = clrSlateGray;
         Color_8     = clrLightSteelBlue;
         Color_9     = clrBlack;
         break;
      case 3:
         Color_2     = clrBlack;
         Color_1     = clrWhite;
         Color_3     = clrLime;
         Color_4     = clrRed;
         Color_5     = clrLime;
         Color_6     = clrDarkGray;
         Color_7     = clrDarkGray;
         Color_8     = clrSilver;
         Color_9     = clrBlack;
         break;
      default:
         Color_1     = clrWhite;
         Color_2     = clrBlack;
         Color_3     = clrLime;
         Color_4     = clrRed;
         Color_5     = clrLime;
         Color_6     = clrDarkGray;
         Color_7     = clrDarkGray;
         Color_8     = clrSilver;
         Color_9     = clrBlack;
         break;
     }
  }
//+------------------------------------------------------------------+
int OnInit()
  {
   _color(TypeColor);
   AC=" "+AccountCurrency();
   knTpB = StringConcatenate("kn TakeProfit B ",Symbol());
   knSlB = StringConcatenate("kn StopLoss B ",Symbol());
   knTsB = StringConcatenate("kn TrailingStop B ",Symbol());
   knNlB = StringConcatenate("kn NoLoss B ",Symbol());

   knTpS = StringConcatenate("kn TakeProfit S ",Symbol());
   knSlS = StringConcatenate("kn StopLoss S ",Symbol());
   knTsS = StringConcatenate("kn TrailingStop S ",Symbol());
   knNlS = StringConcatenate("kn NoLoss S ",Symbol());

   knTrNlB = StringConcatenate("kn Tr NoLoss B ",Symbol());
   knTrNlS = StringConcatenate("kn Tr NoLoss S ",Symbol());

   GV();

   RectLabelCreate(0,InpName,0,10,30,270,360,Color_2,Color_1,STYLE_SOLID,1,false,MoveWindow,true,0);
   Redr(0,0,0,0,0,0,0,0,0,0);
   bid=Bid;Redraw();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,InpName);
   Del();
   ObjectDelete(0,"kn min");
   ObjectDelete(0,"kn color");
   ObjectDelete(0,"Symbol");
   ObjectDelete(0,"_fon1_");
   ObjectDelete(0,"_fon2_");
   ObjectDelete(0,"NoLoss_NLb");
   ObjectDelete(0,"NoLoss_NLs");
   ObjectDelete(0,"NoLoss_NL");
  }
//--------------------------------------------------------------------
void Del()
  {
   ObjectDelete(0,"_fon3_");
   ObjectDelete(0,"_5_");
   ObjectDelete(0,"_6_");
   ObjectDelete(0,"_7_");
   ObjectDelete(0,"_8_");
   ObjectDelete(0,"_9_");
   ObjectDelete(0,"_10_");
   ObjectDelete(0,"_11_");
   ObjectDelete(0,"_12_");
   ObjectDelete(0,"_13_");
   ObjectDelete(0,"_14_");
   ObjectDelete(0,"_15_");
   ObjectDelete(0,"_16_");
   ObjectDelete(0,"_17_");
   ObjectDelete(0,"2");
   ObjectDelete(0,"3");
   ObjectDelete(0,"4");
   ObjectDelete(0,"5");
   ObjectDelete(0,"6");
   ObjectDelete(0,"7");
   ObjectDelete(0,"8");
   ObjectDelete(0,"9");
   ObjectDelete(0,"10");
   ObjectDelete(0,"11");
   ObjectDelete(0,"12");
   ObjectDelete(0,"kn Buy");
   ObjectDelete(0,"kn Sell");
   ObjectDelete(0,"kn BuyStop");
   ObjectDelete(0,"kn SellLimit");
   ObjectDelete(0,"kn BuyLimit");
   ObjectDelete(0,"kn SellStop");
   ObjectDelete(0,"kn Del BuyStop");
   ObjectDelete(0,"kn Del SellLimit");
   ObjectDelete(0,"kn close Buy");
   ObjectDelete(0,"kn close Sell");
   ObjectDelete(0,"kn Del BuyLimit");
   ObjectDelete(0,"kn Del SellStop");

   ObjectDelete(0,knTpB);
   ObjectDelete(0,knSlB);
   ObjectDelete(0,knTsB);
   ObjectDelete(0,knNlB);
   ObjectDelete(0,knTpS);
   ObjectDelete(0,knSlS);
   ObjectDelete(0,knTsS);
   ObjectDelete(0,knNlS);
   ObjectDelete(0,knTrNlB);
   ObjectDelete(0,knTrNlS);

   ObjectDelete(0,StringConcatenate(knTpB," up"));
   ObjectDelete(0,StringConcatenate(knSlB," up"));
   ObjectDelete(0,StringConcatenate(knTsB," up"));
   ObjectDelete(0,StringConcatenate(knNlB," up"));

   ObjectDelete(0,StringConcatenate(knTpS," up"));
   ObjectDelete(0,StringConcatenate(knSlS," up"));
   ObjectDelete(0,StringConcatenate(knTsS," up"));
   ObjectDelete(0,StringConcatenate(knNlS," up"));

   ObjectDelete(0,StringConcatenate(knTpB," dn"));
   ObjectDelete(0,StringConcatenate(knSlB," dn"));
   ObjectDelete(0,StringConcatenate(knTsB," dn"));
   ObjectDelete(0,StringConcatenate(knNlB," dn"));

   ObjectDelete(0,StringConcatenate(knTpS," dn"));
   ObjectDelete(0,StringConcatenate(knSlS," dn"));
   ObjectDelete(0,StringConcatenate(knTsS," dn"));
   ObjectDelete(0,StringConcatenate(knNlS," dn"));

   ObjectDelete(0,"lot_");
   ObjectDelete(0,"kn lot pr");
   ObjectDelete(0,"kn lot l");
   ObjectDelete(0,"kn lot up");
   ObjectDelete(0,"kn lot dn");

   ObjectDelete(0,"kn CZ1");
   ObjectDelete(0,"_CZ1_");
   ObjectDelete(0,"kn CZ");

   ObjectDelete(0,"kn cz up");
   ObjectDelete(0,"kn cz dn");

   ObjectDelete(0,"spread");
   ObjectDelete(0,"Profit");
   ObjectDelete(0,"_Profit");
   ObjectDelete(0,"Equity");
   ObjectDelete(0,"_Equity");
   ObjectDelete(0,"Balance");
   ObjectDelete(0,"_Balance");
  }
//--------------------------------------------------------------------
int start()
  {
   chekbuttom();

   return(0);
  }
//--------------------------------------------------------------------
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=clrNONE,      //öâåò òåêñòà
                  const color             clrON=clrNONE,    //öâåò ôîíà
                  const color             clrOFF=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,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,clrNONE);
     }
   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);
  }
//--------------------------------------------------------------------
bool RectLabelCreate(const long             chart_ID=0,               // ID ãðàôèêà
                     const string           name="RectLabel",         // èìÿ ìåòêè
                     const int              sub_window=0,             // íîìåð ïîäîêíà
                     const long              x=0,                      // êîîðäèíàòà ïî îñè X
                     const long              y=0,                      // êîîðäèíàòà ïî îñè y
                     const int              width=50,                 // øèðèíà
                     const int              height=18,                // âûñîòà
                     const color            back_clr=clrNONE,  // öâåò ôîíà
                     const color            clr=clrNONE,       //öâåò ïëîñêîé ãðàíèöû (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // ñòèëü ïëîñêîé ãðàíèöû
                     const int              line_width=1,             // òîëùèíà ïëîñêîé ãðàíèöû
                     const bool             back=false,               // íà çàäíåì ïëàíå
                     const bool             selection=false,          // âûäåëèòü äëÿ ïåðåìåùåíèé
                     const bool             hidden=true,              // ñêðûò â ñïèñêå îáúåêòîâ
                     const long             z_order=0)                // ïðèîðèòåò íà íàæàòèå ìûøüþ
  {
   ResetLastError();
   if(ObjectFind(chart_ID,name)==-1)
     {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
     }
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
   return(true);
  }
//--------------------------------------------------------------------
bool LabelCreate(const long              chart_ID=0,               // ID ãðàôèêà
                 const string            name="Label",             // èìÿ ìåòêè
                 const int               sub_window=0,             // íîìåð ïîäîêíà
                 const long              x=0,                      // êîîðäèíàòà ïî îñè X
                 const long              y=0,                      // êîîðäèíàòà ïî îñè y
                 const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // óãîë ãðàôèêà äëÿ ïðèâÿçêè
                 const string            text="Label",             // òåêñò
                 const string            font="Arial",             // øðèôò
                 const int               font_size=10,             // ðàçìåð øðèôòà
                 const color             clr=clrNONE,
                 const double            angle=0.0,                // íàêëîí òåêñòà
                 const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // ñïîñîá ïðèâÿçêè
                 const bool              back=false,               // íà çàäíåì ïëàíå
                 const bool              selection=false,          // âûäåëèòü äëÿ ïåðåìåùåíèé
                 const bool              hidden=true,              // ñêðûò â ñïèñêå îáúåêòîâ
                 const long              z_order=0)                // ïðèîðèòåò íà íàæàòèå ìûøüþ
  {
   ResetLastError();
   if(ObjectFind(chart_ID,name)==-1)
     {
      if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0))
        {
         Print(__FUNCTION__,": íå óäàëîñü ñîçäàòü òåêñòîâóþ ìåòêó! Êîä îøèáêè = ",GetLastError());
         return(false);
        }
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
      ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
     }
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   return(true);
  }
//--------------------------------------------------------------------
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {

   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      string clickedChartObject=sparam;
      if(clickedChartObject=="kn min")
        {
         PlaySound("Ok.wav");
         TypeWind++;
         if(TypeWind>2) TypeWind=0;
         Del();
        }
      if(clickedChartObject=="kn color")
        {
         PlaySound("Ok.wav");
         TypeColor++;
         if(TypeColor>4) TypeColor=0;
        }
      Comment(clickedChartObject);
      chekbuttom();
     }
  }
//--------------------------------------------------------------------
bool SendOrder(int tip,double lot,double p)
  {
   if(confirmation)
     {
      string txt;
      if(tip==OP_BUY) txt=StringConcatenate("Îòêûòü ïîçèöèþ BUY ",DoubleToStr(lot,2)," ëîò ïî öåíå ",DoubleToStr(p,Digits)," ?");
      if(tip==OP_SELL) txt=StringConcatenate("Îòêûòü ïîçèöèþ SELL ",DoubleToStr(lot,2)," ëîò ïî öåíå ",DoubleToStr(p,Digits)," ?");
      if(tip==OP_BUYSTOP) txt=StringConcatenate("Îòêûòü îðäåð BUYSTOP ",DoubleToStr(lot,2)," ëîò ïî öåíå ",DoubleToStr(p,Digits)," ?");
      if(tip==OP_SELLSTOP) txt=StringConcatenate("Îòêûòü îðäåð SELLSTOP ",DoubleToStr(lot,2)," ëîò ïî öåíå ",DoubleToStr(p,Digits)," ?");
      if(tip==OP_BUYLIMIT) txt=StringConcatenate("Îòêûòü îðäåð BUYLIMIT ",DoubleToStr(lot,2)," ëîò ïî öåíå ",DoubleToStr(p,Digits)," ?");
      if(tip==OP_SELLLIMIT) txt=StringConcatenate("Îòêûòü îðäåð SELLLIMIT ",DoubleToStr(lot,2)," ëîò ïî öåíå ",DoubleToStr(p,Digits)," ?");
      int ret=MessageBox(txt,"",MB_YESNO);
      if(ret==IDNO) return(1);
     }
   int nn;
   while(true)
     {
      RefreshRates();
      if(OrderSend(Symbol(),tip,lot,p,slippage,0,0,NULL,Magic,0,clrNONE)==-1)
        {
         Print("Order Send Error ",GetLastError()," Lot ",lot);
         Sleep(1000);
        }
      else return(1);
      nn++;
      if(nn>10) return(0);
     }
   return(0);
  }
//--------------------------------------------------------------------
int Redraw()
  {
   RefreshRates();
   double StLo,OSL,OTP,OOP,SL,TP;
   STOPLEVEL=StrToInteger(DoubleToStr(MarketInfo(Symbol(),MODE_STOPLEVEL),0));
   double stoplevel=STOPLEVEL*Point;
   int b=0,s=0,bs=0,ss=0,bl=0,sl=0,tip;
   double OL,LB=0,LS=0,ProfitB=0,ProfitS=0;

   StopLossB     = Kn(knSlB,StopLossB);
   TakeProfitB   = Kn(knTpB,TakeProfitB);
   NoLossB       = Kn(knNlB,NoLossB);
   TrailingStopB = Kn(knTsB,TrailingStopB);
   StopLossS     = Kn(knSlS,StopLossS);
   TakeProfitS   = Kn(knTpS,TakeProfitS);
   NoLossS       = Kn(knNlS,NoLossS);
   TrailingStopS = Kn(knTsS,TrailingStopS);

   bool TrNoLossB = Kn(knTrNlB,1)==1;
   bool TrNoLossS = Kn(knTrNlS,1)==1;

   int i,Ticket;

   double price_b=0,price_s=0;
   for(i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))
           {
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            Ticket=OrderTicket();
            SL=OSL;TP=OTP;
            tip= OrderType();
            OL = OrderLots();
            if(tip==OP_BUY)
              {
               b++;
               LB+=OL;price_b+=(Bid-OOP)*OL+(OrderCommission()+OrderSwap())*Point;
               ProfitB+=OrderProfit()+OrderCommission()+OrderSwap();
               if(OSL==0 && Bid-NormalizeDouble(OOP-StopLossB  *Point,Digits)>=stoplevel && StopLossB!=0)
                 {
                  SL=NormalizeDouble(OOP-StopLossB  *Point,Digits);
                 }
               if(StopLossB==0 && NoLossB==0 && TrailingStopB==0) SL=0;
               if(TakeProfitB==0) TP=0;
               if(!TrNoLossB)
                 {
                  if(OTP==0 && NormalizeDouble(OOP+TakeProfitB*Point,Digits)-Ask>=stoplevel && TakeProfitB!=0)
                    {
                     TP=NormalizeDouble(OOP+TakeProfitB*Point,Digits);
                    }
                  if(OSL<OOP && NoLossB!=0)
                    {
                     if(Bid-OOP>=NoLossB*Point && Bid-OOP>=stoplevel) SL=OOP;
                    }
                  if(TrailingStopB!=0)
                    {
                     StLo=NormalizeDouble(Bid-TrailingStopB*Point,Digits);
                     if(StLo>=OOP+TrailingStart*Point && StLo>OSL+TrailingStep*Point && StLo<=NormalizeDouble(Bid-stoplevel,Digits)) SL=StLo;
                    }
                 }
               if(SL!=OSL || TP!=OTP)
                 {
                  Comment("Ìîäèôèêàöèÿ îðäåðà ",Ticket," Buy, SL ",OSL,"->",SL,", TP ",OTP,"->",TP);
                  if(!OrderModify(Ticket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());
                 }
              }
            if(tip==OP_SELL)
              {
               s++;
               LS+=OL;price_s+=(OOP-Ask)*OL+(OrderCommission()+OrderSwap())*Point;
               ProfitS+=OrderProfit()+OrderCommission()+OrderSwap();
               if(OSL==0 && NormalizeDouble(OOP+StopLossS  *Point,Digits)-Ask>=stoplevel && StopLossS!=0)
                 {
                  SL=NormalizeDouble(OOP+StopLossS  *Point,Digits);
                 }
               if(StopLossS==0 && NoLossS==0 && TrailingStopS==0) SL=0;
               if(TakeProfitS==0) TP=0;
               if(!TrNoLossS)
                 {
                  if(OTP==0 && Bid-NormalizeDouble(OOP-TakeProfitS*Point,Digits)>=stoplevel && TakeProfitS!=0)
                    {
                     TP=NormalizeDouble(OOP-TakeProfitS*Point,Digits);
                    }
                  if((OSL>OOP || OSL==0) && NoLossS!=0)
                    {
                     if(OOP-Ask>=NoLossS*Point && (OOP<OSL || OSL==0) && OOP-Ask>=stoplevel) SL=OOP;
                    }
                  if(TrailingStopS!=0)
                    {
                     StLo=NormalizeDouble(Ask+TrailingStopS*Point,Digits);
                     if(StLo<=OOP-TrailingStart*Point && (StLo<OSL-TrailingStep*Point || OSL==0) && StLo>=NormalizeDouble(Ask+stoplevel,Digits)) SL=StLo;
                    }
                 }
               if(SL!=OSL || TP!=OTP)
                 {
                  Comment("Ìîäèôèêàöèÿ îðäåðà ",Ticket," Sell, SL ",OSL,"->",SL,", TP ",OTP,"->",TP);
                  if(!OrderModify(Ticket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());
                 }
              }
            if(tip==OP_BUYSTOP)
              {
               bs++;
              }
            if(tip==OP_SELLLIMIT)
              {
               sl++;
              }
            if(tip==OP_BUYLIMIT)
              {
               bl++;
              }
            if(tip==OP_SELLSTOP)
              {
               ss++;
              }
           }
        }
     }
//---
   double NL=0,NLb=0,NLs=0;
   if(LB>0) NLb=Bid-price_b/LB;
   ARROW("NoLoss_NLb",NLb,6,Color_3);
   if(LS>0) NLs=Ask+price_s/LS;
   ARROW("NoLoss_NLs",NLs,6,Color_4);
   if(LB-LS>0) NL=Bid-(price_b+price_s)/(LB-LS);
   if(LB-LS<0) NL=Ask-(price_b+price_s)/(LB-LS);
   ARROW("NoLoss_NL",NL,6,clrYellow);

//---
   if(TrNoLossB || TrNoLossS)
     {
      for(i=0; i<OrdersTotal(); i++)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))
              {
               OSL = NormalizeDouble(OrderStopLoss(),Digits);
               OTP = NormalizeDouble(OrderTakeProfit(),Digits);
               OOP = NormalizeDouble(OrderOpenPrice(),Digits);
               Ticket=OrderTicket();
               SL=OSL;TP=OTP;
               tip= OrderType();
               OL = OrderLots();
               if(tip==OP_BUY && TrNoLossB)
                 {
                  if(NormalizeDouble(NLb+TakeProfitB*Point,Digits)-Ask>=stoplevel && TakeProfitB!=0)
                    {
                     TP=NormalizeDouble(NLb+TakeProfitB*Point,Digits);
                    }
                  if(OSL<OOP && NoLossB!=0)
                    {
                     if(Bid-NLb>=NoLossB*Point && Bid-NLb>=stoplevel) SL=NLb;
                    }
                  if(TrailingStopB!=0)
                    {
                     StLo=NormalizeDouble(Bid-TrailingStopB*Point,Digits);
                     if(StLo>=NLb+TrailingStart*Point && StLo>OSL+TrailingStep*Point && StLo<=NormalizeDouble(Bid-stoplevel,Digits)) SL=StLo;
                    }
                  if(SL!=OSL || TP!=OTP)
                    {
                     Comment("Ìîäèôèêàöèÿ îðäåðà ",Ticket," îò áåçóáûòêà Buy SL ",OSL,"->",SL,", TP ",OTP,"->",TP);
                     if(!OrderModify(Ticket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());
                    }
                 }
               if(tip==OP_SELL && TrNoLossS)
                 {
                  if(Bid-NormalizeDouble(NLs-TakeProfitS*Point,Digits)>=stoplevel && TakeProfitS!=0)
                    {
                     TP=NormalizeDouble(NLs-TakeProfitS*Point,Digits);
                    }
                  if((OSL>NLs || OSL==0) && NoLossS!=0)
                    {
                     if(NLs-Ask>=NoLossS*Point && (NLs<OSL || OSL==0) && NLs-Ask>=stoplevel) SL=NLs;
                    }
                  if(TrailingStopS!=0)
                    {
                     StLo=NormalizeDouble(Ask+TrailingStopS*Point,Digits);
                     if(StLo<=NLs-TrailingStart*Point && (StLo<OSL-TrailingStep*Point || OSL==0) && StLo>=NormalizeDouble(Ask+stoplevel,Digits)) SL=StLo;
                    }
                  if(SL!=OSL || TP!=OTP)
                    {
                     Comment("Ìîäèôèêàöèÿ îðäåðà ",Ticket," îò áåçóáûòêà Sell SL ",OSL,"->",SL,", TP ",OTP,"->",TP);
                     if(!OrderModify(Ticket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());
                    }
                 }
              }
           }
        }
     }
   Redr(LB,LS,ProfitB,ProfitS,bs,ss,b,s,sl,bl);
   return(0);
  }
//+------------------------------------------------------------------+
bool close(int tip)
  {
   if(confirmation)
     {
      string txt="Çàêðûòü âñå ïîçèöèè ";
      if(tip==OP_BUY) txt=StringConcatenate(txt,"BUY ?");
      if(tip==OP_SELL) txt=StringConcatenate(txt,"SELL ?");
      int ret=MessageBox(txt,"",MB_YESNO);
      if(ret==IDNO) return(1);
     }
   bool error=true;
   int j,err,nn,OT;
   while(!IsStopped())
     {
      for(j=OrdersTotal()-1; j>=0; j--)
        {
         if(OrderSelect(j,SELECT_BY_POS))
           {
            if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))
              {
               OT=OrderType();
               if(tip!=OT) continue;
               if(OT==OP_BUY)
                 {
                  error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,Blue);
                 }
               if(OT==OP_SELL)
                 {
                  error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,Red);
                 }
               if(!error)
                 {
                  err=GetLastError();
                  if(err<2) continue;
                  if(err==129)
                    {
                     RefreshRates();
                     continue;
                    }
                  if(err==146)
                    {
                     if(IsTradeContextBusy()) Sleep(2000);
                     continue;
                    }
                  Print("Error ",err," close order N ",OrderTicket(),"     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
                 }
              }
           }
        }
      int n=0;
      for(j= 0; j<OrdersTotal(); j++)
        {
         if(OrderSelect(j,SELECT_BY_POS))
           {
            if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))
              {
               OT=OrderType();
               if(tip!=OT) continue;
               if(OT==OP_BUY || OT==OP_SELL) n++;
              }
           }
        }
      if(n==0) break;
      nn++;
      if(nn>10)
        {
         return(0);
        }
      Sleep(1000);
      RefreshRates();
     }
   return(1);
  }
//--------------------------------------------------------------------
bool Delete(int tip)
  {
   if(confirmation)
     {
      string txt="Óäàëèòü îðäåðà ";
      if(tip==OP_BUYSTOP)  txt=StringConcatenate(txt,"BUYSTOP ?");
      if(tip==OP_SELLSTOP) txt=StringConcatenate(txt,"SELLSTOP ?");
      if(tip==OP_BUYLIMIT)  txt=StringConcatenate(txt,"BUYLIMIT ?");
      if(tip==OP_SELLLIMIT) txt=StringConcatenate(txt,"SELLLIMIT ?");
      int ret=MessageBox(txt,"",MB_YESNO);
      if(ret==IDNO) return(1);
     }
   bool error=true;
   int OT;
   for(int j=OrdersTotal()-1; j>=0; j--)
     {
      if(OrderSelect(j,SELECT_BY_POS))
        {
         if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))
           {
            OT=OrderType();
            if(tip!=OT || OT<2) continue;
            error=OrderDelete(OrderTicket());
           }
        }
     }
   return(1);
  }
//--------------------------------------------------------------------
void chekbuttom()
  {
   if(ObjectGetInteger(0,"kn Buy",OBJPROP_STATE))
     {
      if(SendOrder(OP_BUY,Lot,NormalizeDouble(Ask,Digits))) ObjectSetInteger(0,"kn Buy",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn Sell",OBJPROP_STATE))
     {
      if(SendOrder(OP_SELL,Lot,NormalizeDouble(Bid,Digits))) ObjectSetInteger(0,"kn Sell",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn BuyStop",OBJPROP_STATE))
     {
      if(SendOrder(OP_BUYSTOP,Lot,NormalizeDouble(Ask+delta*Point,Digits))) ObjectSetInteger(0,"kn BuyStop",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn SellLimit",OBJPROP_STATE))
     {
      if(SendOrder(OP_SELLLIMIT,Lot,NormalizeDouble(Ask+delta*Point,Digits))) ObjectSetInteger(0,"kn SellLimit",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn BuyLimit",OBJPROP_STATE))
     {
      if(SendOrder(OP_BUYLIMIT,Lot,NormalizeDouble(Bid-delta*Point,Digits))) ObjectSetInteger(0,"kn BuyLimit",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn SellStop",OBJPROP_STATE))
     {
      if(SendOrder(OP_SELLSTOP,Lot,NormalizeDouble(Bid-delta*Point,Digits))) ObjectSetInteger(0,"kn SellStop",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn Close Buy",OBJPROP_STATE))
     {
      close(OP_BUY);ObjectSetInteger(0,"kn Close Buy",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn Close Sell",OBJPROP_STATE))
     {
      close(OP_SELL);ObjectSetInteger(0,"kn Close Sell",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn Del BuyStop",OBJPROP_STATE))
     {
      Delete(OP_BUYSTOP);ObjectSetInteger(0,"kn Del BuyStop",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn Del SellLimit",OBJPROP_STATE))
     {
      Delete(OP_SELLLIMIT);ObjectSetInteger(0,"kn Del SellLimit",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn Del BuyLimit",OBJPROP_STATE))
     {
      Delete(OP_BUYLIMIT);ObjectSetInteger(0,"kn Del BuyLimit",OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,"kn Del SellStop",OBJPROP_STATE))
     {
      Delete(OP_SELLSTOP);ObjectSetInteger(0,"kn Del SellStop",OBJPROP_STATE,false);
     }

   if(ObjectGetInteger(0,"kn lot l",OBJPROP_STATE)) ObjectSetInteger(0,"kn lot pr",OBJPROP_STATE,false);
   else ObjectSetInteger(0,"kn lot pr",OBJPROP_STATE,true);

   if(ObjectGetInteger(0,"kn lot up",OBJPROP_STATE))
     {
      PlaySound("Ok.wav");
      if(ObjectGetInteger(0,"kn lot l",OBJPROP_STATE)) Lot+=dlot;
      else {risk+=dpr;Lot=AccountBalance()*risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED);}
      ObjectSetInteger(0,"kn lot up",OBJPROP_STATE,false);
      if(Lot>MarketInfo(Symbol(),MODE_MAXLOT)) Lot=MarketInfo(Symbol(),MODE_MAXLOT);
     }
   if(ObjectGetInteger(0,"kn lot dn",OBJPROP_STATE))
     {
      PlaySound("Ok.wav");
      if(ObjectGetInteger(0,"kn lot l",OBJPROP_STATE)) Lot-=dlot;
      else {risk-=dpr;Lot=AccountBalance()*risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED);}
      ObjectSetInteger(0,"kn lot dn",OBJPROP_STATE,false);
      if(Lot<MarketInfo(Symbol(),MODE_MINLOT)) Lot=MarketInfo(Symbol(),MODE_MINLOT);
     }

   if(ObjectGetInteger(0,"kn cz up",OBJPROP_STATE))
     {
      PlaySound("Ok.wav");
      cz+=10;
      ObjectSetInteger(0,"kn cz up",OBJPROP_STATE,false);
      if(cz>100) cz=100;
     }
   if(ObjectGetInteger(0,"kn cz dn",OBJPROP_STATE))
     {
      PlaySound("Ok.wav");
      cz-=10;
      ObjectSetInteger(0,"kn cz dn",OBJPROP_STATE,false);
      if(cz<0) cz=0;
     }

   kn_UP_DN(knSlB,StopLossB);
   kn_UP_DN(knTpB,TakeProfitB);
   kn_UP_DN(knTsB,TrailingStopB);
   kn_UP_DN(knNlB,NoLossB);

   kn_UP_DN(knSlS,StopLossS);
   kn_UP_DN(knTpS,TakeProfitS);
   kn_UP_DN(knTsS,TrailingStopS);
   kn_UP_DN(knNlS,NoLossS);

   GV();

/*   if (StopLossB<STOPLEVEL) StopLossB=STOPLEVEL;
   if (StopLossB<STOPLEVEL) StopLossB=0;
   if (TakeProfitB<STOPLEVEL) TakeProfitB=STOPLEVEL;
   if (TakeProfitB<STOPLEVEL) TakeProfitB=0;
   if (TrailingStopB<STOPLEVEL) TrailingStopB=STOPLEVEL;
   if (TrailingStopB<STOPLEVEL) TrailingStopB=0;
   if (NoLossB<STOPLEVEL) NoLossB=STOPLEVEL;
   if (NoLossB<STOPLEVEL) NoLossB=0;

   if (StopLossS<STOPLEVEL) StopLossS=STOPLEVEL;
   if (StopLossS<STOPLEVEL) StopLossS=0;
   if (TakeProfitS<STOPLEVEL) TakeProfitS=STOPLEVEL;
   if (TakeProfitS<STOPLEVEL) TakeProfitS=0;
   if (TrailingStopS<STOPLEVEL) TrailingStopS=STOPLEVEL;
   if (TrailingStopS<STOPLEVEL) TrailingStopS=0;
   if (NoLossS<STOPLEVEL) NoLossS=STOPLEVEL;
   if (NoLossS<STOPLEVEL) NoLossS=0;*/

   if(ObjectGetInteger(0,"kn CZ",OBJPROP_STATE))
     {
      closeCZ();PlaySound("Ok.wav");
      ObjectSetInteger(0,"kn CZ",OBJPROP_STATE,false);
     }

   Redraw();
   return;
  }
//--------------------------------------------------------------------
void kn_UP_DN(string name,double Price)
  {
   double Par;
   if(GlobalVariableCheck(StringConcatenate(name," PIPS"))) Par=GlobalVariableGet(StringConcatenate(name," PIPS"));
   else Par=Price;
   if(ObjectGetInteger(0,StringConcatenate(name," up"),OBJPROP_STATE))
     {
      PlaySound("Ok.wav");
      Par+=dpips;
      GlobalVariableSet(StringConcatenate(name," PIPS"),Par);
      ObjectSetInteger(0,StringConcatenate(name," up"),OBJPROP_STATE,false);
     }
   if(ObjectGetInteger(0,StringConcatenate(name," dn"),OBJPROP_STATE))
     {
      PlaySound("Ok.wav");
      Par-=dpips;
      if(Par<=0) GlobalVariableDel(StringConcatenate(name," PIPS"));
      else
        {
         GlobalVariableSet(StringConcatenate(name," PIPS"),Par);
        }
      ObjectSetInteger(0,StringConcatenate(name," dn"),OBJPROP_STATE,false);
     }
  }
//--------------------------------------------------------------------
bool closeCZ()
  {
   if(confirmation)
     {
      int ret=MessageBox(StringConcatenate("Çàêðûòü ",cz,"% âñåõ ïîçèöèè ?"),"",MB_YESNO);
      if(ret==IDNO) return(1);
     }
   bool error=true;
   int j,OT;
   for(j=OrdersTotal()-1; j>=0; j--)
     {
      if(OrderSelect(j,SELECT_BY_POS))
        {
         if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))
           {
            OT=OrderType();
            if(OT>1) continue;
            if(OT==OP_BUY)
              {
               error=OrderClose(OrderTicket(),NormalizeDouble(OrderLots()/100*cz,2),NormalizeDouble(Bid,Digits),3,Blue);
              }
            if(OT==OP_SELL)
              {
               error=OrderClose(OrderTicket(),NormalizeDouble(OrderLots()/100*cz,2),NormalizeDouble(Ask,Digits),3,Red);
              }
           }
        }
     }
   return(1);
  }
//--------------------------------------------------------------------
double Kn(string Name,double Price)
  {
   if(ObjectFind(0,Name)!=-1)
     {
      if(ObjectGetInteger(0,Name,OBJPROP_STATE))
        {
         if(Price==0)
           {
            Alert(Name," Óñòàíîâèòå çíà÷åíèå áîëüøå ñòîïëåâåë");
            ObjectSetInteger(0,Name,OBJPROP_STATE,false);
            GlobalVariableDel(Name);
           }
         if(!GlobalVariableCheck(Name)) GlobalVariableSet(Name,1);
         return(Price);
        }
      else
        {
         if(GlobalVariableCheck(Name)) GlobalVariableDel(Name);
         return(0);
        }
     }
   return(Price);
  }
//--------------------------------------------------------------------
void ARROW(string Name,double Price,int ARROWCODE,color c)
  {
   ObjectDelete(Name);
   ObjectCreate(Name,OBJ_ARROW,0,Time[0],Price,0,0,0,0);
   ObjectSetInteger(0,Name,OBJPROP_ARROWCODE,ARROWCODE);
   ObjectSetInteger(0,Name,OBJPROP_COLOR,c);
   ObjectSetInteger(0,Name,OBJPROP_WIDTH,1);
  }
//--------------------------------------------------------------------
void GV()
  {
   if(GlobalVariableCheck(StringConcatenate(knSlB," PIPS"))) StopLossB    = GlobalVariableGet(StringConcatenate(knSlB," PIPS")); else StopLossB      = StopLoss_Buy;
   if(GlobalVariableCheck(StringConcatenate(knTpB," PIPS"))) TakeProfitB  = GlobalVariableGet(StringConcatenate(knTpB," PIPS")); else TakeProfitB    = TakeProfit_Buy;
   if(GlobalVariableCheck(StringConcatenate(knTsB," PIPS"))) TrailingStopB= GlobalVariableGet(StringConcatenate(knTsB," PIPS")); else TrailingStopB  = TrailingStop_Buy;
   if(GlobalVariableCheck(StringConcatenate(knNlB," PIPS"))) NoLossB      = GlobalVariableGet(StringConcatenate(knNlB," PIPS")); else NoLossB        = NoLoss_Buy;

   if(GlobalVariableCheck(StringConcatenate(knSlS," PIPS"))) StopLossS    = GlobalVariableGet(StringConcatenate(knSlS," PIPS")); else StopLossS      = StopLoss_Sell;
   if(GlobalVariableCheck(StringConcatenate(knTpS," PIPS"))) TakeProfitS  = GlobalVariableGet(StringConcatenate(knTpS," PIPS")); else TakeProfitS    = TakeProfit_Sell;
   if(GlobalVariableCheck(StringConcatenate(knTsS," PIPS"))) TrailingStopS= GlobalVariableGet(StringConcatenate(knTsS," PIPS")); else TrailingStopS  = TrailingStop_Sell;
   if(GlobalVariableCheck(StringConcatenate(knNlS," PIPS"))) NoLossS      = GlobalVariableGet(StringConcatenate(knNlS," PIPS")); else NoLossS        = NoLoss_Sell;
  }
//--------------------------------------------------------------------
void Redr(double LB,double LS,double ProfitB,double ProfitS,int bs,int ss,int b,int s,int sl,int bl)
  {
   color cl;
   _color(TypeColor);
   double Profit=ProfitB+ProfitS;
   if(ObjectFind(InpName)==0)
     {
      ObjectGetInteger(0,InpName,OBJPROP_XDISTANCE,0,X);
      ObjectGetInteger(0,InpName,OBJPROP_YDISTANCE,0,Y);
      if(TypeWind==0)
        {
         RectLabelCreate(0,InpName,0,X,Y,152,140,Color_2,Color_1,STYLE_SOLID,3,false,true,true,1);
         Del();
        }
      else
        {
         if(TypeWind==1) RectLabelCreate(0,InpName,0,X,Y,300,240,Color_2,Color_2,STYLE_SOLID,3,false,true,true,1);
         if(TypeWind==2) RectLabelCreate(0,InpName,0,X,Y,300,360,Color_2,Color_2,STYLE_SOLID,3,false,true,true,1);
        }
     }
   long y=Y;
   RectLabelCreate(0,"_fon1_",0,X,y,150,40,Color_6,Color_7,STYLE_SOLID,1,false,false,true,0);
   if(TypeWind>0) RectLabelCreate(0,"_fon2_",0,X+150,y,150,40,Color_6,Color_7,STYLE_SOLID,1,false,false,true,0);
   else ObjectDelete("_fon2_");
   ButtonCreate(0,"kn min",0,X+2,y+2,18,18,CharToStr(244),"Wingdings",Width,Color_1,Color_8,Color_7,false);
   ButtonCreate(0,"kn color",0,X+2,y+20,18,18,CharToStr(83),"Wingdings",Width,Color_1,Color_8,Color_7,false);
   LabelCreate(0,"Symbol",0,X+80,y+20,CORNER_LEFT_UPPER,Symbol(),Font,Width+4,Color_1,0,ANCHOR_CENTER,false,false,true,0);
   if(TypeWind>0)
     {
      GV();
      if(bid>NormalizeDouble(Bid,Digits)) cl=Color_4; else cl=Color_3;
      bid=NormalizeDouble(Bid,Digits);
      LabelCreate(0,"2",0,X+225,y+20,CORNER_LEFT_UPPER,DoubleToStr(Bid,Digits),Font,Width+4,cl,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0,"spread",0,X+285,y+32,CORNER_LEFT_UPPER,DoubleToStr(MarketInfo(Symbol(),MODE_SPREAD),0),Font,Width-2,Color_1,0,ANCHOR_CENTER,false,false,true,0);
      y+=42;
      ButtonCreate(0,"kn lot l",0,X+2,y,130,18,StringConcatenate(DoubleToStr(Lot,2)," Lot"),Font,Width,Color_1,Color_8,Color_7,true);

      ButtonCreate(0,"kn lot up",0,X+131,y,18,18,CharToStr(217),"Wingdings",8,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,"kn cz up",0,X+281,y,18,18,CharToStr(217),"Wingdings",8,Color_1,Color_8,Color_7,false);

      RectLabelCreate(0,"_CZ1_",0,X+151,y,128,18,Color_2,Color_7,STYLE_SOLID,1,false,false,true,0);
      LabelCreate(0,"kn CZ1",0,X+220,y+9,CORNER_LEFT_UPPER,StringConcatenate("Çàêðûòü ",cz,"%"),Font,Width,Color_1,0,ANCHOR_CENTER,false,false,true,0);
      ButtonCreate(0,"kn CZ",0,X+151,y+20,128,18,StringConcatenate(DoubleToStr(Profit/100*cz,2),AC),Font,Width,Color_1,Color_8,Color_7,false);y+=20;

      ButtonCreate(0,"kn lot pr",0,X+2,y,130,18,StringConcatenate(DoubleToStr(Lot*100*MarketInfo(Symbol(),MODE_MARGINREQUIRED)/AccountBalance(),2)," %"),Font,Width,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,"kn lot dn",0,X+131,y,18,18,CharToStr(218),"Wingdings",8,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,"kn cz dn",0,X+281,y,18,18,CharToStr(218),"Wingdings",8,Color_1,Color_8,Color_7,false);y+=22;

      if(TypeWind==2)
        {
         RectLabelCreate(0,"_5_",0,X+151,y,73,26,Color_2,Color_7,STYLE_SOLID,1,false,false,true,0);
         LabelCreate(0,"5",0,X+185,y+13,CORNER_LEFT_UPPER,DoubleToStr(bs,0),Font,Width+0,Color_1,0,ANCHOR_CENTER,false,false,true,0);
         ButtonCreate(0,"kn Del BuyStop",0,X+225,y,73,26,"del",Font,Width,Color_5,Color_9,Color_7,false);
         ButtonCreate(0,"kn BuyStop",0,X+1,y,148,26,StringConcatenate("BuyStop ",delta),Font,Width,Color_5,Color_9,Color_7,false);y+=30;

         RectLabelCreate(0,"_6_",0,X+151,y,73,26,Color_2,Color_7,STYLE_SOLID,1,false,false,true,0);
         LabelCreate(0,"6",0,X+185,y+13,CORNER_LEFT_UPPER,DoubleToStr(sl,0),Font,Width+0,Color_1,0,ANCHOR_CENTER,false,false,true,0);
         ButtonCreate(0,"kn Del SellLimit",0,X+225,y,73,26,"del",Font,Width,Color_4,Color_9,Color_7,false);
         ButtonCreate(0,"kn SellLimit",0,X+1,y,148,26,StringConcatenate("SellLimit ",delta),Font,Width,Color_4,Color_9,Color_7,false);y+=30;
        }
      else
        {
         ObjectDelete("5");
         ObjectDelete("6");
         ObjectDelete("_5_");
         ObjectDelete("_6_");
         ObjectDelete("kn BuyStop");
         ObjectDelete("kn SellLimit");
         ObjectDelete("kn Del BuyStop");
         ObjectDelete("kn Del SellLimit");
        }
     }
   else y+=42;
   int W=26;
   if(TypeWind>0) W=56;
   ButtonCreate(0,"kn Buy",0,X+2,y,66,W,"BUY",Font,Width,Color_5,Color_9,Color_7,false);
   RectLabelCreate(0,"_7_",0,X+70,y,30,27,Color_2,Color_7,STYLE_SOLID,1,false,false,true,0);
   RectLabelCreate(0,"_8_",0,X+100,y,50,27,Color_2,Color_7,STYLE_SOLID,1,false,false,true,0);
   LabelCreate(0,"7",0,X+85,y+13,CORNER_LEFT_UPPER,DoubleToStr(b,0),Font,Width+0,Color_1,0,ANCHOR_CENTER,false,false,true,0);
   LabelCreate(0,"8",0,X+125,y+13,CORNER_LEFT_UPPER,DoubleToStr(LB,2),Font,Width+0,Color_1,0,ANCHOR_CENTER,false,false,true,0);
   if(TypeWind>0)
     {
      ButtonCreate(0,knTrNlB,0,X+151,y,18,56,"TrNlB",Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knTrNlB));

      ButtonCreate(0,knSlB,0,X+170,y,50,28,StringConcatenate("SL ",StopLossB),Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knSlB));
      ButtonCreate(0,knTpB,0,X+235,y,50,28,StringConcatenate("TP ",TakeProfitB),Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knTpB));
      ButtonCreate(0,StringConcatenate(knSlB," up"),0,X+222,y,13,13,CharToStr(217),"Wingdings",5,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,StringConcatenate(knTpB," up"),0,X+285,y,13,13,CharToStr(217),"Wingdings",5,Color_1,Color_8,Color_7,false);y+=15;
      ButtonCreate(0,StringConcatenate(knSlB," dn"),0,X+222,y,13,13,CharToStr(218),"Wingdings",5,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,StringConcatenate(knTpB," dn"),0,X+285,y,13,13,CharToStr(218),"Wingdings",5,Color_1,Color_8,Color_7,false);y+=15;

      if(ProfitB>0) cl=Color_5; else cl=Color_4;
      ButtonCreate(0,"kn Close Buy",0,X+68,y,82,26,DoubleToStr(ProfitB,2),Font,Width,cl,Color_9,Color_7,false);

      ButtonCreate(0,knNlB,0,X+170,y,50,28,StringConcatenate("NL ",NoLossB),Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knNlB));
      ButtonCreate(0,knTsB,0,X+235,y,50,28,StringConcatenate("TS ",TrailingStopB),Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knTsB));
      ButtonCreate(0,StringConcatenate(knNlB," up"),0,X+222,y,13,13,CharToStr(217),"Wingdings",5,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,StringConcatenate(knTsB," up"),0,X+285,y,13,13,CharToStr(217),"Wingdings",5,Color_1,Color_8,Color_7,false);y+=15;
      ButtonCreate(0,StringConcatenate(knNlB," dn"),0,X+222,y,13,13,CharToStr(218),"Wingdings",5,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,StringConcatenate(knTsB," dn"),0,X+285,y,13,13,CharToStr(218),"Wingdings",5,Color_1,Color_8,Color_7,false);y+=15;
     }
   else y+=31;
   ButtonCreate(0,"kn Sell",0,X+2,y,66,W,"SELL",Font,Width,Color_4,Color_9,Color_7,false);
   RectLabelCreate(0,"_9_",0,X+70,y,30,27,Color_2,Color_7,STYLE_SOLID,1,false,false,true,0);
   RectLabelCreate(0,"_10_",0,X+100,y,50,27,Color_2,Color_7,STYLE_SOLID,1,false,false,true,0);
   LabelCreate(0,"9",0,X+85,y+13,CORNER_LEFT_UPPER,DoubleToStr(s,0),Font,Width+0,Color_1,0,ANCHOR_CENTER,false,false,true,0);
   LabelCreate(0,"10",0,X+125,y+13,CORNER_LEFT_UPPER,DoubleToStr(LS,2),Font,Width+0,Color_1,0,ANCHOR_CENTER,false,false,true,0);
   if(TypeWind>0)
     {
      ButtonCreate(0,knTrNlS,0,X+151,y,18,56,"TrNlS",Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knTrNlS));

      ButtonCreate(0,knSlS,0,X+170,y,50,28,StringConcatenate("SL ",StopLossS),Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knSlS));
      ButtonCreate(0,knTpS,0,X+235,y,50,28,StringConcatenate("TP ",TakeProfitS),Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knTpS));
      ButtonCreate(0,StringConcatenate(knSlS," up"),0,X+222,y,13,13,CharToStr(217),"Wingdings",5,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,StringConcatenate(knTpS," up"),0,X+285,y,13,13,CharToStr(217),"Wingdings",5,Color_1,Color_8,Color_7,false);y+=15;
      ButtonCreate(0,StringConcatenate(knSlS," dn"),0,X+222,y,13,13,CharToStr(218),"Wingdings",5,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,StringConcatenate(knTpS," dn"),0,X+285,y,13,13,CharToStr(218),"Wingdings",5,Color_1,Color_8,Color_7,false);y+=15;

      if(ProfitS>0) cl=Color_5; else cl=Color_4;
      ButtonCreate(0,"kn Close Sell",0,X+68,y,82,26,DoubleToStr(ProfitS,2),Font,Width,cl,Color_9,Color_7,false);

      ButtonCreate(0,knNlS,0,X+170,y,50,28,StringConcatenate("NL ",NoLossS),Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knNlS));
      ButtonCreate(0,knTsS,0,X+235,y,50,28,StringConcatenate("TS ",TrailingStopS),Font,Width,Color_1,Color_8,Color_7,GlobalVariableCheck(knTsS));
      ButtonCreate(0,StringConcatenate(knNlS," up"),0,X+222,y,13,13,CharToStr(217),"Wingdings",5,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,StringConcatenate(knTsS," up"),0,X+285,y,13,13,CharToStr(217),"Wingdings",5,Color_1,Color_8,Color_7,false);y+=15;
      ButtonCreate(0,StringConcatenate(knNlS," dn"),0,X+222,y,13,13,CharToStr(218),"Wingdings",5,Color_1,Color_8,Color_7,false);
      ButtonCreate(0,StringConcatenate(knTsS," dn"),0,X+285,y,13,13,CharToStr(218),"Wingdings",5,Color_1,Color_8,Color_7,false);y+=15;

      if(TypeWind==2)
        {
         RectLabelCreate(0,"_12_",0,X+151,y,73,26,Color_2,Color_7,STYLE_SOLID,1,false,false,true,0);
         LabelCreate(0,"11",0,X+185,y+13,CORNER_LEFT_UPPER,DoubleToStr(bl,0),Font,Width+0,Color_1,0,ANCHOR_CENTER,false,false,true,0);
         ButtonCreate(0,"kn BuyLimit",0,X+2,y,148,26,StringConcatenate("BuyLimit ",delta),Font,Width,Color_5,Color_9,Color_7,false);
         ButtonCreate(0,"kn Del BuyLimit",0,X+225,y,73,26,"del",Font,Width,Color_5,Color_9,Color_7,false);y+=30;

         RectLabelCreate(0,"_14_",0,X+151,y,73,26,Color_2,Color_7,STYLE_SOLID,1,false,false,true,0);
         LabelCreate(0,"12",0,X+185,y+13,CORNER_LEFT_UPPER,DoubleToStr(ss,0),Font,Width+0,Color_1,0,ANCHOR_CENTER,false,false,true,0);
         ButtonCreate(0,"kn SellStop",0,X+2,y,148,26,StringConcatenate("SellStop ",delta),Font,Width,Color_4,Color_9,Color_7,false);
         ButtonCreate(0,"kn Del SellStop",0,X+225,y,73,26,"del",Font,Width,Color_4,Color_9,Color_7,false);y+=30;
        }
      else
        {
         ObjectDelete("11");
         ObjectDelete("12");
         ObjectDelete("_14_");
         ObjectDelete("_12_");
         ObjectDelete("kn BuyLimit");
         ObjectDelete("kn SellStop");
         ObjectDelete("kn Del BuyLimit");
         ObjectDelete("kn Del SellStop");
        }
      RectLabelCreate(0,"_fon3_",0,X,y,300,40,Color_6,Color_7,STYLE_SOLID,1,false,false,true,0);
      if(Profit>0) cl=Color_5; else cl=Color_4;
      LabelCreate(0,"Profit",0,X+50,y+10,CORNER_LEFT_UPPER,"Profit",Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0,"Equity",0,X+135,y+10,CORNER_LEFT_UPPER,"Equity",Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0,"Balance",0,X+220,y+10,CORNER_LEFT_UPPER,"Balance",Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
      y+=10;
      LabelCreate(0,"_Profit",0,X+50,y+20,CORNER_LEFT_UPPER,DoubleToStr(Profit,2),Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0,"_Equity",0,X+135,y+20,CORNER_LEFT_UPPER,DoubleToStr(AccountEquity(),2),Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0,"_Balance",0,X+240,y+20,CORNER_LEFT_UPPER,StringConcatenate(DoubleToStr(AccountBalance(),2),AC),Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
     }
   else
     {
      y+=30;
      RectLabelCreate(0,"_fon3_",0,X,y,150,40,Color_6,Color_7,STYLE_SOLID,1,false,false,true,0);
      if(Profit>0) cl=Color_5; else cl=Color_4;
      LabelCreate(0,"Profit",0,X+35,y+10,CORNER_LEFT_UPPER,"Profit",Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0,"Equity",0,X+110,y+10,CORNER_LEFT_UPPER,"Equity",Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
      y+=10;
      LabelCreate(0,"_Profit",0,X+35,y+20,CORNER_LEFT_UPPER,DoubleToStr(Profit,2),Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0,"_Equity",0,X+110,y+20,CORNER_LEFT_UPPER,DoubleToStr(AccountEquity(),2),Font,Width,cl,0,ANCHOR_CENTER,false,false,true,0);
     }
   ChartRedraw();
   return;
  }
//+------------------------------------------------------------------+

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