//+------------------------------------------------------------------+
//|                                                   ModStopReverse |
//|                                      Copyright 2012, Infoplus    |
//|                                    http://www.infoplus.ipsys.net |
//+------------------------------------------------------------------+
#property copyright "Infoplus"
#property link      "http://www.infoplus.ipsys.net"
#include <stdlib.mqh>
//------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà --------------------------------
extern string _Parameters_Trade="----- Ïàðàìåòðû òîðãîâëè";
extern bool   Continue=True;    // Ðàáîòàòü èëè îñòàíîâèòüñÿ ïîñëå îêîí÷àíèÿ ñåðèè
extern int MAGIC=     1000;    // Ìàäæèê ñîâåòíèêà 
extern int    TrailingStop=20;      // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int    TrailingStep=1;       // Øàã òðàëà
extern int    Slippage       = 3;       // Ïðîñêàëüçûâàíèå öåíû
extern double Lott_0            = 1;    // Íà÷àëüíûé ðàçìåð ëîòà
extern int    Delta          = 30;      // Ðàññòîÿíèå äëÿ ñòîï-îðäåðîâ
extern double    KK=1.7;      // Êîýôôèöèåíò óìíîæåíèÿ ëîòà
extern int    NoLoss=30;        //Óñòàíîâêà áåçóáûòêà â ïï
extern int     ProfClose=10;        // Çàêðûòü âñå ïðè ïðîôèòå
extern int     TimeStart=9;     //îãðàíè÷åíèå âðåìåíè ðàáîòû ñîâåòíèêà
extern int     TimeEnd= 22;     //íå îòêðûâàåì îðäåðà è çàêðûâàåì îòëîæêè åñëè âðåìÿ íå ìåæäó TimeStart è TimeEnd
extern string _Parameters_Expert="----- Ïàðàìåòðû ñîâåòíèêà";
extern bool   UseSound      = True;         // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound = "expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
extern color  clOpenBuy     = LightBlue;    // Öâåò îòêðûòèÿ ïîêóïêè
extern color  clOpenSell    = LightCoral;   // Öâåò îòêðûòèÿ ïðîäàæè
extern color  clModifyBuy   = Aqua;         // Öâåò ìîäèôèêàöèè ïîêóïêè
extern color  clModifySell  = Tomato;       // Öâåò ìîäèôèêàöèè ïðîäàæè
extern color  clCloseBuy    = Blue;         // Öâåò çàêðûòèÿ ïîêóïêè
extern color  clCloseSell   = Red;          // Öâåò çàêðûòèÿ ïðîäàæè
//---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------
int g_fontsize_544=10;
int g_color_548 = Gold;
int g_color_547 = Red;
int g_color_5=Gold;
int FRBarUp=-1;
int FRBarDn=-1;
double BStopLoss;
double SStopLoss;
double LottB,LottS;
bool TradesAlow=false;
bool BUYOK=true;
bool SELLOK=true;
int flagTrStartB=0;
int flagTrStartS=0;
int KolB;
int PrStop=0;
int preKolB;
int KolS;
int preKolS;
double PrBuy=0;
double PrSell=0;
double priceBid;
double priceAsk;
double HistoryZeroPrice,ZeroPrice,StopOutPrice;
//-----------
extern string    Symbol_1="GBPJPY";
extern string    Symbol_2="USDCHF";
extern string    Symbol_3="EURUSD";
extern string    Symbol_4="EURGBP";
extern string    Symbol_5="GBPUSD";
extern string    Symbol_6="EURCHF";
extern string    Symbol_7="EURJPY";
extern string    Symbol_8="GPBPCHF";
extern string    Symbol_9="AUDJPY";
extern string    Symbol_10="AUDUSD";
extern string    Symbol_11="NZDUSD";
extern string    Symbol_12="NZDJPY";
extern string    Symbol_13="CHFJPY";
extern string    Symbol_14="USDCHF";
extern int       ÐàçìåðØðèôòà=10;
//----
double LotS,ProfitS;
double LotB,ProfitB;
double LotT,ProfitT;
double ProfitHistory;
double PartEquity;
color Color;
int  pos,orderremit,TotalOrders,Symb;
string text;
int File;
string FileName;
int CountDate;
double LL;
double Lott;
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
void init()
  {
   Comment("");
   LL=Lott;
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
  {
   if(IsTrade())
     {
      if(!ExistOrder(1)) 
        {
         flagTrStartB=0; KolB=0; preKolB=0; BStopLoss=0; TradesAlow=false; LottS=Lott;
         DeleteAllOrders(1); CloseAll(1); RR();
         if(Continue){CalcLots(); SetOrders(1);}
        }
      if(!ExistOrder(2)) 
        {
         flagTrStartS=0; KolS=0; preKolS=0; SStopLoss=0; TradesAlow=false; LottB=Lott;
         DeleteAllOrders(2); CloseAll(2); RR();
         if(Continue){CalcLots(); SetOrders(2);}
        }
     }
   for(int i=3;i<=33;i=i+2)
     {
      if(!ExistOrder(i)) {if(ExistOrderTr(i-2)) {SetOrders(i); }}
     }
   for(int j=4;j<=32;j=j+2)
     {
      if(!ExistOrder(j)) {if(ExistOrderTr(j-2)) {SetOrders(j); }}
     }
   KolB=CheckLots("B");
   if(preKolB!=KolB) 
     {
      preKolB=KolB;
      BStopLoss=0; flagTrStartB=0;    StopOutPrice=0; ZeroPrice=0;
     }
   KolS=CheckLots("S");
   if(preKolS!=KolS) 
     {
      preKolS=KolS;
      SStopLoss=0; flagTrStartS=0;   StopOutPrice=0; ZeroPrice=0;
     }
   if(flagTrStartB==1) {TrailingPositions(1); }
   if(flagTrStartS==1) {TrailingPositions(2); }
   TrailingPositions(0);
   RefreshRates(); Show();
   IndikatorLots(); //NotOut(); No_Loss(111); No_Loss(222);
  }
//+------------------------------------------------------------------+
//|  Ïîäñ÷åò êîë-âà îðäåðîâ                                                                |
//+------------------------------------------------------------------+
int CheckLots(string mn)
  {
   int ko=0;
   for(int i=0; i<OrdersTotal(); i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         if(OrderSymbol()==Symbol() && OrderComment()==mn) 
           {
            if(OrderType()==OP_BUY) 
              {
               ko=ko+1;
              }
           }
         if(OrderSymbol()==Symbol() && OrderComment()==mn) 
           {
            if(OrderType()==OP_SELL) 
              {
               ko=ko+1;
              }
           }
        }
     }
   return(ko);
  }
//+------------------------------------------------------------------+
//|   Ôðàêòàëüíûé øàã                                                               |
//+------------------------------------------------------------------+
int RR()
  {
   double u,d,U,D;
   int cu,cd;
//----
   for(int i=3;i<=Bars-3;i++) 
     {
      u=iFractals(NULL,0,MODE_UPPER,i);
      d=iFractals(NULL,0,MODE_LOWER,i);
      if(u>0) {U+=u;cu++;}
      if(d>0) {D+=d;cd++;}
     }
   U/=cu; D/=cd;
   int V=(U-D)/Point;  Delta=NormalizeDouble(V,0); if(Delta<30) {Delta=30;}
   Comment(Symbol(),"  TF=",Period(),"   ",V+"   Delta - "+Delta);
   return(0);
  }
//+------------------------------------------------------------------+
//| Ëîê ïðîñåâøåé ñåðèè                                                                 |
//+------------------------------------------------------------------+
void NotOut()
  {
   if(AccountMargin()!=0) 
     {
      if(AccountEquity()/AccountMargin()*100<2000) 
        {
         bool fc=false,fb=false;
         if(LotT>0 && !ExistOrder(111)) 
           {
            // while(fc==False) {
            fc=OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble(3*LotB,2),Bid-Delta*Point,3,0,0,"Lock_BUY",MAGIC+111,0,clOpenSell);
            EE();//}
           }
         if(LotT<0 && !ExistOrder(222)) 
           {
            //  while(fb==False) {
            fc=OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble(3*LotS,2),Ask+Delta*Point,3,0,0,"Lock_SELL",MAGIC+222,0,clOpenSell);
            EE();//}
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Óñòàíîâêà îðäåðîâ                                                |
//+------------------------------------------------------------------+
void SetOrders(int nn)
  {
   bool fc; SellorBuy();
   if(nn==1)
     {
      if((isFractalDn(3)!=-1) && BUYOK) 
        {
         fc=false;
         while(fc==false)
           {
            fc=OrderSend(Symbol(),OP_BUY,LottB,Ask,Slippage,0,0,"B",MAGIC+1,0,clOpenBuy); EE();
           }
         return;
        }
     }
   if(nn==2) 
     {
      if((isFractalUp(3)!=-1) && SELLOK) 
        {
         fc=false;
         while(fc==false)
           {
            fc=OrderSend(Symbol(),OP_SELL,LottS,Bid,Slippage,0,0,"S",MAGIC+2,0,clOpenSell); EE();
           }
         return;
        }
     }
   if(MathMod(nn,2)!=0)
     {
      priceBid=Ask+Delta*Point; fc=false; Checks(nn-2);
      if(TradesAlow)
        {
         while(fc==false)
           {
            fc=OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble(KK*Checks(nn-2),2),priceBid,Slippage,0,0,"B",MAGIC+nn,0,clOpenBuy);
           }
         TradesAlow=false;
        }
     }
   if(MathMod(nn,2)==0)
     {
      priceBid=Bid-Delta*Point; fc=false; Checks(nn-2);
      if(TradesAlow)
        {
         while(fc==false)
           {
            fc=OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble(KK*Checks(nn-2),2),priceBid,Slippage,0,0,"S",MAGIC+nn,0,clOpenSell);
           }
         TradesAlow=false;
        }
     }
  }
//+------------------------------------------------------------------+
//|     Ðàñ÷åò ëîòîâ                                                 |
//+------------------------------------------------------------------+
void CalcLots() 
  {
   Lott=NormalizeDouble(AccountFreeMargin()/(1/Lott_0*10000),2); ProfClose=Lott*10;
   if(AccountMargin()!=0) 
     {
      if(AccountEquity()/AccountMargin()*100<3000) 
        {
         Lott=LL;
         ProfClose=10;
        }
     }
  }
//+------------------------------------------------------------------+
//|     Ïîäñ÷åò ïðîôèòà                                              |
//+------------------------------------------------------------------+
string ShowProfit()
  {
   double Proff=0; PrBuy=0; PrSell=0;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && (OrderComment()=="B" || OrderComment()=="S" || OrderComment()=="Lock_SELL" || OrderComment()=="Lock_BUY"))
           {
            Proff=Proff+OrderProfit()+OrderSwap();
            if(OrderType()==OP_BUY) 
              {
               PrBuy=PrBuy+OrderProfit()+OrderSwap();
              }
            if(OrderType()==OP_SELL) 
              {
               PrSell=PrSell+OrderProfit()+OrderSwap();
              }
           }
        }
     }
   if(AccountMargin()!=0) 
     {
      if(AccountEquity()/AccountMargin()*100<500) 
        {
         if(Proff>=ProfClose)
           {
            CloseAll(0);
            DeleteAllOrders(0); 
           }
        }
     }
   if(PrBuy>=ProfClose && BStopLoss==0) 
     {
      flagTrStartB=1;
      BStopLoss=Bid;
        } else if(PrSell>=ProfClose && SStopLoss==0) {
      flagTrStartS=1; SStopLoss=Ask;
        } else if(ExistOrder(1) && ExistOrder(2) && Proff>=ProfClose) {
      if(AccountMargin()!=0) 
        {
         if(AccountEquity()/AccountMargin()*100<1000) 
           {
            flagTrStartB=0;
            flagTrStartS=0;
            CloseAll(0); DeleteAllOrders(0);
           }
        }
     }
   return(Proff);
  }
//+------------------------------------------------------------------+
//| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ îðäåðà èëè ïîçèöèè ïî íîìåðó       |
//+------------------------------------------------------------------+
bool ExistOrder(int mn)
  {
   bool Exist=False;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn)
           {
            Exist=True; break;
           }
        }
     }
   return(Exist);
  }
//+------------------------------------------------------------------+
//|  Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ îòêðûòîãî îðäåðà ïî íîìåðó        |
//+------------------------------------------------------------------+
bool ExistOrderTr(int mn)
  {
   bool Exist=False;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               Exist=True; break;
              }
           }
        }
     }
   return(Exist);
  }
//+------------------------------------------------------------------+
//|  Ïîäñ÷åò ëîòà ïîñëåäíåãî îòêðûòîãî îðäåðà                        |
//+------------------------------------------------------------------+
double Checks(int mn)
  {
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && (OrderMagicNumber()==MAGIC+mn))
           {
            double OL=OrderLots();
            if(OrderType()==OP_SELL) 
              {
               if(Bid-OrderOpenPrice()>2*Delta*Point) 
                 {
                  TradesAlow=true;
                 }
              }
            if(OrderType()==OP_BUY) 
              {
               if(OrderOpenPrice()-Ask>2*Delta*Point) 
                 {
                  TradesAlow=true;
                 }
              }
           }
        }
     }
   return(OL);
  }
//+------------------------------------------------------------------+
//|  Òèï îðäåðà                                                    |
//+------------------------------------------------------------------+
int Tipus()
  {
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && (OrderMagicNumber()==MAGIC+1))
           {
            int OPL=OrderType();
           }
        }
     }
   return(OPL);
  }
//+------------------------------------------------------------------+
//| Çàêðûòèå âñåõ ïîçèöèé ïî ðûíî÷íîé öåíå                           |
//+------------------------------------------------------------------+
void CloseAll(int pp)
  {
   bool fc; int i;
   if(pp==0)
     {
      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && (OrderComment()=="B" || OrderComment()=="S" || OrderComment()=="Lock_SELL" || OrderComment()=="Lock_BUY"))
              {
               if(OrderType()==OP_BUY)
                 {
                  fc=False;
                  while(fc==False)
                    {
                     fc=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clCloseBuy); EE();
                    }
                 }
               if(OrderType()==OP_SELL)
                 {
                  fc=False;
                  while(fc==False)
                    {
                     fc=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clCloseSell); EE();
                    }
                 }
               if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYLIMIT)
                 {
                  fc=OrderDelete(OrderTicket());
                 }
               if(fc && UseSound) PlaySound(NameFileSound);
              }
           }
        }
     }
   if(pp==1)
     {
      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && (OrderComment()=="B" || OrderComment()=="Lock_BUY"))
              {
               if(OrderType()==OP_BUY)
                 {
                  fc=False;
                  while(fc==False)
                    {
                     fc=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clCloseBuy); EE();
                    }
                 }
               if(OrderType()==OP_SELL)
                 {
                  fc=False;
                  while(fc==False)
                    {
                     fc=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clCloseSell); EE();
                    }
                 }
               if(OrderType()==OP_BUYSTOP)
                 {
                  fc=OrderDelete(OrderTicket());
                 }
               if(fc && UseSound) PlaySound(NameFileSound);
              }
           }
        }
     }
   if(pp==2)
     {
      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && (OrderComment()=="S" || OrderComment()=="Lock_SELL"))
              {
               if(OrderType()==OP_SELL)
                 {
                  fc=False;
                  while(fc==False)
                    {
                     fc=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clCloseSell); EE();
                    }
                 }
               if(OrderType()==OP_BUY)
                 {
                  fc=False;
                  while(fc==False)
                    {
                     fc=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clCloseBuy); EE();
                    }
                 }
               if(OrderType()==OP_SELLSTOP)
                 {
                  fc=OrderDelete(OrderTicket());
                 }
               if(fc && UseSound) PlaySound(NameFileSound);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  âûÿâëåíèå îøèáîê                                                |
//+------------------------------------------------------------------+
void EE()
  {
   int EError=GetLastError();                 // Íå ïîëó÷èëîñü :(
   switch(EError) // Ïðåîäîëèìûå îøèáêè
     {
      case 135:Alert("Öåíà èçìåíèëàñü. Ïðîáóåì åù¸ ðàç..");
      RefreshRates();                     // Îáíîâèì äàííûå
      case 136:Alert("Íåò öåí. Æä¸ì íîâûé òèê..");
      while(RefreshRates()==false)        // Äî íîâîãî òèêà
         Sleep(1);                        // Çàäåðæêà â öèêëå
      // continue;                           // Íà ñëåä. èòåðàöèþ
      case 146:Alert("Ïîäñèñòåìà òîðãîâëè çàíÿòà. Ïðîáóåì åù¸..");
      Sleep(500);                         // Ïðîñòîå ðåøåíèå
      RefreshRates();                     // Îáíîâèì äàííûå
     }
  }
//+------------------------------------------------------------------+
//| Óäàëåíèå âñåõ îðäåðîâ                                            |
//+------------------------------------------------------------------+
void DeleteAllOrders(int mn)
  {
   bool fd; int i;
   if(mn==1) 
     {
      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && OrderComment()=="B")
              {
               if(OrderType()==OP_BUYSTOP)
                 {
                  fd=OrderDelete(OrderTicket());
                  if(fd && UseSound) PlaySound(NameFileSound);
                 }
              }
           }
        }
     }
   if(mn==2) 
     {
      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && OrderComment()=="S")
              {
               if(OrderType()==OP_SELLSTOP)
                 {
                  fd=OrderDelete(OrderTicket());
                  if(fd && UseSound) PlaySound(NameFileSound);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Ñòîï-îðäåðíûé òðàëë                            |
//+------------------------------------------------------------------+
void TrailingPositions(int mn) 
  {
   int i;
   if(mn==1) 
     {
      for(i=0; i<OrdersTotal(); i++) 
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
           {
            if(OrderSymbol()==Symbol()&&(OrderMagicNumber()==MAGIC+1)) 
              {
               if(BStopLoss<Bid-(TrailingStop+TrailingStep-1)*Point) 
                 {
                  BStopLoss=BStopLoss+TrailingStep*Point;
                  if(OrderType()==OP_SELL) 
                    {
                     ModifyStopLoss(0,BStopLoss,clModifyBuy); BUYOK=true; SELLOK=false;
                       } else {
                     ModifyStopLoss(BStopLoss,0,clModifyBuy); BUYOK=true; SELLOK=false;
                    }
                 }
              }
           }
        }
     }
   if(mn==2) 
     {
      for(i=0; i<OrdersTotal(); i++) 
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
           {
            if(OrderSymbol()==Symbol()&&(OrderMagicNumber()==MAGIC+2)) 
              {
               if(SStopLoss> Ask+(TrailingStop+TrailingStep-1)*Point) 
                 {
                  SStopLoss=SStopLoss-TrailingStep*Point;
                  if(OrderType()==OP_BUY)
                    {
                     ModifyStopLoss(0,SStopLoss,clModifySell); SELLOK=true; BUYOK=false;
                       } else {
                     ModifyStopLoss(SStopLoss,0,clModifySell); SELLOK=true; BUYOK=false;
                    }
                 }
              }
           }
        }
     }
   if(mn==0) 
     {
      for(i=0; i<OrdersTotal(); i++) 
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
           {
            if(OrderType()==OP_SELLSTOP) 
              {
               if(Bid-OrderOpenPrice()>Delta*Point) 
                 {
                  if(OrderOpenPrice()<Bid-(Delta+TrailingStep-1)*Point) 
                    {
                     double newpr=Bid-Delta*Point;
                     ModStopOrders(newpr,OP_SELLSTOP);
                    }
                 }
              }
            if(OrderType()==OP_BUYSTOP) 
              {
               if(OrderOpenPrice()-Ask>Delta*Point) 
                 {
                  if(OrderOpenPrice()>Ask+(Delta+TrailingStep-1)*Point) 
                    {
                     double newprBS=Ask+Delta*Point;
                     ModStopOrders(newprBS,OP_BUYSTOP);
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|   Ìîäèôèêàöèÿ îòë.îðäåðà                                         |
//+------------------------------------------------------------------+
void ModStopOrders(double newprice,string OP)
  {
   bool   fm;
   double SL=OrderStopLoss();
   if(OP==OP_BUYSTOP)
     {
      SL=SL+TrailingStep*Point;
     }
   if(OP==OP_SELLSTOP)
     {
      SL=SL-TrailingStep*Point;
     }
   fm=OrderModify(OrderTicket(),newprice,0,0,0,Red);
   if(fm && UseSound) {PlaySound(NameFileSound); }
  }
//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss                                          |
//| Ïàðàìåòðû:                                                       |
//|   ldStopLoss - óðîâåíü StopLoss                                  |
//|   clModify   - öâåò ìîäèôèêàöèè                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStop,double ldTake,color clModify) 
  {
   bool   fm=false; //DeleteAllOrders();
   double ldOpen=OrderOpenPrice(); //Comment("BStopLoss - "+ldStop);
   while(fm==false) {fm=OrderModify(OrderTicket(),ldOpen,ldStop,ldTake,0,clModify);}
   if(fm && UseSound) {PlaySound(NameFileSound); }
  }
//+------------------------------------------------------------------+
//|  Áåçóáûòîê                                                                |
//+------------------------------------------------------------------+
void No_Loss(int mn)
  {
   double OOP,OSL;
   int tip;
   bool error=true;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         tip=OrderType();
         if((tip<2 && OrderSymbol()==Symbol()) && (OrderMagicNumber()==MAGIC+mn))
           {
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            //  if (OrderMagicNumber()==MAGIC+1&& BStopLoss !=0) {OOP=BStopLoss;}
            //  if (OrderMagicNumber()==MAGIC+2 && SStopLoss !=0) {OOP=SStopLoss;}
            if(tip==0)
              {
               if((Bid-OOP)/Point>=NoLoss && OOP>OSL)
                  error=OrderModify(OrderTicket(),OOP,OOP+2*Point,OrderTakeProfit(),0,White);
              }
            if(tip==1)
              {
               if((OOP-Ask)/Point>=NoLoss && (OOP<OSL || OSL==0))
                  error=OrderModify(OrderTicket(),OOP,OOP-2*Point,OrderTakeProfit(),0,White);
              }
            if(!error) Alert("Error No_Loss ",GetLastError(),"   ",Symbol());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  Èíôîðìïàíåëü                                                    |
//+------------------------------------------------------------------+
void Show()
  {
   string  name_8="5";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,20);
      ObjectSet(name_8,OBJPROP_YDISTANCE,36);
     }
   ObjectSetText(name_8,"Áàëàíñ: "+DoubleToStr(AccountBalance(),2),g_fontsize_544,"Courier New",g_color_548);
   name_8="6";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,20);
      ObjectSet(name_8,OBJPROP_YDISTANCE,56);
     }
   ObjectSetText(name_8,"Ñðåäñòâà: "+DoubleToStr(AccountFreeMargin(),2),g_fontsize_544,"Courier New",g_color_548);
   name_8="7";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,60);
      ObjectSet(name_8,OBJPROP_YDISTANCE,76);
     }
   if(AccountMargin()==0)
     {
      StopOutPrice=0; ZeroPrice=0;
      ObjectSetText(name_8,"Óðîâåíü:   ",g_fontsize_544,"Courier New",g_color_548);
     }
   else
     {
      if(AccountEquity()/AccountMargin()*100<2000) {g_color_5=Red;} else {g_color_5=Gold;}
      ObjectSetText(name_8,"Óðîâåíü: "+DoubleToStr(AccountEquity()/AccountMargin()*100,2),g_fontsize_544,"Courier New",g_color_5);
     }
   name_8="8";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,60);
      ObjectSet(name_8,OBJPROP_YDISTANCE,96);
     }
   ObjectSetText(name_8,"Ïðîôèò: "+DoubleToStr(ShowProfit(),2),g_fontsize_544,"Courier New",g_color_548);
   name_8="13";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,20);
      ObjectSet(name_8,OBJPROP_YDISTANCE,136);
     }
   ObjectSetText(name_8,"STOPOUT: "+DoubleToStr(StopOutPrice,4),g_fontsize_544,"Courier New",g_color_547);
   name_8="14";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,20);
      ObjectSet(name_8,OBJPROP_YDISTANCE,156);
     }
   ObjectSetText(name_8,"ZEROPRICE: "+DoubleToStr(ZeroPrice,4),g_fontsize_544,"Courier New",Red);
   name_8="15";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,20);
      ObjectSet(name_8,OBJPROP_YDISTANCE,176);
     }
//  ObjectSetText(name_8,"BUY Lots: "+DoubleToStr(LotB,2),g_fontsize_544,"Courier New",g_color_548);
   ObjectSetText(name_8,"BUY Lots: "+KolB,g_fontsize_544,"Courier New",g_color_548);
   name_8="16";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,20);
      ObjectSet(name_8,OBJPROP_YDISTANCE,196);
     }
// ObjectSetText(name_8,"SELL Lots: "+DoubleToStr(LotS,2),g_fontsize_544,"Courier New",g_color_548);
   ObjectSetText(name_8,"SELL Lots: "+KolS,g_fontsize_544,"Courier New",g_color_548);
   name_8="17";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,20);
      ObjectSet(name_8,OBJPROP_YDISTANCE,216);
     }
   ObjectSetText(name_8,"BUY Profit: "+DoubleToStr(ProfitB,2),g_fontsize_544,"Courier New",g_color_548);
//ObjectSetText(name_8,"BUYStopLOSS: "+DoubleToStr(BStopLoss,4),g_fontsize_544,"Courier New",g_color_548);
   name_8="18";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,20);
      ObjectSet(name_8,OBJPROP_YDISTANCE,236);
     }
   ObjectSetText(name_8,"SELL Profit: "+DoubleToStr(ProfitS,2),g_fontsize_544,"Courier New",g_color_548);
//ObjectSetText(name_8,"SELLStopLOSS: "+DoubleToStr(SStopLoss,4),g_fontsize_544,"Courier New",g_color_548);
   name_8="19";
   if(ObjectFind(name_8)==-1)
     {
      ObjectCreate(name_8,OBJ_LABEL,0,0,0);
      ObjectSet(name_8,OBJPROP_CORNER,1);
      ObjectSet(name_8,OBJPROP_XDISTANCE,20);
      ObjectSet(name_8,OBJPROP_YDISTANCE,256);
     }
   ObjectSetText(name_8,"ÏðîôèòClose: "+DoubleToStr(ProfClose,2),g_fontsize_544,"Courier New",g_color_548);
  }
//+------------------------------------------------------------------+
//|   Íàõîäèì ôðàêòàë UP                                             |
//+------------------------------------------------------------------+
int isFractalUp(int w) 
  {
   for(int i=0; i!=w; i++) 
     {
      FRBarUp=0;
      if(iFractals(NULL,0,MODE_UPPER,i)!=NULL) { FRBarUp=i; return(i);}
     }
   return(-1);
  }
//+------------------------------------------------------------------+
//|   Íàõîäèì ôðàêòàë DWN                                            |
//+------------------------------------------------------------------+
int isFractalDn(int w) 
  {
   for(int i=0; i!=w; i++) 
     {
      FRBarDn=0;
      if(iFractals(NULL,0,MODE_LOWER,i)!=NULL) { FRBarDn=i; return(i);}
     }
   return(-1);
  }
//+------------------------------------------------------------------+
//|   Àëëèãàòîð                                                      |
//+------------------------------------------------------------------+
void SellorBuy() 
  {
   double jaw_val=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,1);
   double teeth_val=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORTEETH,1);
   double lips_val=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,1);
   BUYOK=False;
   SELLOK=False;
   isFractalDn(7);
   isFractalUp(7);
   if((jaw_val>High[FRBarUp]) && (teeth_val<High[FRBarUp])/*&& (isFractalUp(3) !=-1)*/) 
     {
      BUYOK=True;
     }
   if((jaw_val<Low[FRBarDn]) && (teeth_val>Low[FRBarDn])/* && (isFractalDn(3) !=-1)*/) 
     {
      SELLOK=True; 
     }
  }
//+------------------------------------------------------------------+
//|  Òîðãîâëÿ ïî âðåìåíè                                             |
//+------------------------------------------------------------------+
bool IsTrade()
  {
//---
   int TekHour=Hour();
   bool Trade;
   if(TimeStart<TimeEnd && TekHour>=TimeStart && TekHour<TimeEnd)
     {
      Trade=true; //Comment("Òîðãîâëÿ ðàçðåøåíà!!! ");
     }
   else
     {
      if(TimeStart>TimeEnd && (TekHour>=TimeStart || TekHour<TimeEnd))
        {
         Trade=true; //Comment("Òîðãîâëÿ ðàçðåøåíà!!! "); 
        }//òîðãîâëÿ íî÷üþ
      else {Trade=false;}
     }
   if(!Trade)
     {
      //Comment("Òîðãîâëÿ çàïðåùåíà ïî âðåìåíè ");
     }
//---
   return(Trade);
  }
//+------------------------------------------------------------------+
//|  Óðîâíè áåçóáûòêà                                                |
//+------------------------------------------------------------------+
int IndikatorLots()
  {
//----
   if(AccountBalance()==0)return(0);
//----
   double TickVal=MarketInfo(Symbol(),MODE_TICKVALUE);
//---- îïðåäåëåíèå êîëè÷åñòâà èíñòðóìåíòîâ è ðàñïðåäåëåíèå ñðåäñòâ äëÿ íèõ
//---- âûñòàâëåíèå óðîâíÿ ìàðæèíêîëà
   if(TotalOrders!=OrdersTotal() && AccountBalance()!=0)
     {
      TotalOrders=OrdersTotal();
      double Lot,Lot_1,Lot_2,Lot_3,Lot_4,Lot_5,Lot_6,Lot_7,Lot_8,Lot_9,Lot_10;
      for(pos=OrdersTotal()-1;pos>=0;pos--)
        {
         if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if(OrderType()<=OP_SELL)
              {
               if(OrderType()==OP_BUY){Lot=OrderLots();}
               if(OrderType()==OP_SELL){Lot=-OrderLots();}
               if(OrderSymbol()==Symbol_1){Lot_1=NormalizeDouble(Lot_1+Lot,2);}
               else if(OrderSymbol()==Symbol_2){Lot_2=NormalizeDouble(Lot_2+Lot,2);}
               else if(OrderSymbol()==Symbol_3){Lot_3=NormalizeDouble(Lot_3+Lot,2);}
               else if(OrderSymbol()==Symbol_4){Lot_4=NormalizeDouble(Lot_4+Lot,2);}
               else if(OrderSymbol()==Symbol_5){Lot_5=NormalizeDouble(Lot_5+Lot,2);}
               else if(OrderSymbol()==Symbol_6){Lot_6=NormalizeDouble(Lot_6+Lot,2);}
               else if(OrderSymbol()==Symbol_7){Lot_7=NormalizeDouble(Lot_7+Lot,2);}
               else if(OrderSymbol()==Symbol_8){Lot_8=NormalizeDouble(Lot_8+Lot,2);}
               else if(OrderSymbol()==Symbol_9){Lot_9=NormalizeDouble(Lot_9+Lot,2);}
               else if(OrderSymbol()==Symbol_10){Lot_10=NormalizeDouble(Lot_10+Lot,2);}
               else
                 {
                  Alert("\"Inf_Open_Orders\". Ïîÿâèëñÿ îðäåð ïî íåóêàçàííîìó èíñòðóìåíòó ",OrderSymbol(),"!");
                  return(0);
                 }
              }
           }
         else Print("Îøèáêà ",GetLastError());
        }
      Symb=0;
      if(Lot_1!=0){Symb++;}
      if(Lot_2!=0){Symb++;}
      if(Lot_3!=0){Symb++;}
      if(Lot_4!=0){Symb++;}
      if(Lot_5!=0){Symb++;}
      if(Lot_6!=0){Symb++;}
      if(Lot_7!=0){Symb++;}
      if(Lot_8!=0){Symb++;}
      if(Lot_9!=0){Symb++;}
      if(Lot_10!=0){Symb++;}
     }
   if(Symb!=0)
     {
      PartEquity=(AccountEquity()-AccountStopoutLevel()/100*AccountMargin())/Symb;//ðàñïðåäåë¸ííûå ñðåäñòâà
     }
//---- îïðåäåëåíèå ïðîôèòîâ è îáü¸ìîâ ëîòîâ
   LotS=0;
   ProfitS=0;
   LotB=0;
   ProfitB=0;
   ProfitT=0;
   for(pos=OrdersTotal()-1; pos>=0; pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderSymbol()==Symbol())
           {
            //----
            if(OrderType()==OP_BUY)
              {
               LotB+=OrderLots();
               ProfitB+=OrderProfit()+OrderSwap();
              }
            //----
            if(OrderType()==OP_SELL)
              {
               LotS+=OrderLots();
               ProfitS+=OrderProfit()+OrderSwap();
              }
            //----
            ProfitT+=OrderProfit()+OrderSwap();
            //----
           }
        }
      else Print("Îøèáêà ïðè äîñòóïå ê ðåàë áàçå (",GetLastError(),")");
     }
//---- îïðåäåëåíèå íà÷àëà îòñ÷¸òà â èñòîðèè îðäåðîâ
   if(AccountBalance()!=0)
      //----
     {
      int order;
      for(pos=OrdersTotal()-1;pos>=0;pos--)//ïîèñê íàëè÷èÿ îòêðûòûõ îðäåðîâ
        {
         if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if(OrderSymbol()==Symbol() && OrderType()<=OP_SELL)
              {
               order++;
              }
           }
         else Print("Îøèáêà ïðè äîñòóïå ê ðåàë áàçå (",GetLastError(),")");
        }
     }
//----
   text=StringConcatenate("Total History profit (",TimeToStr(CountDate,TIME_DATE|TIME_MINUTES),")=");
   ObjectSetText("Inf_HistoryTotal",text,ÐàçìåðØðèôòà,"Arial",DarkOrange);
//----  
   ProfitHistory=0;
   for(pos=OrdersHistoryTotal()-1;pos>=0;pos--)//ïîäñ÷¸ò ïðîôèòà èç èñòîðèè
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderSymbol()==Symbol() && OrderOpenTime()>=CountDate)
           {
            ProfitHistory+=OrderProfit()+OrderSwap();
           }
        }
      else Print("Îøèáêà ïðè äîñòóïå ê èñòîðè÷åñêîé áàçå (",GetLastError(),")");
     }
   ProfitHistory=ProfitHistory+ProfitT;
//---- âûñòàâëåíèå íóëåâûõ è StopOut óðîâíåé  
   LotT=LotB-LotS;
   if(LotT!=0)
     {
      if(LotT>0)//Buy ëîò ïðeèìóùåñòâî
        {
         HistoryZeroPrice=NormalizeDouble(Bid-(ProfitHistory/LotT/TickVal*Point),Digits);
         ZeroPrice=NormalizeDouble(Bid-(ProfitT/LotT/TickVal*Point),Digits);
         StopOutPrice=NormalizeDouble(Bid-(PartEquity/LotT/TickVal*Point),Digits);
        }
      if(LotT<0)//Sell ëîò ïðeèìóùåñòâî
        {
         HistoryZeroPrice=NormalizeDouble(Ask-(ProfitHistory/LotT/TickVal*Point),Digits);
         ZeroPrice=NormalizeDouble(Ask-(ProfitT/LotT/TickVal*Point),Digits);
         StopOutPrice=NormalizeDouble(Ask-(PartEquity/LotT/TickVal*Point),Digits);
        }
      //---- Âûñòàâëåíèå îáùåãî íóëåâîãî ðåàë óðîâíÿ
      if(ObjectFind("Line of the zero price")!=0)//îòñóòñòâèå Line zero â ãëàâíîì îêíå
        {
         ObjectCreate("Line of the zero price",OBJ_TREND,0,Time[5],ZeroPrice,Time[0]+Period()*60*20,ZeroPrice,0,0);
         ObjectSetText("Line of the zero price",DoubleToStr(ZeroPrice,Digits));
         ObjectSet("Line of the zero price",OBJPROP_RAY,false);
         ObjectSet("Line of the zero price",OBJPROP_STYLE,STYLE_SOLID);
         ObjectSet("Line of the zero price",OBJPROP_WIDTH,1);
         ObjectSet("Line of the zero price",OBJPROP_COLOR,Gold);
        }
      else if(ObjectFind("Line of the zero price")==0)//íàëè÷èå Line zero â ãëàâíîì îêíå
        {
         ObjectSetText("Line of the zero price",DoubleToStr(ZeroPrice,Digits));
         ObjectSet("Line of the zero price",OBJPROP_TIME1,Time[5]);
         ObjectSet("Line of the zero price",OBJPROP_PRICE1,ZeroPrice);
         ObjectSet("Line of the zero price",OBJPROP_TIME2,Time[0]+Period()*60*20);
         ObjectSet("Line of the zero price",OBJPROP_PRICE2,ZeroPrice);
        }
      if(ObjectFind("Zero price")!=0)//îòñóòñòâèå Arrow zero â ãëàâíîì îêíå
        {
         ObjectCreate("Zero price",OBJ_ARROW,0,Time[5],ZeroPrice,0,0,0,0);
         ObjectSet("Zero price",OBJPROP_ARROWCODE,5);
         ObjectSet("Zero price",OBJPROP_WIDTH,2);
         ObjectSet("Zero price",OBJPROP_COLOR,Gold);
        }
      else if(ObjectFind("Zero price")==0)//íàëè÷èå Arrow zero â ãëàâíîì îêíå 
        {
         ObjectSet("Zero price",OBJPROP_PRICE1,ZeroPrice);
         ObjectSet("Zero price",OBJPROP_TIME1,Time[5]);
        }
      //---- Âûñòàâëåíèå StopOut óðîâíÿ  
      if(ObjectFind("Line of the StopOut price")!=0)
        {
         ObjectCreate("Line of the StopOut price",OBJ_TREND,0,Time[5],StopOutPrice,Time[0]+Period()*60*20,StopOutPrice,0,0);
         ObjectSetText("Line of the StopOut price",DoubleToStr(StopOutPrice,Digits));
         ObjectSet("Line of the StopOut price",OBJPROP_RAY,false);
         ObjectSet("Line of the StopOut price",OBJPROP_STYLE,STYLE_SOLID);
         ObjectSet("Line of the StopOut price",OBJPROP_WIDTH,2);
         ObjectSet("Line of the StopOut price",OBJPROP_COLOR,Brown);
        }
      else if(ObjectFind("Line of the StopOut price")==0)
        {
         ObjectSetText("Line of the StopOut price",DoubleToStr(StopOutPrice,Digits));
         ObjectSet("Line of the StopOut price",OBJPROP_TIME1,Time[5]);
         ObjectSet("Line of the StopOut price",OBJPROP_PRICE1,StopOutPrice);
         ObjectSet("Line of the StopOut price",OBJPROP_TIME2,Time[0]+Period()*60*20);
         ObjectSet("Line of the StopOut price",OBJPROP_PRICE2,StopOutPrice);
        }
      if(ObjectFind("StopOut price")!=0)
        {
         ObjectCreate("StopOut price",OBJ_ARROW,0,Time[5],StopOutPrice,0,0,0,0);
         ObjectSet("StopOut price",OBJPROP_ARROWCODE,5);
         ObjectSet("StopOut price",OBJPROP_WIDTH,3);
         ObjectSet("StopOut price",OBJPROP_COLOR,Brown);
        }
      else if(ObjectFind("StopOut price")==0)
        {
         ObjectSet("StopOut price",OBJPROP_PRICE1,StopOutPrice);
         ObjectSet("StopOut price",OBJPROP_TIME1,Time[5]);
        }
      //----
     }
   else if(LotT==0)
     {
      if(ObjectFind("Line of the history zero price")==0)ObjectDelete("Line of the history zero price");
      if(ObjectFind("History zero price")==0)ObjectDelete("History zero price");
      if(ObjectFind("Line of the zero price")==0)ObjectDelete("Line of the zero price");
      if(ObjectFind("Zero price")==0)ObjectDelete("Zero price");
      if(ObjectFind("Line of the StopOut price")==0)ObjectDelete("Line of the StopOut price");
      if(ObjectFind("StopOut price")==0)ObjectDelete("StopOut price");
     }
//---- Âûñòàâëåíèå BUY íóëåâîãî óðîâíÿ 
   if(LotB>0)
     {
      double BUYZeroPrice;
      BUYZeroPrice=NormalizeDouble(Bid-(ProfitB/LotB/TickVal*Point),Digits);
      if(ObjectFind("Line of the BUY zero price")!=0)
        {
         ObjectCreate("Line of the BUY zero price",OBJ_TREND,0,Time[5],BUYZeroPrice,Time[0]+Period()*60*20,BUYZeroPrice,0,0);
         ObjectSetText("Line of the BUY zero price",DoubleToStr(BUYZeroPrice,Digits));
         ObjectSet("Line of the BUY zero price",OBJPROP_RAY,false);
         ObjectSet("Line of the BUY zero price",OBJPROP_STYLE,STYLE_SOLID);
         ObjectSet("Line of the BUY zero price",OBJPROP_WIDTH,1);
         ObjectSet("Line of the BUY zero price",OBJPROP_COLOR,Chartreuse);
        }
      else if(ObjectFind("Line of the BUY zero price")==0)
        {
         ObjectSetText("Line of the BUY zero price",DoubleToStr(BUYZeroPrice,Digits));
         ObjectSet("Line of the BUY zero price",OBJPROP_TIME1,Time[5]);
         ObjectSet("Line of the BUY zero price",OBJPROP_PRICE1,BUYZeroPrice);
         ObjectSet("Line of the BUY zero price",OBJPROP_TIME2,Time[0]+Period()*60*20);
         ObjectSet("Line of the BUY zero price",OBJPROP_PRICE2,BUYZeroPrice);
        }
      if(ObjectFind("BUY Zero price")!=0)
        {
         ObjectCreate("BUY Zero price",OBJ_ARROW,0,Time[5],BUYZeroPrice,0,0,0,0);
         ObjectSet("BUY Zero price",OBJPROP_ARROWCODE,5);
         ObjectSet("BUY Zero price",OBJPROP_WIDTH,2);
         ObjectSet("BUY Zero price",OBJPROP_COLOR,Chartreuse);
        }
      else if(ObjectFind("BUY Zero price")==0)
        {
         ObjectSet("BUY Zero price",OBJPROP_PRICE1,BUYZeroPrice);
         ObjectSet("BUY Zero price",OBJPROP_TIME1,Time[5]);
        }
     }
   else if(LotB==0)
     {
      if(ObjectFind("Line of the BUY zero price")==0)ObjectDelete("Line of the BUY zero price");
      if(ObjectFind("BUY Zero price")==0)ObjectDelete("BUY Zero price");
     }
//---- Âûñòàâëåíèå SELL íóëåâîãî óðîâíÿ 
   if(LotS>0)
     {
      double SELLZeroPrice;
      SELLZeroPrice=NormalizeDouble(Ask+(ProfitS/LotS/TickVal*Point),Digits);
      if(ObjectFind("Line of the SELL zero price")!=0)
        {
         ObjectCreate("Line of the SELL zero price",OBJ_TREND,0,Time[5],SELLZeroPrice,Time[0]+Period()*60*20,SELLZeroPrice,0,0);
         ObjectSetText("Line of the SELL zero price",DoubleToStr(SELLZeroPrice,Digits));
         ObjectSet("Line of the SELL zero price",OBJPROP_RAY,false);
         ObjectSet("Line of the SELL zero price",OBJPROP_STYLE,STYLE_SOLID);
         ObjectSet("Line of the SELL zero price",OBJPROP_WIDTH,1);
         ObjectSet("Line of the SELL zero price",OBJPROP_COLOR,DeepPink);
        }
      else if(ObjectFind("Line of the SELL zero price")==0)
        {
         ObjectSetText("Line of the SELL zero price",DoubleToStr(SELLZeroPrice,Digits));
         ObjectSet("Line of the SELL zero price",OBJPROP_TIME1,Time[5]);
         ObjectSet("Line of the SELL zero price",OBJPROP_PRICE1,SELLZeroPrice);
         ObjectSet("Line of the SELL zero price",OBJPROP_TIME2,Time[0]+Period()*60*20);
         ObjectSet("Line of the SELL zero price",OBJPROP_PRICE2,SELLZeroPrice);
        }
      if(ObjectFind("SELL Zero price")!=0)
        {
         ObjectCreate("SELL Zero price",OBJ_ARROW,0,Time[5],SELLZeroPrice,0,0,0,0);
         ObjectSet("SELL Zero price",OBJPROP_ARROWCODE,5);
         ObjectSet("SELL Zero price",OBJPROP_WIDTH,2);
         ObjectSet("SELL Zero price",OBJPROP_COLOR,DeepPink);
        }
      else if(ObjectFind("SELL Zero price")==0)
        {
         ObjectSet("SELL Zero price",OBJPROP_PRICE1,SELLZeroPrice);
         ObjectSet("SELL Zero price",OBJPROP_TIME1,Time[5]);
        }
     }
   else if(LotS==0)
     {
      if(ObjectFind("Line of the SELL zero price")==0)ObjectDelete("Line of the SELL zero price");
      if(ObjectFind("SELL Zero price")==0)ObjectDelete("SELL Zero price");
     }
//---- çàïîëíåíèå ñòðîê èíôîðìàöèåé
   ProfitB=NormalizeDouble(ProfitB,0);
   ProfitS=NormalizeDouble(ProfitS,0);
   ProfitHistory=NormalizeDouble(ProfitHistory,0);
//ñòðîêà Buy
   if(LotB>0)
     {
      text=DoubleToStr(LotB,2);
     }
   else if(LotB==0){text="";}
   ObjectSetText("Inf_BuyLots",text,ÐàçìåðØðèôòà,"Arial",Aqua);
   if(LotB>0)
     {
      if(ProfitB<0)Color=Red;
      if(ProfitB>0)Color=Green;
      if(ProfitB==0)Color=Gold;
      text=DoubleToStr(ProfitB,0);
     }
   else if(LotB==0){text="";}
   ObjectSetText("Inf_BuyProfit",text,ÐàçìåðØðèôòà,"Arial",Color);
//ñòðîêà Sell       
   if(LotS>0)
     {
      text=DoubleToStr(LotS,2);
     }
   else if(LotS==0){text="";}
   ObjectSetText("Inf_SellLots",text,ÐàçìåðØðèôòà,"Arial",OrangeRed);
   if(LotS>0)
     {
      if(ProfitS<0)Color=Red;
      if(ProfitS>0)Color=Green;
      if(ProfitS==0)Color=Gold;
      text=DoubleToStr(ProfitS,0);
     }
   else if(LotS==0){text="";}
   ObjectSetText("Inf_SellProfit",text,ÐàçìåðØðèôòà,"Arial",Color);
//ñòðîêà òîòàë
   if(LotS>0 || LotB>0)
     {
      LotT=NormalizeDouble(LotB-LotS,2);
      if(LotT<0)Color=OrangeRed;
      if(LotT>0)Color=Aqua;
      if(LotT==0)Color=Gold;
      text=DoubleToStr(LotT,2);
     }
   else if(LotS==0 && LotB==0){text="";}
   ObjectSetText("Inf_TotalLots",text,ÐàçìåðØðèôòà,"Arial",Color);
   if(LotS>0 || LotB>0)
     {
      if(ProfitB+ProfitS<0)Color=Red;
      if(ProfitB+ProfitS>0)Color=Green;
      if(ProfitB+ProfitS==0)Color=Gold;
      text=DoubleToStr(ProfitB+ProfitS,0);
     }
   else if(LotS==0 && LotB==0){text="";}
   ObjectSetText("Inf_TotalProfit",text,ÐàçìåðØðèôòà,"Arial",Color);
//ñòðîêà History òîòàë
   if(LotS>0 || LotB>0)
     {
      if(ProfitHistory<0)Color=Red;
      if(ProfitHistory>0)Color=Green;
      if(ProfitHistory==0)Color=Gold;
      text=DoubleToStr(ProfitHistory,0);
     }
   else if(LotS==0 && LotB==0){text="";}
   ObjectSetText("Inf_HistoryTotalProfit",text,ÐàçìåðØðèôòà,"Arial",Color);
//----
   return(0);
  }
//+------------------------------------------------------------------+
             
            
            
            
Comments