//+------------------------------------------------------------------+
//|                                                    Salvation.mq4 |
//|                                            ÏÎ ÇÀÊÀÇÓ ôÓÐÑÎÂÀ À.Í.|
//|                                                 fan_2005@list.ru |
//|                                                         20.04.10 |
//+------------------------------------------------------------------+
#property copyright "MrExpertForex"
#property link      "ÏÎ ÇÀÊÀÇÓ ôÓÐÑÎÂÀ À.Í."
//+------------------------------------------------------------------+
extern string s15 = "Âðåìÿ ðàáîòû";
extern int HourStart = 0;
extern int MinuteStart = 0;
extern int HourEnd = 23;
extern int MinuteEnd = 59;
extern string s14 = "Çàêðûòèå ïî ïðîöåíòó";
extern double CloseProfitPercent = 1;
extern string s16 = "Èíô-èÿ ïî ñäåëêàì";
extern int LowPercent = 33;
extern int MedPercent = 66;
extern int MaxPercent = 100;
 
 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÎÁÙÈÕ ÍÀÑÒÐÎÅÊ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.0                = "ÁËÎÊ ÄËß ÎÁÙÈÕ ÍÀÑÒÐÎÅÊ";
//~~~~~~~~
extern int     ÌÀÃÈÊ.                = 200410;// ìàãè÷åñêèé íîìåð îðäåðîâ
//Ìîæåò èñïîëüçîâàòüñÿ êàê îïðåäåëÿåìûé ïîëüçîâàòåëåì èäåíòèôèêàòîð.
//äëÿ êàæäîãî ãðàôèêà çàäàâàéòå óíèêàëüíûé
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß 1-ÎÉ ËÈÍÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.1       = "ÁËÎÊ ÄËß 1-ÎÉ ËÈÍÈÈ";
//~~~~~~~~
extern string ÈÌß.ËÈÍÈÈ.1   = "1";// èìÿ ëèíèè, åñëè ðàâíî ïóñòàòå çíà÷èò íå èñïîëüçóåì
extern int    ÍÀÏÐÀÂËÅÍÈÅ.1 = 1;// â êàêóþ ñòîðîíó âûñòàâëÿòü îðäåðà 
                                // 1 ââåðõ, -1 âíèçå 
extern int    ÒÈÏ.1         = 3;// òèïû:
//2 - BUYLIMIT
//3 - SELLLIMIT
//4 - BUYSTOP
//5 - SELLSTOP
extern int    ÊÎËÈ×ÅÑÒÂÎ.1  = 5; 
extern int    ÎÒÑÒÓÏ.1      = 20;//â ïóíêòàõ
extern int    ØÀÃ.1         = 100;//â ïóíêòàõ
extern int    ÑÒÎÏ.ËÎÑÑ.1   = 0;//â ïóíêòàõ
extern int    ÒÅÉÊ.ÏÐÎÔÈÒ.1 = 200;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß 2-ÎÉ ËÈÍÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.2       = "ÁËÎÊ ÄËß 2-ÎÉ ËÈÍÈÈ";
//~~~~~~~~
extern string ÈÌß.ËÈÍÈÈ.2   = "2";// èìÿ ëèíèè, åñëè ðàâíî ïóñòàòå çíà÷èò íå èñïîëüçóåì
extern int    ÍÀÏÐÀÂËÅÍÈÅ.2 = -1;// â êàêóþ ñòîðîíó âûñòàâëÿòü îðäåðà 
                                // 1 ââåðõ, -1 âíèçå 
extern int    ÒÈÏ.2         = 2;// òèïû:
//2 - BUYLIMIT
//3 - BUYSTOP
//4 - SELLLIMIT
//5 - SELLSTOP
extern int    ÊÎËÈ×ÅÑÒÂÎ.2  = 5; 
extern int    ÎÒÑÒÓÏ.2      = 200;//â ïóíêòàõ
extern int    ØÀÃ.2         = 100;//â ïóíêòàõ
extern int    ÑÒÎÏ.ËÎÑÑ.2   = 0;//â ïóíêòàõ
extern int    ÒÅÉÊ.ÏÐÎÔÈÒ.2 = 200;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß 3-ÎÉ ËÈÍÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.3       = "ÁËÎÊ ÄËß 3-ÎÉ ËÈÍÈÈ";
//~~~~~~~~
extern string ÈÌß.ËÈÍÈÈ.3   = "";// èìÿ ëèíèè, åñëè ðàâíî ïóñòàòå çíà÷èò íå èñïîëüçóåì
extern int    ÍÀÏÐÀÂËÅÍÈÅ.3 = 1;// â êàêóþ ñòîðîíó âûñòàâëÿòü îðäåðà 
                                // 1 ââåðõ, -1 âíèçå 
extern int    ÒÈÏ.3         = 3;// òèïû:
//2 - BUYLIMIT
//3 - BUYSTOP
//4 - SELLLIMIT
//5 - SELLSTOP
extern int    ÊÎËÈ×ÅÑÒÂÎ.3  = 10; 
extern int    ÎÒÑÒÓÏ.3      = 50;//â ïóíêòàõ
extern int    ØÀÃ.3         = 120;//â ïóíêòàõ
extern int    ÑÒÎÏ.ËÎÑÑ.3   = 0;//â ïóíêòàõ
extern int    ÒÅÉÊ.ÏÐÎÔÈÒ.3 = 0;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß 4-ÎÉ ËÈÍÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.4       = "ÁËÎÊ ÄËß 4-ÎÉ ËÈÍÈÈ";
//~~~~~~~~
extern string ÈÌß.ËÈÍÈÈ.4   = "";// èìÿ ëèíèè, åñëè ðàâíî ïóñòàòå çíà÷èò íå èñïîëüçóåì
extern int    ÍÀÏÐÀÂËÅÍÈÅ.4 = 1;// â êàêóþ ñòîðîíó âûñòàâëÿòü îðäåðà 
                                // 1 ââåðõ, -1 âíèçå 
extern int    ÒÈÏ.4         = 4;// òèïû:
//2 - BUYLIMIT
//3 - BUYSTOP
//4 - SELLLIMIT
//5 - SELLSTOP
extern int    ÊÎËÈ×ÅÑÒÂÎ.4  = 10; 
extern int    ÎÒÑÒÓÏ.4      = 50;//â ïóíêòàõ
extern int    ØÀÃ.4         = 120;//â ïóíêòàõ
extern int    ÑÒÎÏ.ËÎÑÑ.4   = 0;//â ïóíêòàõ
extern int    ÒÅÉÊ.ÏÐÎÔÈÒ.4 = 0;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒÊÐÛÒÕ ÎÐÄÅÐÎÂ ÍÀ BUY
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.5      = "ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒÊÐÛÒÕ ÎÐÄÅÐÎÂ ÍÀ BUY";
//~~~~~~~~
extern bool ÒÐÀË.BUY       = false;//TRUE - âêëþ÷èòü, FALSE - âûêëþ÷èòü
extern int  ÒÐÀË.BUY.ÑÒÎÏ. = 28;//â ïóíêòàõ
extern int  ÒÐÀË.BUY.ØÀÃ.  = 1;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒÊÐÛÒÕ ÎÐÄÅÐÎÂ ÍÀ SELL
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.6       = "ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒÊÐÛÒÕ ÎÐÄÅÐÎÂ ÍÀ SELL";
//~~~~~~~~
extern bool ÒÐÀË.SELL       = false;//TRUE - âêëþ÷èòü, FALSE - âûêëþ÷èòü
extern int  ÒÐÀË.SELL.ÑÒÎÏ. = 28;//â ïóíêòàõ
extern int  ÒÐÀË.SELL.ØÀÃ.  = 1;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒËÎÆÍÈÊÎÂ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.7            = "ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒËÎÆÍÈÊÎÂ";
//~~~~~~~~
extern bool ÒÐÀË.ÎÒËÎÆÍÈÊÈ.      = TRUE;//TRUE - âêëþ÷èòü, FALSE - âûêëþ÷èòü 
extern int  ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ. = 29;//â ïóíêòàõ
extern int  ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ.  = 1;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÎÐÄÅÐÎÂ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.8    = "ÁËÎÊ ÄËß ÎÐÄÅÐÎÂ";
//~~~~~~~~  
//extern double ÎÁÚÅÌ.     = 0.01;// ðàçìåð ëîòà 
extern int    ÑËÈÏÏÅÄÆ.  = 0;//(íå âàæíûé) Ìàêñèìàëüíî äîïóñòèìîå îòêëîíåíèå öåíû äëÿ ðûíî÷íûõ îðäåðîâ (îðäåðîâ íà ïîêóïêó èëè ïðîäàæó).      
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 1-ÎÉ Ô-ÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.9    = "ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 1-ÎÉ Ô-ÈÈ";
//~~~~~~~~  
extern double MARGIN_CALL_PERCENT_  = 30;// Óðîâåíü â %
extern int    MARGIN_CALL_COLOR_  = Blue;// öâåò ëèíèè 
extern int    MARGIN_CALL_STYLE_  = 0;// ñòèëü ëèíèè  
extern int    MARGIN_CALL_WIDTH_  = 3;// øèðèíà ëèíèè       
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 2-ÎÉ Ô-ÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.10    = "ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 2-ÎÉ Ô-ÈÈ";
//~~~~~~~~  
extern double VOLUME_LOT_PERCENT_  = 0.01;// ÎÒÊÐÛÂÀÅÌÛÉ ËÎÒ Â % ÎÒ ÑÂÎÁÎÄÍÛÕ ÑÐÅÄÑÒÂ 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 3-ÅÉ Ô-ÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string  ÁËÎÊ.11    = "ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 3-ÅÉ Ô-ÈÈ";
//~~~~~~~~  
extern string SOUND_  = "";//  
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//===========================================
int init()
//===========================================
{
 //<<<<<<<<<<<<<<
 //******************************************
 // ÄÎÏÎËÍÈÒÅËÜÍÀß 3ßß ÔÓÍÊÖÈß
 //******************************************1
 ALERT_OPEN_AN_CLOSE(SOUND_);
 //******************************************1 
 //>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
int start()
//===========================================
{
 //<<<<<<<<<<<<<<
int Magic = ÌÀÃÈÊ.;
int Slippage = ÑËÈÏÏÅÄÆ.;
datetime DTA = D'1999.01.01';
double ProfitMax,ProfitMin,ProfitPM,ProfitLM,ProfitP,ProfitL;
int OPL,OPP;
  int iii,O,OB,OS,OBS,OBL,OSS,OSL,Cmd,NS,NT,pl,TimeMode,TimeStart,TimeEnd,TimeCur;
  double X,Bal,p,Lot,PriceOpen,PriceClose,PriceModify,PriceModifyTP,SL,TP,Profit_T_Min,Profit,Profit_H,Dist,DDist_BL,DDist_BS,DDist_SL,DDist_SS;
  double OPMin,OPMed,OPMax,OSMin,OSMed,OSMax;
  
TimeStart = HourStart * 60 + MinuteStart;
TimeEnd = HourEnd * 60 + MinuteEnd;
TimeCur = Hour() * 60 + Minute();
TimeMode = 0;
  p = Point; 
  if (Digits == 5 || Digits == 3)
    p = Point * 10;
if (TimeStart < TimeEnd)
  if (TimeCur >= TimeStart && TimeCur < TimeEnd)
    TimeMode = 1;
if (TimeStart > TimeEnd) 
  if (TimeCur >= TimeStart || TimeCur < TimeEnd)
    TimeMode = 1;
if (TimeStart < TimeEnd)
  if (TimeCur < TimeStart || TimeCur > TimeEnd)
    TimeMode = 0;
    
if (TimeStart > TimeEnd) 
  if (TimeCur < TimeStart && TimeCur > TimeEnd)
    TimeMode = 0;
if (TimeStart == TimeEnd) TimeMode = 1;
  
  
   for ( iii=OrdersHistoryTotal()-1; iii>=0; iii--)
  if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
    if (OrderMagicNumber() == Magic)
      if (OrderSymbol() == Symbol())
        if (OrderType() == OP_BUY || OrderType() == OP_SELL)
          {
   if (OrderClosePrice() < OrderStopLoss() - Slippage * p || OrderClosePrice() > OrderStopLoss() + Slippage * p)
     if (OrderClosePrice() < OrderTakeProfit() - Slippage * p || OrderClosePrice() > OrderTakeProfit() + Slippage * p)
       {
       DTA = OrderCloseTime();
       iii = -1;
       }
    }
 
 if (TimeDay(DTA) == Day())
   if (TimeHour(DTA) * 60 + TimeMinute(DTA) > TimeStart) 
     TimeMode = 0;
     
/* if (TimeStart < TimeEnd)
   if (TimeHour(DTA) * 60 + TimeMinute(DTA) > TimeStart && TimeHour(DTA) * 60 + TimeMinute(DTA) < TimeEnd) 
     TimeMode = 0;
   
 if (TimeStart > TimeEnd)
   if ((TimeHour(DTA) * 60 + TimeMinute(DTA) > TimeStart && TimeHour(DTA) * 60 + TimeMinute(DTA) < 23*60 + 59) ||  (TimeHour(DTA) * 60 + TimeMinute(DTA) > 0 && TimeHour(DTA) * 60 + TimeMinute(DTA) < TimeEnd))
     TimeMode = 0; 
*/ 
  
if (TimeMode == 0)
 {
   for (iii=OrdersTotal()-1; iii>=0; iii--)
    if (OrderSelect(iii,SELECT_BY_POS,MODE_TRADES))
      if (OrderMagicNumber() == Magic)
        if (OrderSymbol() == Symbol()) 
          {
          if (OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP)
            OrderDelete(OrderTicket(),CLR_NONE);
          if (OrderType() == OP_BUY || OrderType() == OP_SELL)   
            {
            if (OrderType() == OP_BUY) PriceClose = Bid;
            if (OrderType() == OP_SELL) PriceClose = Ask;
            
            OrderClose(OrderTicket(),OrderLots(),PriceClose,Slippage,CLR_NONE);
            }
          }
 }
 
 
     
  ProfitMin = 0;
  for ( iii=0; iii<OrdersHistoryTotal(); iii++)
  if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
    if (OrderMagicNumber() == Magic)
      if (OrderSymbol() == Symbol())
        if (OrderType() == OP_BUY || OrderType() == OP_SELL)
          {
          if (OrderProfit() > 0)
            {
            if (OrderProfit() > ProfitMax) ProfitMax = OrderProfit();
            ProfitP += OrderProfit();
            OPP += 1;
            }
          if (OrderProfit() < 0)
            {
            if (OrderProfit() < ProfitMin) ProfitMin = OrderProfit();
            ProfitL += OrderProfit();
            OPL += OrderProfit();
            }
        
          }
  if (OPP > 0) ProfitPM = ProfitP / OPP;
  if (OPL > 0) ProfitLM = ProfitL / OPL;
   
   
  for ( iii=0; iii<OrdersHistoryTotal(); iii++)
  if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
    if (OrderMagicNumber() == Magic)
      if (OrderSymbol() == Symbol())
        if (OrderType() == OP_BUY || OrderType() == OP_SELL)
          {
          if (OrderProfit() > 0)
            {
            if (OrderProfit() > 0 && OrderProfit() <= ProfitMax * LowPercent * 0.01)
              OPMin += 1;
            if (OrderProfit() > ProfitMax * LowPercent * 0.01 && OrderProfit() <= ProfitMax * MedPercent * 0.01)
              OPMed += 1;
            if (OrderProfit() > ProfitMax * MedPercent * 0.01 && OrderProfit() <= ProfitMax * MaxPercent * 0.01)
              OPMax += 1;
            }
          if (OrderProfit() < 0)
            {
            if (OrderProfit() < 0 && OrderProfit() >= ProfitMin * LowPercent * 0.01)
              OSMin += 1;
            if (OrderProfit() < ProfitMin * LowPercent * 0.01 && OrderProfit() >= ProfitMin * MedPercent * 0.01)
              OSMed += 1;
            if (OrderProfit() < ProfitMin * MedPercent * 0.01 && OrderProfit() >= ProfitMin * MaxPercent * 0.01)
              OSMax += 1;
            }
        
          }
   
   
   
   ObjectCreate("1", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("1", "Âðåìÿ ðàáîòû ñ  "+DoubleToStr(HourStart,0)+":"+DoubleToStr(MinuteStart,0)+" äî "+DoubleToStr(HourEnd,0)+":"+DoubleToStr(MinuteEnd,0), 9, "System", White);
   ObjectSet("1", OBJPROP_CORNER, 0);
   ObjectSet("1", OBJPROP_XDISTANCE, 50);
   ObjectSet("1", OBJPROP_YDISTANCE, 50);    
     
   ObjectSetText("2", "Ïðîôèò  = "+DoubleToStr(Profit,1)+" %", 9, "System", White);
   ObjectSet("2", OBJPROP_CORNER, 0);
   ObjectSet("2", OBJPROP_XDISTANCE, 50);
   ObjectSet("2", OBJPROP_YDISTANCE, 90);
   ObjectCreate("2", OBJ_LABEL, 0, 0, 0);
 
   ObjectCreate("4", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("4","Equity = " + DoubleToStr(AccountEquity(),2) + "   Balance = " + DoubleToStr(AccountBalance(),2), 9, "System", White);
   ObjectSet("4", OBJPROP_CORNER, 0);
   ObjectSet("4", OBJPROP_XDISTANCE, 50);
   ObjectSet("4", OBJPROP_YDISTANCE, 110);
   
   ObjectCreate("5", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("5","Èíô-èÿ ïî óáûòî÷íûì: Ìàêñèìàëüíàÿ = " + DoubleToStr(ProfitMin,2), 9, "System", White);
   ObjectSet("5", OBJPROP_CORNER, 0);
   ObjectSet("5", OBJPROP_XDISTANCE, 50);
   ObjectSet("5", OBJPROP_YDISTANCE, 130);
   
   ObjectCreate("6", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("6","Ìèí: " + DoubleToStr(OSMin,0) + "   Ñðåä: " + DoubleToStr(OSMed,0) + "   Ìàêñ: " + DoubleToStr(OSMax,0), 9, "System", White);
   ObjectSet("6", OBJPROP_CORNER, 0);
   ObjectSet("6", OBJPROP_XDISTANCE, 50);
   ObjectSet("6", OBJPROP_YDISTANCE, 150);
   
   ObjectCreate("7", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("7","Èíô-èÿ ïî ïðèáûëüíûì: Ìàêñèìàëüíàÿ = " + DoubleToStr(ProfitMax,2), 9, "System", White);
   ObjectSet("7", OBJPROP_CORNER, 0);
   ObjectSet("7", OBJPROP_XDISTANCE, 50);
   ObjectSet("7", OBJPROP_YDISTANCE, 170);
   
   ObjectCreate("8", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("8","Ìèí: " + DoubleToStr(OPMin,0) + "   Ñðåä: " + DoubleToStr(OPMed,0) + "   Ìàêñ: " + DoubleToStr(OPMax,0), 9, "System", White);
   ObjectSet("8", OBJPROP_CORNER, 0);
   ObjectSet("8", OBJPROP_XDISTANCE, 50);
   ObjectSet("8", OBJPROP_YDISTANCE, 190);
     
     
     
if (TimeMode == 1)
  {
  
//==============
Profit_H = 0;
Profit = 0;
 
/*
   for ( iii=OrdersHistoryTotal()-1; iii>=0; iii--)
  if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
    if (OrderMagicNumber() == Magic)
      if (OrderSymbol() == Symbol())
        if (OrderType() == OP_BUY || OrderType() == OP_SELL)
          {
   if (OrderClosePrice() < OrderStopLoss() - Slippage * p || OrderClosePrice() > OrderStopLoss() + Slippage * p)
     if (OrderClosePrice() < OrderTakeProfit() - Slippage * p || OrderClosePrice() > OrderTakeProfit() + Slippage * p)
       {
       DTA = OrderCloseTime();
       iii = -1;
       }
          }
 */      
  Profit_H = 0;
          
  for ( iii=0; iii<OrdersHistoryTotal(); iii++)
  if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
    if (OrderMagicNumber() == Magic)
      if (OrderSymbol() == Symbol())
       if (OrderOpenTime() >= DTA)
        if (OrderType() == OP_BUY || OrderType() == OP_SELL)
          {
          Profit_H += OrderProfit();
          }
          
          Bal = 0;
          
          
Bal = (AccountBalance() - Profit_H) + (AccountBalance() - Profit_H) * CloseProfitPercent * 0.01;
    Profit = (AccountEquity() / AccountBalance() - Profit_H) * 100 - 100;
  
   
   ObjectCreate("3", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("3","Óðîâåíü çàêðûòèÿ = " + DoubleToStr(Bal,2), 9, "System", White);
   ObjectSet("3", OBJPROP_CORNER, 0);
   ObjectSet("3", OBJPROP_XDISTANCE, 50);
   ObjectSet("3", OBJPROP_YDISTANCE, 70);
   
 
    if (OrdersTotal() > 0) 
      if (CloseProfitPercent > 0 && AccountEquity() >= Bal) 
        {
  for (iii=OrdersTotal()-1; iii>=0; iii--)
    if (OrderSelect(iii,SELECT_BY_POS,MODE_TRADES))
      if (OrderMagicNumber() == Magic)
        if (OrderSymbol() == Symbol()) 
          if (OrderType() == OP_BUY || OrderType() == OP_SELL)   
            {
            if (OrderType() == OP_BUY) PriceClose = Bid;
            if (OrderType() == OP_SELL) PriceClose = Ask;
            
            OrderClose(OrderTicket(),OrderLots(),PriceClose,Slippage,CLR_NONE);
            
            if (OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP)
          OrderDelete(OrderTicket(),CLR_NONE);
            }
        }
      
//================
  Profit_H = 0;
  DTA = Year() * Day();
  for ( iii=0; iii<OrdersHistoryTotal(); iii++)
  if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
    if (OrderMagicNumber() == Magic)
      if (OrderSymbol() == Symbol())
       if (OrderOpenTime() >= DTA)
        if (OrderType() == OP_BUY || OrderType() == OP_SELL)
          {
          Profit_H += OrderProfit();
          }
  
 //if (AccountBalance() - Profit_H < AccountBalance() * CloseProfitPercent * 0.01) 
 ÏÐÀÊÒÈÊÀ();
  }
 //>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
int deinit()
//===========================================
{
 //<<<<<<<<<<<<<<
 
 //>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//==========================================================================================================
void CONTROL_AT_MARGIN_CALL(string symbol, double level_the_equity, color color_1, int style_1, int width_1)
//==========================================================================================================
{
 //<<<<<<<<<<<<<<
 if(symbol == "")
 symbol = Symbol();
 //---
 double Equity_static = AccountEquity();
 double Equity = AccountEquity();  
 //---
 bool Create = false;
 bool Modify = false;
 bool Delete = false;
 //---
 double Lots = 0;
 double Delta = 0;
 //---
 double Profit_buy = 0;
 double Profit_sell = 0;
 //---
 double Value_point_minlot = MarketInfo(symbol, MODE_TICKVALUE) / (1.0 / MarketInfo(symbol, MODE_MINLOT));
 //---
 if(OrdersTotal()>0)
 {
  for(int i=0;i<OrdersTotal();i++) 
  {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
   {
    if(OrderSymbol()==symbol)
    {
     if(OrderType()==OP_BUY)
     {
      Lots += OrderLots();
      //---
      Profit_buy += OrderProfit();
     } 
     //---
     if(OrderType()==OP_SELL)
     {
      Lots -= OrderLots();
      //---
      Profit_sell += OrderProfit();     
     } 
    }
   }
  }
 }
 //---
 if(ObjectFind("MARGIN CALL FOR "+symbol) == -1)
 if(Lots != 0)
 Create = true;
 //---
 if(ObjectFind("MARGIN CALL FOR "+symbol) > -1)
 if(Lots != 0)
 Modify = true; 
 //---
 if(Lots == 0)
 Delete = true;
 
 //************
 // OPERATIONS
 //************1
 if(Create)
 {
  Equity_static -= Profit_buy;
  Equity_static -= Profit_sell;
  //---
  Delta = (Equity - (Equity_static/100)*level_the_equity) / (Value_point_minlot*(MathAbs(Lots)/MarketInfo(symbol, MODE_MINLOT)));
  //---
  if(Lots > 0)
  {
   if(!ObjectCreate("MARGIN CALL FOR "+symbol, OBJ_HLINE, 0, Time[0], MarketInfo(symbol, MODE_BID) - Delta*MarketInfo(symbol, MODE_POINT)))
   Print("  !!!ÎØÈÁÊÀ: ÍÅ ÓÄÀËÎÑÜ ÑÎÇÄÀÒÜ ÎÁÚÅÊ ÄËß MARGIN CALL!!! ÎØÈÁÊÀ #",GetLastError());
  }
  //---
  if(Lots < 0)
  {
   if(!ObjectCreate("MARGIN CALL FOR "+symbol, OBJ_HLINE, 0, Time[0], MarketInfo(symbol, MODE_ASK) + Delta*MarketInfo(symbol, MODE_POINT)))
   Print("  !!!ÎØÈÁÊÀ: ÍÅ ÓÄÀËÎÑÜ ÑÎÇÄÀÒÜ ÎÁÚÅÊ ÄËß MARGIN CALL!!! ÎØÈÁÊÀ #",GetLastError());
  }
  //---
  ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_COLOR, color_1);
  ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_STYLE, style_1);
  ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_WIDTH, width_1);
 }
 //---
 if(Modify)
 {
  Equity_static -= Profit_buy;
  Equity_static -= Profit_sell;
  //---
  Delta = (Equity - (Equity_static/100)*level_the_equity) / (Value_point_minlot*(MathAbs(Lots)/MarketInfo(symbol, MODE_MINLOT)));
  //---
  Delta = NormalizeDouble(Delta, 0);
  //---
  if(Lots > 0)
  {
   if(!ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_PRICE1, MarketInfo(symbol, MODE_BID) - Delta*MarketInfo(symbol, MODE_POINT)))
   Print("  !!!ÎØÈÁÊÀ: ÍÅ ÓÄÀËÎÑÜ ÌÎÄÈÔÈÖÈÐÎÂÀÒÜ ÎÁÚÅÊ ÄËß MARGIN CALL!!! ÎØÈÁÊÀ #",GetLastError());
  }
  //---
  if(Lots < 0)
  {
   if(!ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_PRICE1, MarketInfo(symbol, MODE_ASK) + Delta*MarketInfo(symbol, MODE_POINT)))
   Print("  !!!ÎØÈÁÊÀ: ÍÅ ÓÄÀËÎÑÜ ÌÎÄÈÔÈÖÈÐÎÂÀÒÜ ÎÁÚÅÊ ÄËß MARGIN CALL!!! ÎØÈÁÊÀ #",GetLastError());
  }
 }
 //--- 
 if(Delete)
 {
  if(ObjectFind("MARGIN CALL FOR "+symbol) > -1)
  ObjectDelete("MARGIN CALL FOR "+symbol);
 } 
 //************1
 //>>>>>>>>>>>>>>
}
//==========================================================================================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//=====================================================================
double LOT_PERCENT_AT_EQUITY(string symbol, double percent_for_open_)
//=====================================================================
{
 //<<<<<<<<<<<<<<
 if(symbol == "")
 symbol = Symbol();
 //---
 double Rezult;
 //---
 int Normalize = 0;
 //---
 if(MarketInfo(symbol, MODE_MINLOT) * 10 >= 1)
 Normalize = 1;
 //---
 if(MarketInfo(symbol, MODE_MINLOT) * 100 >= 1 && MarketInfo(symbol, MODE_MINLOT) * 100 < 10)
 Normalize = 2;
 //---
 Rezult = NormalizeDouble( ((AccountFreeMargin()/100.0) * percent_for_open_)  /  (MarketInfo(symbol, MODE_MARGINREQUIRED) / (1.0/MarketInfo(symbol, MODE_MINLOT))), Normalize);
 //---
 Rezult *= MarketInfo(symbol, MODE_MINLOT);
 //---
 if(Rezult < MarketInfo(symbol, MODE_MINLOT))
 {
  Rezult = MarketInfo(symbol, MODE_MINLOT);
  //---
  Print("   !!! ËÎÒ(%!!!) ÂÛÁÐÀÍ < ×ÅÌ ÌÈÍÈÌÀÜÍÎ ÄÎÏÓÑÒÈÌÛÉ, ÏÎÝÒÎÌÓ ÎÍ ÁÓÄÅÒ = ÌÈÍÈÌÀÜÍÎ ÄÎÏÓÑÒÈÌÎÌÓ");
 }
 //---
 if(Rezult > MarketInfo(symbol, MODE_MAXLOT))
 {
  Rezult = MarketInfo(symbol, MODE_MAXLOT);
  //---
  Print("   !!! ËÎÒ(%!!!) ÂÛÁÐÀÍ > ×ÅÌ ÌÀÊÑÈÌÀËÜÍÎ ÄÎÏÓÑÒÈÌÛÉ, ÏÎÝÒÎÌÓ ÎÍ ÁÓÄÅÒ = ÌÀÊÑÈÌÀËÜÍÎ ÄÎÏÓÑÒÈÌÎÌÓ");
 }
 //---
 return(Rezult);
 //>>>>>>>>>>>>>>
}
//========================================================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
void ALERT_OPEN_AN_CLOSE(string sound = "alert.wav")
//===========================================
{
 //<<<<<<<<<<<<<<
 int Type_execution = 0;
 //---
 static int Orderstotal; 
 //---
 static bool Many_call;
 //---
 if(!Many_call)
 {
  Many_call = true;
  //---
  Orderstotal = OrdersTotal();
  //---
  //Alert("ÇÂÎÍÎ×ÅÊ ÀÊÒÈÂÈÐÎÂÀÍ È ÃÎÒΠÎÏÎÂÅÙÀÒÜ!");
  //---
  return;
 } 
 //---
 if(Orderstotal < OrdersTotal())
 {
  if(OrderSelect(OrdersTotal()-1, SELECT_BY_POS, MODE_TRADES)) 
  {
   if(OrderType() == OP_BUY)
   {
    Type_execution = 1;
    //---
    Orderstotal = OrdersTotal();
   }
   //---
   if(OrderType() == OP_SELL)
   {
    Type_execution = 2;
    //---
    Orderstotal = OrdersTotal();
   } 
  }
 }
 //---
 if(Orderstotal > OrdersTotal())
 {
  if(OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY)) 
  {
   if(OrderClosePrice() == OrderTakeProfit())
   {
    if(OrderType() == OP_BUY)
    {
     Type_execution = 3;
     //---
     Orderstotal = OrdersTotal();
    }
    //---
    if(OrderType() == OP_SELL)
    {
     Type_execution = 4;
     //---
     Orderstotal = OrdersTotal();
    }  
   } 
  }
 }
 //---
 if(Type_execution == 1)
 PlaySound(sound);
 //Alert("ÏÐÎÈÇÎØËÎ ÎÒÊÐÛÒÈÅ ===BUY===");
 //---
 if(Type_execution == 2)
 PlaySound(sound);
 //Alert("ÏÐÎÈÇÎØËÎ ÎÒÊÐÛÒÈÅ ===SELL===");
 //---
 if(Type_execution == 3)
 PlaySound(sound);
 //Alert("ÏÐÎÈÇÎØËÎ ÇÀÊÐÛÒÈÅ ÏÎ ÒÅÉÊ ÏÐÎÔÈÒÓ ===BUY===");
 //---
 if(Type_execution == 4)
 PlaySound(sound);
 //Alert("ÏÐÎÈÇÎØËÎ ÇÀÊÐÛÒÈÅ ÏÎ ÒÅÉÊ ÏÐÎÔÈÒÓ ===SELL===");
 //---
 if(Type_execution == 0)
 Orderstotal = OrdersTotal();
 //>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
bool ÏÐÀÊÒÈÊÀ()
//===========================================
{
 //<<<<<<<<<<<<<<
 //******************************************
 // ÄÎÏÎËÍÈÒÅËÜÍÀß 3ßß ÔÓÍÊÖÈß
 //******************************************1
 ALERT_OPEN_AN_CLOSE();
 //******************************************1 
 
 //******************************************
 // ÒÐÀËÞ ËÈÍÈÈ ÄËß ÎÒËÎÆÍÈÊÎÂ
 //******************************************1
 if(ÒÐÀË.ÎÒËÎÆÍÈÊÈ.)
 {
  ÒÐÀË_ËÈÍÈÈ(ÈÌß.ËÈÍÈÈ.1, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ.);
  ÒÐÀË_ËÈÍÈÈ(ÈÌß.ËÈÍÈÈ.2, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ.);
  ÒÐÀË_ËÈÍÈÈ(ÈÌß.ËÈÍÈÈ.3, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ.);
  ÒÐÀË_ËÈÍÈÈ(ÈÌß.ËÈÍÈÈ.4, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ.);
 }
 //******************************************1
 
 //******************************************
 // ÄÓÌÀÞ È ÄÅËÀÞ Â ÇÀÂÈÑÈÌÎÑÒÈ ÎÒ ÑÈÒÓÀÖÈÈ
 //******************************************1
 ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(ÈÌß.ËÈÍÈÈ.1, ÌÀÃÈÊ., ÍÀÏÐÀÂËÅÍÈÅ.1, ÒÈÏ.1, ÊÎËÈ×ÅÑÒÂÎ.1, ÎÒÑÒÓÏ.1, ØÀÃ.1, ÑÒÎÏ.ËÎÑÑ.1, ÒÅÉÊ.ÏÐÎÔÈÒ.1);
 ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(ÈÌß.ËÈÍÈÈ.2, ÌÀÃÈÊ., ÍÀÏÐÀÂËÅÍÈÅ.2, ÒÈÏ.2, ÊÎËÈ×ÅÑÒÂÎ.2, ÎÒÑÒÓÏ.2, ØÀÃ.2, ÑÒÎÏ.ËÎÑÑ.2, ÒÅÉÊ.ÏÐÎÔÈÒ.2);
 ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(ÈÌß.ËÈÍÈÈ.3, ÌÀÃÈÊ., ÍÀÏÐÀÂËÅÍÈÅ.3, ÒÈÏ.3, ÊÎËÈ×ÅÑÒÂÎ.3, ÎÒÑÒÓÏ.3, ØÀÃ.3, ÑÒÎÏ.ËÎÑÑ.3, ÒÅÉÊ.ÏÐÎÔÈÒ.3);
 ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(ÈÌß.ËÈÍÈÈ.4, ÌÀÃÈÊ., ÍÀÏÐÀÂËÅÍÈÅ.4, ÒÈÏ.4, ÊÎËÈ×ÅÑÒÂÎ.4, ÎÒÑÒÓÏ.4, ØÀÃ.4, ÑÒÎÏ.ËÎÑÑ.4, ÒÅÉÊ.ÏÐÎÔÈÒ.4);
 //******************************************1
 
 //******************************************
 // ÒÐÀËÞ ÂÑÅ ×ÒÎ ÌÎÆÍÎ ÒÐÀËÈÒÜ
 //******************************************1
 if(ÒÐÀË.BUY)
 TRAL_BUY(ÒÐÀË.BUY.ÑÒÎÏ., ÒÐÀË.BUY.ØÀÃ., ÌÀÃÈÊ.); 
 //---
 if(ÒÐÀË.SELL)
 TRAL_SELL(ÒÐÀË.SELL.ÑÒÎÏ., ÒÐÀË.SELL.ØÀÃ., ÌÀÃÈÊ.);
 //---
 //if(ÒÐÀË.ÎÒËÎÆÍÈÊÈ.)
 //{
  //TRAL_L_BUY(OP_BUYLIMIT,  ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ., ÌÀÃÈÊ.);
  //TRAL_L_BUY(OP_BUYSTOP,   ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ., ÌÀÃÈÊ.);
  //---
  //TRAL_L_SELL(OP_SELLLIMIT, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ., ÌÀÃÈÊ.);
  //TRAL_L_SELL(OP_SELLSTOP,  ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ., ÌÀÃÈÊ.);
 //}
 //******************************************1
 
 //******************************************
 // ÄÎÏÎËÍÈÒÅËÜÍÀß 1Àß ÔÓÍÊÖÈß
 //******************************************1
 CONTROL_AT_MARGIN_CALL(Symbol(), MARGIN_CALL_PERCENT_, MARGIN_CALL_COLOR_, MARGIN_CALL_STYLE_, MARGIN_CALL_WIDTH_);
 //******************************************1
 //>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
bool ÄÅÉÑÒÂÈÅ_ÑÈÃÍÀËÜÍÎÃÎ_ÎÁÚÅÊÒÀ(string èìÿ)
//===========================================
{
 //<<<<<<<<<<<<<<
 if(ObjectFind(èìÿ) >= 0)
 {
  if(ObjectGet(èìÿ, OBJPROP_TIME1) == Time [0])
  {
   ObjectSet(èìÿ, OBJPROP_TIME1, Time [1]);
   //---
   return(TRUE);
  } 
 }
 //---
 return(FALSE);
 //>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//==========================================================================================================================
bool ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(string èìÿ_ëèíèè,int ìàãèê,int êóäà,int òèï,int êîëè÷åñòâî,double îòñòóï,double øàã,double ñòîï,double òåéê)
//==========================================================================================================================
{
 //<<<<<<<<<<<<<<
 
 //*********************************
 // ÏÐÎÂÅÐßÞ ÏÐÈÑÓÒÑÒÂÓÅÒ ËÈÍÈß
 //*********************************1
 if(èìÿ_ëèíèè == "")
 return(TRUE);
 //---
 if(ObjectFind(èìÿ_ëèíèè) < 0)
 {
  Print("    ËÈÍÈß ÄËß ÂÛÑÒÀÂËÅÍß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+" = ÎÒÑÓÒÑÒÂÓÅÒ!");
  //---
  return(FALSE);
 }
 //*********************************1
 
 //*********************************
 // ÏÐÎÂÅÐßÞ ÒÈÏ ÂÛÑÒÀÂËßÅÌÎÃÎ ÎÐÄÅÐÀ
 //*********************************1
 if(òèï == OP_BUY || òèï == OP_SELL)
 {
  Print(" !!! ÒÈÏ ÂÛÑÒÀÂËßÅÌÎÃÎ ÎÐÄÅÐÀ ÍÅÊÎÐÐÅÊÒÅÍ");
  //---
  return(FALSE);
 }
 //*********************************1 
 
 //*********************************
 // ÏÎËÓ×ÀÞ ÈÍÔÎÐÌÀÖÈÞ Î ËÈÍÈÈ
 //*********************************1
 double Àêòèâíàÿ_öåíà = NormalizeDouble(ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1), Digits); 
 double Öåíà_ëèíèè    = Àêòèâíàÿ_öåíà;
 //*********************************1
 
 //******************************************
 // ÑÀÌÎ ÂÛÑÒÀÂËÅÍÈÅ
 //******************************************1
 double Ñòîï;
 double Òåéê;
 //---
 double Íà÷àëî;
 //---
 if(êóäà >= 0)
 Íà÷àëî = Àêòèâíàÿ_öåíà + îòñòóï*Point; 
 else
 Íà÷àëî = Àêòèâíàÿ_öåíà - îòñòóï*Point;
 //---
 for(int b1=0;b1<êîëè÷åñòâî;b1++)
 { 
  if(êóäà >= 0)
  {
   Àêòèâíàÿ_öåíà = NormalizeDouble(Íà÷àëî + b1*øàã*Point, Digits);
   //---
   //if(Öåíà_ëèíèè < Bid)
   //{
    //if(Àêòèâíàÿ_öåíà >= Bid)
    //break;
   //}
  }
  else
  {
   Àêòèâíàÿ_öåíà = NormalizeDouble(Íà÷àëî - b1*øàã*Point, Digits);
   //---
   //if(Öåíà_ëèíèè > Bid)
   //{
    //if(Àêòèâíàÿ_öåíà <= Bid)
    //break;
   //}
  }
  //---
  if(òèï == OP_BUYSTOP || òèï == OP_SELLLIMIT)
  {
   if(Àêòèâíàÿ_öåíà < Bid)
   break;
  }
  //---
  if(òèï == OP_SELLSTOP || òèï == OP_BUYLIMIT)
  {
   if(Àêòèâíàÿ_öåíà >= Bid)
   break;
  }
  //---
  if(òèï == OP_BUYLIMIT || òèï == OP_BUYSTOP)
  {
   Ñòîï = NormalizeDouble(Àêòèâíàÿ_öåíà - ñòîï*Point, Digits);
   Òåéê = NormalizeDouble(Àêòèâíàÿ_öåíà + òåéê*Point, Digits); 
  } 
  //---
  if(òèï == OP_SELLLIMIT || òèï == OP_SELLSTOP)
  {
   Ñòîï = NormalizeDouble(Àêòèâíàÿ_öåíà + ñòîï*Point, Digits);
   Òåéê = NormalizeDouble(Àêòèâíàÿ_öåíà - òåéê*Point, Digits); 
  } 
  //---
  if(ñòîï == 0)
  Ñòîï = 0;
  //---
  if(òåéê == 0)
  Òåéê = 0;
  //****************************
  // ÏÐÎÂÅÐßÞ 
  //****************************2
  double Öåíà_1;
  //---
  bool Ïðèñóòñòâèå_äóáëÿæà = false;
  //---
  bool Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1 = false;
  //---
  int  Ñâîé_îðäåð_1 = 0;
  //---
  if(OrdersTotal() > 0)
  {
   for(int b2=0;b2<OrdersTotal();b2++) 
   {
    if(OrderSelect(b2, SELECT_BY_POS, MODE_TRADES)) 
    {
     if( OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê && OrderType()==òèï ) 
     {
      if(NormalizeDouble(OrderOpenPrice(), Digits) == Àêòèâíàÿ_öåíà)
      {
       Ïðèñóòñòâèå_äóáëÿæà = true;             
      }
      //---
      if(OrderComment() == ("("+èìÿ_ëèíèè+")(#"+b1+")"))
      {
       Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1 = true;
       //---
       Ñâîé_îðäåð_1 = b2;
       //---
       break;
      }
     } 
    }
   }
  }
  //****************************2
  
  //****************************
  // ÇÀÍßÒÎ
  //****************************2
  if(!Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1)
  if(Ïðèñóòñòâèå_äóáëÿæà)
  continue;
  //****************************2
  int Ticket;
  bool Ticket_1;
 
  //****************************
  // ÏÐÈÑÓÒÑÒÂÈÅ
  //****************************2
  if(Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1)
  {  
   if(OrderSelect(Ñâîé_îðäåð_1, SELECT_BY_POS, MODE_TRADES)) 
   {
    if(NormalizeDouble(OrderOpenPrice(), Digits) != Àêòèâíàÿ_öåíà)
    {
     //if(Ñòîï == 0)
     //Ñòîï = OrderStopLoss();
     //---
     //if(Òåéê == 0)
     //Òåéê = OrderTakeProfit();
     //---
     Ticket_1 = OrderModify(OrderTicket(), Àêòèâíàÿ_öåíà, Ñòîï, Òåéê, 0);
     //---         
     if(!Ticket_1)
     {
      Print("Àêòèâíàÿ_öåíà= "+Àêòèâíàÿ_öåíà+"; Ñòîï="+Ñòîï+"; Òåéê="+Òåéê );
      //--- 
      Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ "+òèï+" #"+b1+"!!!");
      Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
     }
    }
   } 
  }
  //****************************2
  
  //****************************
  // ÏÎËÍÎÅ ÎÒÑÓÒÑÒÂÈÅ
  //****************************2
  if(!Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1)
  if(!Ïðèñóòñòâèå_äóáëÿæà)
  {
   Ticket = OrderSend(Symbol(), òèï, LOT_PERCENT_AT_EQUITY(Symbol(), VOLUME_LOT_PERCENT_),
                      Àêòèâíàÿ_öåíà, ÑËÈÏÏÅÄÆ.,
                      Ñòîï,
                      Òåéê,
                      "("+èìÿ_ëèíèè+")(#"+b1+")",
                      ìàãèê);                    
   //---
   //Print("OPEN= "+"("+èìÿ_ëèíèè+")(#"+b1+")");
   //---
   if(Ticket < 0)
   {
    Print(b1, "!!!!!  ÎØÈÁÊÀ ÂÛÑÒÀÂËÅÍÈß "+òèï+"; ÎØÈÁÊÀ = ", ERROR(GetLastError()));
    //---
    return(FALSE);
   }
  }
  //****************************2
 }
 //---
 return(TRUE); 
 //******************************************1
 //>>>>>>>>>>>>>>
}
//==========================================================================================================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//*********************
// ÒÐÀË ËÈÍÈÈ     
//*********************1
//====================================================================
bool ÒÐÀË_ËÈÍÈÈ(string èìÿ_ëèíèè,double ñòîï,double øàã)
//====================================================================
{ 
 //*********************************
 // ÏÐÎÂÅÐßÞ ÏÐÈÑÓÒÑÒÂÓÅÒ ËÈÍÈß
 //*********************************1
 if(èìÿ_ëèíèè == "")
 return(TRUE);
 //---
 if(ObjectFind(èìÿ_ëèíèè) < 0)
 {
  Print("   ËÈÍÈß, ÊÎÒÎÐÀß ÄÎËÆÍÀ ÒÐÀËÈÒÑß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+" = ÎÒÑÓÒÑÒÂÓÅÒ!");
  //---
  return(FALSE);
 }
 //*********************************1
 
 //************************************
 // ËÎÂËß ÎØÈÁÎÊ      
 //************************************1
 if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
 {
  Print("    !!!!!ÑÒÎÏ ÄËß ËÈÍÈÈ, ÊÎÒÎÐÀß ÄÎËÆÍÀ ÒÐÀËÈÒÑß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+", ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
  Print("    !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ ËÈÍÈÞ Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+"!!!!!");
  //---
  return(FALSE);
 }
 //************************************1
 
 //************************************
 // ÍÎÐÌÈÐÓÞ      
 //************************************1
 ñòîï = NormalizeDouble(ñòîï*Point,  Digits);
 øàã  = NormalizeDouble(øàã*Point,  Digits);
 //************************************1
 
 //*****************************
 // ÏÅÐÅÌÅÙÀÞ ÏÐÈ ÍÅÎÁÕÎÄÈÌÎÑÒÈ
 //*****************************1
 double Price;
 
 //*****************
 // ÍÈÆÅ ÖÅÍÛ 
 //*****************2
 if(ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) < Bid)
 {
  if( (Bid - ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1)) > ñòîï )
  {
   if( (ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) + øàã) < (Bid - ñòîï) )
   {
    Price = Bid - ñòîï;
    //---
    if(ObjectSet(èìÿ_ëèíèè, OBJPROP_PRICE1, Price))
    {
     return(TRUE);
    }
    else
    {
     Print("    !!!ËÈÍÈß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+", ÍÅÇÀÒÐÀËÈËÀÑÜ!!!");
     Print("    ÂÎÇÌÎÆÍÀß ÎØÈÁÊÀ = "+MarketInfo(Symbol(),MODE_STOPLEVEL));
     //---
     return(FALSE);
    }  
   }
  }
 }  
 //*****************2
     
 //*****************
 // ÂÛØÅ ÖÅÍÛ 
 //*****************2
 if(ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) > Bid)
 {
  if( (ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) - Bid) > ñòîï )
  {
   if( (ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) - øàã) > (Bid + ñòîï) )
   {
    Price = Bid + ñòîï;
    //---
    if(ObjectSet(èìÿ_ëèíèè, OBJPROP_PRICE1, Price))
    {
     return(TRUE);
    }
    else
    {
     Print("    !!!ËÈÍÈß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+", ÍÅÇÀÒÐÀËÈËÀÑÜ!!!");
     Print("    ÂÎÇÌÎÆÍÀß ÎØÈÁÊÀ = "+MarketInfo(Symbol(),MODE_STOPLEVEL));
     //---
     return(FALSE);
    }  
   }
  }
 }      
 //*****************2
 
 //*****************************1
}
//=========================================================
//*******************1
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
//*******************
// ÒÐÀË BUY      
//*******************1
//==========================================================
void TRAL_BUY(double ñòîï,double øàã,int ìàãèê,color öâåò = Blue)  
//==========================================================
{ 
 //************************************
 // ËÎÂËß ÎØÈÁÎÊ      
 //************************************2
 if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
 {
  Print("    !!!!!ÑÒÎÏ ÄËß ÒÐÀËÀ ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
  Print("    !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ BUY!!!!!");
 }
 //************************************2
 
 //************************************
 // ÍÎÐÌÈÐÓÞ      
 //************************************2
 ñòîï = NormalizeDouble(ñòîï*Point, Digits);
 øàã  = NormalizeDouble(øàã*Point,  Digits);
 //************************************2
 
 for(int i=0;i<OrdersTotal();i++) 
 {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
  {
   if(OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê)//ÑÐÀÂÍÅÍÈÅ
   {
    if(OrderType()==OP_BUY)
    {
     if( (Bid - OrderOpenPrice()) > ñòîï )
     {
      if( ((OrderStopLoss() + øàã) < (Bid - ñòîï))||(OrderStopLoss() == 0) )
      {
       double Stop;
       bool Ticket;
       //---
       Stop = Bid - ñòîï;
       //---
       Ticket = OrderModify(OrderTicket(), OrderOpenPrice(), Stop, OrderTakeProfit(), 0, öâåò);
       //---     
       if(!Ticket)
       { 
        Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUY #"+i+"!!!");
        Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
       }               
      }               
     }       
    }
   }
  }
 }
} 
//=========================================================
//*******************1
     
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
//*******************
// ÒÐÀË SELL      
//*******************1
//=========================================================
void TRAL_SELL(double ñòîï,double øàã,int ìàãèê,color öâåò = Red)  
//=========================================================
{ 
 //************************************
 // ËÎÂËß ÎØÈÁÎÊ      
 //************************************2
 if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
 {
  Print("    !!!!!ÑÒÎÏ ÄËß ÒÐÀËÀ ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
  Print("    !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ SELL!!!!!");
 }
 //************************************2
 
 //************************************
 // ÍÎÐÌÈÐÓÞ      
 //************************************2
 ñòîï = NormalizeDouble(ñòîï*Point, Digits);
 øàã  = NormalizeDouble(øàã*Point,  Digits);
 //************************************2
 
 for(int i=0;i<OrdersTotal();i++) 
 {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
  {
   if(OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê)//ÑÐÀÂÍÅÍÈÅ
   {
    if(OrderType()==OP_SELL)
    {
     if( (OrderOpenPrice() - Ask) > ñòîï )
     {
      if( ((OrderStopLoss() - øàã) > (Ask + ñòîï))||(OrderStopLoss() == 0) )
      {
       double Stop;
       bool Ticket;
       //---
       Stop = Ask + ñòîï;
       //---
       Ticket = OrderModify(OrderTicket(), OrderOpenPrice(), Stop, OrderTakeProfit(), 0, öâåò);
       //---     
       if(!Ticket)
       { 
        Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELL #"+i+"!!!");
        Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
       }               
      }               
     }       
    }
   }
  }
 }
}
//=========================================================
//*******************1
     
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//*********************
// ÒÐÀË BUY ÎÒËÎÆÍÈÊÎÂ      
//*********************1
//====================================================================
void TRAL_L_BUY(int òèï,double ñòîï,double øàã,int ìàãèê,color öâåò = Blue)  
//====================================================================
{ 
 //************************************
 // ËÎÂËß ÎØÈÁÎÊ      
 //************************************2
 if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
 {
  Print("    !!!!!ÑÒÎÏ ÄËß ÒÐÀËÀ ÎÒËÎÆÍÈÊÎÂ BUY ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
  Print("    !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ ÎÒËÎÆÍÈÊÎÂ BUY!!!!!");
  //---
  return(FALSE);
 }
 //************************************2
 //************************************
 // ÍÎÐÌÈÐÓÞ      
 //************************************2
 ñòîï = NormalizeDouble(ñòîï*Point,  Digits);
 øàã  = NormalizeDouble(øàã*Point,  Digits);
 //************************************2
 for(int i=0;i<OrdersTotal();i++) 
 {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
  {
   if(OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê)
   {
    double Price;
    double Stop;
    double Take;
    //---
    bool Ticket;
      
    //*****************
    // ÒÐÀË BUYLIMIT  
    //*****************1
    if(OrderType()==òèï)
    if(OrderType()==OP_BUYLIMIT)
    {
     //*****************
     // ÍÈÆÅ ÖÅÍÛ 
     //*****************2
     if(OrderOpenPrice() < Bid)
     {
      if( (Bid - OrderOpenPrice()) > ñòîï )
      {
       if( (OrderOpenPrice() + øàã) < (Bid - ñòîï) )
       {
        Price = Bid - ñòîï;
        //---
        Stop = Price - (OrderOpenPrice()  - OrderStopLoss());
        Take = Price + (OrderTakeProfit() - OrderOpenPrice());
        //---
        if(OrderStopLoss() == 0)
        Stop = OrderStopLoss();
        //---
        if(OrderTakeProfit() == 0)
        Take = OrderTakeProfit();
        //---
        Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
        //---     
        if(!Ticket)
        { 
         Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUYLIMIT #"+i+"!!!");
         Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
        }               
       }               
      }       
     }
     //*****************2
     
     //*****************
     // ÂÛØÅ ÖÅÍÛ 
     //*****************2
     if(OrderOpenPrice() > Bid)
     {
      if( (OrderOpenPrice() - Bid) > ñòîï )
      {
       if( (OrderOpenPrice() - øàã) > (Bid + ñòîï) )
       {
        Price = Bid + ñòîï;
        //---
        Stop = Price - (OrderOpenPrice()  - OrderStopLoss());
        Take = Price + (OrderTakeProfit() - OrderOpenPrice());
        //---
        if(OrderStopLoss() == 0)
        Stop = OrderStopLoss();
        //---
        if(OrderTakeProfit() == 0)
        Take = OrderTakeProfit();
        //---
        Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
        //---     
        if(!Ticket)
        { 
         Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUYLIMIT #"+i+"!!!");
         Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
        }               
       }               
      }       
     }
     //*****************2
     
    } 
    //*****************1
    
    //*****************
    // ÒÐÀË BUYSTOP  
    //*****************1
    if(OrderType()==òèï)
    if(OrderType()==OP_BUYSTOP)
    {
    
     //*****************
     // ÂÛØÅ ÖÅÍÛ 
     //*****************2
     if(OrderOpenPrice() > Bid)
     {
      if( (OrderOpenPrice() - Bid) > ñòîï )
      {
       if( (OrderOpenPrice() - øàã) > (Bid + ñòîï) )
       {
        Price = Bid + ñòîï;
        //---
        Stop = Price - (OrderOpenPrice()  - OrderStopLoss());
        //---
        Take = Price + (OrderTakeProfit() - OrderOpenPrice());
        //---
        if(OrderStopLoss() == 0)
        Stop = OrderStopLoss();
        //---
        if(OrderTakeProfit() == 0)
        Take = OrderTakeProfit();
        //---
        if(OrderStopLoss() == 0)
        Stop = OrderStopLoss();
        //---
        if(OrderTakeProfit() == 0)
        Take = OrderTakeProfit();
        //---
        Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
        //---     
        if(!Ticket)
        { 
         Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUYSTOP #"+i+"!!!");
         Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
        }               
       }               
      }
     } 
     //*****************2   
     
     //*****************
     // ÍÈÆÅ ÖÅÍÛ 
     //*****************2
     if(OrderOpenPrice() < Bid)
     { 
      if( (Bid - OrderOpenPrice()) > ñòîï )
      {
       if( (OrderOpenPrice() + øàã) < (Bid - ñòîï) )
       {
        Price = Bid - ñòîï;
        //---
        Stop = Price - (OrderOpenPrice()  - OrderStopLoss());
        Take = Price + (OrderTakeProfit() - OrderOpenPrice());
        //---
        if(OrderStopLoss() == 0)
        Stop = OrderStopLoss();
        //---
        if(OrderTakeProfit() == 0)
        Take = OrderTakeProfit();
        //---
        Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
        //---     
        if(!Ticket)
        { 
         Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUYSTOP #"+i+"!!!");
         Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
        }               
       }               
      }
     } 
     //*****************2  
     
    }
    //*****************1
    
   }
  }
 }
} 
//=========================================================
//*******************1
     
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
//*******************
// ÒÐÀË SELL ÎÒËÎÆÍÈÊÎÂ     
//*******************1
//====================================================================
void TRAL_L_SELL(int òèï,double ñòîï,double øàã,int ìàãèê,color öâåò = Red)  
//====================================================================
{ 
 //************************************
 // ËÎÂËß ÎØÈÁÎÊ      
 //************************************2
 if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
 {
  Print("    !!!!!ÑÒÎÏ ÄËß ÒÐÀËÀ ÎÒËÎÆÍÈÊÎÂ SELL ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
  Print("    !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ ÎÒËÎÆÍÈÊÎÂ SELL!!!!!");
 }
 //************************************2
 
 //************************************
 // ÍÎÐÌÈÐÓÞ      
 //************************************2
 ñòîï = NormalizeDouble(ñòîï*Point, Digits);
 øàã  = NormalizeDouble(øàã*Point,  Digits);
 //************************************2
 
 for(int i=0;i<OrdersTotal();i++) 
 {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
  {
   if(OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê)
   {
    double Price;
    double Stop;
    double Take;
    //---
    bool Ticket;
    
    //*****************
    // ÒÐÀË SELLLIMIT  
    //*****************1
    if(OrderType()==òèï)
    if(OrderType()==OP_SELLLIMIT)
    {
     //*****************
     // ÂÛØÅ ÖÅÍÛ 
     //*****************2
     if(OrderOpenPrice() > Ask)
     {
      if( (OrderOpenPrice() - Ask) > ñòîï )
      {
       if( (OrderOpenPrice() - øàã) > (Ask + ñòîï) )
       { 
        Price = Ask + ñòîï;
        //---
        Stop = Price + (OrderStopLoss()  - OrderOpenPrice());
        Take = Price - (OrderOpenPrice() - OrderTakeProfit());
        //---
        if(OrderStopLoss() == 0)
        Stop = OrderStopLoss();
        //---
        if(OrderTakeProfit() == 0)
        Take = OrderTakeProfit();
        //---
        Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
        //---     
        if(!Ticket)
        { 
         Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELLLIMIT #"+i+"!!!");
         Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
        }               
       }               
      } 
     }
     //*****************2 
     
     //*****************
     // ÍÈÆÅ ÖÅÍÛ 
     //*****************2
     if(OrderOpenPrice() < Ask)
     { 
      if( (Ask - OrderOpenPrice()) > ñòîï )
      {
       if( (OrderOpenPrice() + øàã) < (Ask - ñòîï) )
       {
        Price = Ask - ñòîï;
        //---
        Stop = Price + (OrderStopLoss()  - OrderOpenPrice());
        Take = Price - (OrderOpenPrice() - OrderTakeProfit());
        //---
        if(OrderStopLoss() == 0)
        Stop = OrderStopLoss();
        //---
        if(OrderTakeProfit() == 0)
        Take = OrderTakeProfit();
        //---
        Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
        //---     
        if(!Ticket)
        { 
         Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELLLIMIT #"+i+"!!!");
         Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
        }               
       }               
      } 
     }
     //*****************2       
    }
    //*****************1
    
    //*****************
    // ÒÐÀË SELLSTOP  
    //*****************1
    if(OrderType()==òèï)
    if(OrderType()==OP_SELLSTOP)
    {
     //*****************
     // ÍÈÆÅ ÖÅÍÛ 
     //*****************2
     if(OrderOpenPrice() < Ask)
     { 
      if( (Ask - OrderOpenPrice()) > ñòîï )
      {
       if( (OrderOpenPrice() + øàã) < (Ask - ñòîï) )
       {
        Price = Ask - ñòîï;
        //---
        Stop = Price + (OrderStopLoss()  - OrderOpenPrice());
        Take = Price - (OrderOpenPrice() - OrderTakeProfit());
        //---
        if(OrderStopLoss() == 0)
        Stop = OrderStopLoss();
        //---
        if(OrderTakeProfit() == 0)
        Take = OrderTakeProfit();
        //---
        Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
        //---     
        if(!Ticket)
        { 
         Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELLSTOP #"+i+"!!!");
         Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
        }               
       }               
      }
     }
     //*****************2 
     
     //*****************
     // ÂÛØÅ ÖÅÍÛ 
     //*****************2
     if(OrderOpenPrice() > Ask)
     {
      if( (OrderOpenPrice() - Ask) > ñòîï )
      {
       if( (OrderOpenPrice() - øàã) > (Ask + ñòîï) )
       { 
        Price = Ask + ñòîï;
        //--- 
        //---
        Stop = Price + (OrderStopLoss()  - OrderOpenPrice());
        Take = Price - (OrderOpenPrice() - OrderTakeProfit());
        //---
        if(OrderStopLoss() == 0)
        Stop = OrderStopLoss();
        //---
        if(OrderTakeProfit() == 0)
        Take = OrderTakeProfit();
        //---
        Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
        //---     
        if(!Ticket)
        { 
         Print("     !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELLSTOP #"+i+"!!!");
         Print("     !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
        }               
       }               
      }
     }
     //*****************2       
    }
    //*****************1
   }
  }
 }
} 
//====================================================================
//*******************1
     
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
//**************************
// ÏÎËÓ×ÅÍÈÅ ÒÅÊÑÒÀ ÎØÈÁÊÈ
//**************************1
//==============================================================
string ERROR(int error_code)
//==============================================================
{
   string error_string;
//----
   switch(error_code)
     {
      //---- Êîäû îøèáîê, âîçâðàùàåìûå òîðãîâûì ñåðâåðîì:
      case 0:   error_string="Íåò îøèáîê";                                                     break;
      case 1:   error_string="Íåò îøèáêè, íî ðåçóëüòàò íåèçâåñòåí";                            break;
      case 2:   error_string="Îáùàÿ îøèáêà";                                                   break;
      case 3:   error_string="Íåïðàâèëüíûå ïàðàìåòðû";                                         break;
      case 4:   error_string="Òîðãîâûé ñåðâåð çàíÿò";                                          break;
      case 5:   error_string="Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà";                            break;
      case 6:   error_string="Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì";                                  break;
      case 7:   error_string="Íåäîñòàòî÷íî ïðàâ";                                              break;
      case 8:   error_string="Ñëèøêîì ÷àñòûå çàïðîñû";                                         break;
      case 9:   error_string="Íåäîïóñòèìàÿ îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà";      break;
      case 64:  error_string="Ñ÷åò çàáëîêèðîâàí";                                              break;
      case 65:  error_string="Íåïðàâèëüíûé íîìåð ñ÷åòà";                                       break;
      case 128: error_string="Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè";                          break;
      case 129: error_string="Íåïðàâèëüíàÿ öåíà";                                              break;
      case 130: error_string="Íåïðàâèëüíûå ñòîïû";                                             break;
      case 131: error_string="Íåïðàâèëüíûé îáúåì";                                             break;
      case 132: error_string="Ðûíîê çàêðûò";                                                   break;
      case 133: error_string="Òîðãîâëÿ çàïðåùåíà";                                             break;  
      case 134: error_string="Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè";                     break;
      case 135: error_string="Öåíà èçìåíèëàñü";                                                break;
      case 136: error_string="Íåò öåí";                                                        break;
      case 137: error_string="Áðîêåð çàíÿò";                                                   break;
      case 138: error_string="Íîâûå öåíû";                                                     break;
      case 139: error_string="Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ";                        break;
      case 140: error_string="Ðàçðåøåíà òîëüêî ïîêóïêà";                                       break;
      case 141: error_string="Ñëèøêîì ìíîãî çàïðîñîâ";                                         break;
      case 145: error_string="Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó";    break;
      case 146: error_string="Ïîäñèñòåìà òîðãîâëè çàíÿòà";                                     break;
      case 147: error_string="Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì";         break;
      case 148: error_string="Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì.";break;
      
      
      //---- Êîäû îøèáîê âûïîëíåíèÿ MQL4-ïðîãðàììû:
      
      case 4000: error_string="Íåò îøèáêè";                                                      break;
      case 4001: error_string="Íåïðàâèëüíûé óêàçàòåëü ôóíêöèè";                                  break;
      case 4002: error_string="Èíäåêñ ìàññèâà - âíå äèàïàçîíà";                                  break;
      case 4003: error_string="Íåò ïàìÿòè äëÿ ñòåêà ôóíêöèé";                                    break;
      case 4004: error_string="Ïåðåïîëíåíèå ñòåêà ïîñëå ðåêóðñèâíîãî âûçîâà";                    break;
      case 4005: error_string="Íà ñòåêå íåò ïàìÿòè äëÿ ïåðåäà÷è ïàðàìåòðîâ";                     break;
      case 4006: error_string="Íåò ïàìÿòè äëÿ ñòðîêîâîãî ïàðàìåòðà";                             break;
      case 4007: error_string="Íåò ïàìÿòè äëÿ âðåìåííîé ñòðîêè";                                 break;
      case 4008: error_string="Íåèíèöèàëèçèðîâàííàÿ ñòðîêà";                                     break;
      case 4009: error_string="Íåèíèöèàëèçèðîâàííàÿ ñòðîêà â ìàññèâå";                           break;
      case 4010: error_string="Íåò ïàìÿòè äëÿ ñòðîêîâîãî ìàññèâà";                               break;
      case 4011: error_string="Ñëèøêîì äëèííàÿ ñòðîêà";                                          break;
      case 4012: error_string="Îñòàòîê îò äåëåíèÿ íà íîëü";                                      break;
      case 4013: error_string="Äåëåíèå íà íîëü";                                                 break;
      case 4014: error_string="Íåèçâåñòíàÿ êîìàíäà";                                             break;
      case 4015: error_string="Íåïðàâèëüíûé ïåðåõîä";                                            break;
      case 4016: error_string="Íåèíèöèàëèçèðîâàííûé ìàññèâ";                                     break;
      case 4017: error_string="Âûçîâû DLL íå ðàçðåøåíû";                                         break;
      case 4018: error_string="Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó";                                 break;
      case 4019: error_string="Íåâîçìîæíî âûçâàòü ôóíêöèþ";                                      break;
      case 4020: error_string="Âûçîâû âíåøíèõ áèáëèîòå÷íûõ ôóíêöèé íå ðàçðåøåíû";                break;
      case 4021: error_string="Íåäîñòàòî÷íî ïàìÿòè äëÿ ñòðîêè, âîçâðàùàåìîé èç ôóíêöèè";         break;
      case 4022: error_string="Ñèñòåìà çàíÿòà";                                                  break;
      case 4050: error_string="Íåïðàâèëüíîå êîëè÷åñòâî ïàðàìåòðîâ ôóíêöèè";                      break;
      case 4051: error_string="Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè";                         break;
      case 4052: error_string="Âíóòðåííÿÿ îøèáêà ñòðîêîâîé ôóíêöèè";                             break;
      case 4053: error_string="Îøèáêà ìàññèâà";                                                  break;
      case 4054: error_string="Íåïðàâèëüíîå èñïîëüçîâàíèå ìàññèâà-òàéìñåðèè";                    break;
      case 4055: error_string="Îøèáêà ïîëüçîâàòåëüñêîãî èíäèêàòîðà";                             break;
      case 4056: error_string="Ìàññèâû íåñîâìåñòèìû";                                            break;
      case 4057: error_string="Îøèáêà îáðàáîòêè ãëîáàëüíûåõ ïåðåìåííûõ";                         break;
      case 4058: error_string="Ãëîáàëüíàÿ ïåðåìåííàÿ íå îáíàðóæåíà";                             break;
      case 4059: error_string="Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå";                          break;
      case 4060: error_string="Ôóíêöèÿ íå ðàçðåøåíà";                                            break;
      case 4061: error_string="Îøèáêà îòïðàâêè ïî÷òû";                                           break;
      case 4062: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà string";                                  break;
      case 4063: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà integer";                                 break;
      case 4064: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà double";                                  break;
      case 4065: error_string=" êà÷åñòâå ïàðàìåòðà îæèäàåòñÿ ìàññèâ";                           break;
      case 4066: error_string="Çàïðîøåííûå èñòîðè÷åñêèå äàííûå â ñîñòîÿíèè îáíîâëåíèÿ";          break;
/*ì*/ case 4067: error_string="Îøèáêà ïðè âûïîëíåíèè òîðãîâîé îïåðàöèè";                         break;
      case 4099: error_string="Êîíåö ôàéëà";                                                     break;
      case 4100: error_string="Îøèáêà ïðè ðàáîòå ñ ôàéëîì";                                      break;
      case 4101: error_string="Íåïðàâèëüíîå èìÿ ôàéëà";                                          break;
      case 4102: error_string="Ñëèøêîì ìíîãî îòêðûòûõ ôàéëîâ";                                   break;
      case 4103: error_string="Íåâîçìîæíî îòêðûòü ôàéë";                                         break;
      case 4104: error_string="Íåñîâìåñòèìûé ðåæèì äîñòóïà ê ôàéëó";                             break;
      case 4105: error_string="Íè îäèí îðäåð íå âûáðàí";                                         break;
      case 4106: error_string="Íåèçâåñòíûé ñèìâîë";                                              break;
      case 4107: error_string="Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè";                 break;
      case 4108: error_string="Íåâåðíûé íîìåð òèêåòà";                                           break;
      case 4109: error_string="Òîðãîâëÿ íå ðàçðåøåíà. Íåîáõîäèìî âêëþ÷èòü îïöèþ Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü â ñâîéñòâàõ ýêñïåðòà.";            break;
      case 4110: error_string="Äëèííûå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà.";           break;
      case 4111: error_string="Êîðîòêèå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà.";          break;
      case 4200: error_string="Îáúåêò óæå ñóùåñòâóåò";                                           break;
      case 4201: error_string="Çàïðîøåíî íåèçâåñòíîå ñâîéñòâî îáúåêòà";                          break;
      case 4202: error_string="Îáúåêò íå ñóùåñòâóåò";                                            break;
      case 4203: error_string="Íåèçâåñòíûé òèï îáúåêòà";                                         break;
      case 4204: error_string="Íåò èìåíè îáúåêòà";                                               break;
      case 4205: error_string="Îøèáêà êîîðäèíàò îáúåêòà";                                        break;
      case 4206: error_string="Íå íàéäåíî óêàçàííîå ïîäîêíî";                                    break;
      default:   error_string="Îøèáêà ïðè ðàáîòå ñ îáúåêòîì";
     }
//----
   return(error_string);
}
//==============================================================
//**************************1
             
            
            
            
Comments