ZigZaHod_v1_1

Author: Copyright � 2015, ForTorg ZEVs
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt Closes Orders by itself It automatically opens orders when conditions are reached
Miscellaneous
It plays sound alertsUses files from the file systemIt writes information to fileIt writes information to fileIt reads information from a fileIt reads information from a file
0 Views
0 Downloads
0 Favorites
ZigZaHod_v1_1
//+------------------------------------------------------------------+
//|                                               ZigZaHod v1.1.mq4  |
//|                                                                  |                             
//|                                             Coders ForTorg ZEVs  |
//|                           https://www.mql5.com/ru/users/fortorg  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, ForTorg ZEVs"
#property link      "https://www.mql5.com/ru/users/fortorg"
#property version   "1.1"
#include <stdlib.mqh>
//#property strict

bool      SigFractal=true;
extern int       ABminRazmer=100;      //  ìèíèìàëüíûé ðàçìåð AB
extern double    OtstupProc=0.1;       // îòñòóï îòë. îò AB (0.1 = 10 %)
extern double    KoefProfit=1.5;       //  Êîåôèöèåíò ïðîôèòà
extern double    DelKorStopOrder=0.6;  //  ãëóáèíà êîððåêöèè ïðè êîòîðîé óáèðàòü îòë.
extern bool      OtmerennyiHod=true;   //  îòìåðåííûé õîä.
extern bool      OdnaStor=true;        //  Òîðãîâëÿ â îäíó ñòîðîíó.
bool      ObeStor=false;
extern bool      SignalDelOldOtl=false;     //  óäàëÿåò ïðåäûäóùóþ îòëîæêó ñâîåãî íàïðàâëåíèÿ ïðè ñèãíàëå
extern bool      SignalDelOldOtlAll=false;  //  óäàëÿå ÂÑÅ ñòàðûå îòëîæêè ïðè ñèãíàëå
extern bool      StopLos=false;           // âûñòàâëÿåò SL çà Â
extern bool      SLSignal=false;      //  âûñòàâëÿåò SL íà óðîâíå íîâîãî ñèãíàëà ïðîòèâîïîëîæíîãî íàïðàâëåíèÿ (åñëè "îäíà ñòîðîíà" òî íå ðàáîòàåò
//----
extern string Òðàë="-=-=-";
extern   bool     bTrlinloss=false;  // ñëåäóåò ëè òðàëèòü íà ó÷àñòêå ëîññîâ (ìåæäó êóðñîì ñòîïëîññà è îòêðûòèÿ)
extern   int      iIndent=50;         // îòñòóï îò òåíè áàðà, íà êîòîðîì ðàçìåùàåòñÿ ñòîïëîññ
extern   int   Frktl_kol=0;    // êîë-âî ôðàêòàëîâ ïî êîòîðûì òðàëèòü
extern   int   Bars_kol=19;   // êîë-âî áàðîâ, ïî òåíÿì êîòîðûõ ñëåäóåò òðàëèòü 
//--------
extern double TargetLoss    = 99999;                // Öåëåâîé óáûòîê
extern double TargetProfit  = 99999;                // Öåëåâàÿ ïðèáûëü

extern bool      Commentariy=false;
bool             DelHistoryMassiv=true;
bool             SaveMassiv=false;
extern int       MagicNumber=515000000;
extern int       MaxOrder=10;          //  ìàõ. êîë-âî îðäåðîâ (íå áîëüøå 30, îãð. â ìàññèâå)
extern double    Lot=0.01;
extern int       Otstup=15;            //  îòñòóï ïóíêòîâ  îòë.( ñïðåä)
extern bool      LotProiz=false;   //  ;-)
extern int       Slippage=10;

bool    Draw=False;
int    NumberOfTry= 5;                 // Êîëè÷åñòâî ïîïûòîê
color clCloseBuy  = Blue;              // Öâåò çíà÷êà çàêðûòèÿ ïîêóïêè
color clCloseSell = Red;               // Öâåò çíà÷êà çàêðûòèÿ ïðîäàæè
color clDelete    = Yellow;            // Öâåò çíà÷êà óäàëåíèÿ îðäåðà

bool   UseSound      = False;             // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
string SoundSuccess  = "ok.wav";          // Çâóê óñïåõà
string SoundError    = "timeout.wav";     // Çâóê îøèáêè
double  hf,lf;
double  temp;// ABBA
double  MA,MB,MRazmer,MTime;
bool    tut=1;
int     hi,lo;
int     SigTfFr=Period();
double  h1,h2,h3,h4,l1,l2,l3,l4;
int     hk1,hk2,hk3,hk4,lk1,lk2,lk3,lk4;
double  A,B,C,D,Eh,El,AB,E,F,Up,Dn;
int     i=0;
int     Ak,Bk,Ck,Dk,Ek,Fk,Upk,Dnk;
double  SelSL,BuySL;
double  Razmer;
int     BBars=0;
double  BStp=0,SStp=0,BSsl=0,SSsl=0,BSotl=0,SSotl=0;
double  Lots;
int     Kol_B_S;
double  LotB,LotS;
bool    New_Bar=true;
string  ExpertComment="ZigZaHod_v1.1";
int     NumberOfTries=5;

double Mas_Ord_Tek[31][8];  // Îáüÿâëÿåì ìàññèâ òåêóùèõ îðäåðîâ
                            // 1é èíäåêñ = ïîðÿäêîâûé íîìåð îðäåðà â ýòîì ìàññèâå
// [0][0]   Êîë-âî îòêðûòûõ îðäåðîâ
// [][1] êóðñ îòêð. îðäåðà   (àáñîëþòíîå çíà÷. êóðñà)
// [][2] StopLoss îðäåðà     (àáñîëþòíîå çíà÷. êóðñà)
// [][3] TakeProfit îðäåðà   (àáñîëþòíîå çíà÷. êóðñà)
// [][4] íîìåð îðäåðà         ticket   
// [][5] êîëè÷. ëîòîâ îðäåðà 
// [][6] òèï îðäåðà 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// [][7] Ìàãè÷åñêîå ÷èñëî îðäåðà  MagicNumber
double Massiv[31][10]; // Îáüÿâëÿåì ìàññèâ -= Massiv =- Îñíîâíîé ìàññèâ
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
// 1é èíäåêñ = ïîðÿäêîâûé íîìåð îðäåðà â ýòîì ìàññèâå
// [0][1]  MagicNumber         !!! ñàìûé Íîâûé ìàãèê  !!!
// [0][2]  MinMagicNumber  îòêð. îðäåðîâ(èç áëîêà ñðàâíåíèÿ îðäåðîâ)
// [0][3]  áëèæàéøàÿ ñâîáîäíàÿ ñòðîêà
// [0][5]  ñ÷åò÷èê ñîõðàíåíèé  (SaveMassiv)
//  Massiv[][1];  A Öåíà
//  Massiv[][2];  B Öåíà 
//  Massiv[][3];  Razmer ÀB 
//  Massiv[][4];  OrderTicket()
//  Massiv[][5];  Time[0]  Âðåìÿ  ÀB  
//  Massiv[][6];  OrderType() Òèï îðäåðà 0=B,1=S,2=BL,3=SL,4=BS,5=SS
//  Massiv[][7];  OrderMagicNumber()    
//--------------------------------------------------------------------
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int init()
  {
   if(SaveMassiv)
     {
      FilesOpen(); // ×èòàåì Ôàéë â ìàññèâ -->-Massiv
     }
   return(0);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int deinit()
  {
   if(SaveMassiv)
     {
      FilesWrite(); //  //  Ïèøåì ìàññèâ Massiv --> â Ôàéë    
     }
   return(0);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
int start()
  {
   int cnt,ticket,total;
   if(AccountProfit()<-TargetLoss || AccountProfit()>TargetProfit)
     {
      ClosePosFirstProfit();
      DeleteOrders();
      MasTekOrder();
      SravMas();
     }
   bool BuyCondition=false,SellCondition=false;// CloseBuyCondition=false , CloseSellCondition=false;
   Fun_New_Bar();    // Ïðîâåðÿåì íîâûé áàð
   if(New_Bar)
     {
      MasTekOrder(); // Èùåì è çàíîñèì â Ìàññèâ Mas_Ord_Tek âñå îðäåðà 
      SravMas(); //  Ïîèñê ïðîïàâøèõ îðäåðîâ â Massiv
                 //|----------  Çàãëóøêè...
      int     TfFr=Period();// ïåðèîä ãðàôèêà, íà êîòîðîì îïðåäåëÿþòñÿ ôðàêòàëû èëè òåíè (1, 5, 15, 30, 60, 240, 1440, 10080, 43200)
      int     TFtralSL=Period();
      int     PervFr=3;
      int     PropCandlFr=0;
      //|---------------------------
      hi=0;lo=0;
      A=0;B=0;C=0;D=0;E=0;F=0;Up=0;Dn=0;
      Ak=0;Bk=0;Ck=0;Dk=0;Ek=0;Fk=0;Upk=0;Dnk=0;
      hlFractal(TfFr);  // Íàõîäèì hl ôðàêòàëû   
      if(hk1==lk1 && hk1==PervFr) return(0);  // òóäà-ñþäà 
      if(SigFractal)
        {
         if((hk1<lk1) && (hk1==PervFr) && (High[1]<High[3] && High[2]<High[3])) // && (hk2>=lk2)) // up
           {
            A=iHigh(Symbol(),TfFr,PervFr); B=l1;C=h2;D=l2;
            Ak=hk1;Bk=lk1;Ck=hk2;Dk=lk2;

           }
         if((lk1<hk1) && (lk1==PervFr) && (Low[1]>Low[3] && Low[2]>Low[3]))// && (lk2>=hk2)) //
           {
            A=iLow(Symbol(),TfFr,PervFr);B=h1;C=l2;D=h2;
            Ak=lk1;Bk=hk1;Ck=lk2;Dk=hk2;

           }
        }
      AB=(A-B)/_Point;
      Razmer=AB;
      if(Razmer<0) {Razmer=-Razmer;}
      SelSL=0;
      BuySL=0;



      if(A>B)
        {
         BuyCondition=true;
         SelSL=A;BuySL=0;
         if(DelKorStopOrder>0 && B+Razmer*DelKorStopOrder*Point>iLow(Symbol(),0,1))BuyCondition=false;
         //         if(ObeStor) {BuyCondition=true;SellCondition=true;}

        }
      if(A<B)
        {
         SellCondition=true;
         BuySL=A;SelSL=0;
         if(DelKorStopOrder>0 && B-Razmer*DelKorStopOrder*Point<iHigh(Symbol(),0,1))SellCondition=false;

         //         if(ObeStor) {BuyCondition=true;SellCondition=true;}
        }
      //================================================================
      //  Èùåì âñå îðäåðà è âûñòàâëÿåì ðàçðåøåíèÿ. Ñ÷èòàåì îðäåðà è ëîòû.
      //================================================================
      if((BuyCondition || SellCondition) && Razmer>ABminRazmer)
        {
         Kol_B_S=0;
         bool DelBS=false,DelSS=false;
         LotB=0; LotS=0;
         total=OrdersTotal();
         for(cnt=0;cnt<total;cnt++)
           {
            if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
              {
               ticket=OrderTicket();
               if(OdnaStor && OrderType()==1) {DelBS=true;}  //  buy 
               if(OdnaStor && OrderType()==0) {DelSS=true;}  //  sell
               if(OrderType()==1 || OrderType()==0) {Kol_B_S++;}  //  buy 
               if(OdnaStor  &&  BuyCondition && OrderType()==1) {BuyCondition=false;}  //  buy 
               if(OdnaStor && SellCondition && OrderType()==0) {SellCondition=false;}  //  sell
               if(OrderType()==OP_BUY) {LotB=LotB+OrderLots();}
               if(OrderType()==OP_SELL) {LotS=LotS+OrderLots();}
              }
           }
        }
      //================================================================
      //  Èùåì âñå îðäåðà è óäàëÿåì íåíóæíûå. Òðàëèì ...
      //================================================================
      total=OrdersTotal();
      for(cnt=0;cnt<total;cnt++)
        {
         if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
           {
            ticket=OrderTicket();
            tut=1; //òóò åñòü
            if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol())
              {
               if(DelSS){CloseOrder(OrderType()); tut=0;}
               if(tut && SignalDelOldOtl && SellCondition) {CloseOrder(OrderType());tut=0;}
               if(tut && SignalDelOldOtlAll && (BuyCondition || SellCondition)) {CloseOrder(OrderType());tut=0;}
              }
            if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())
              {
               if(DelBS){CloseOrder(OrderType()); tut=0;}
               if(tut && SignalDelOldOtl && BuyCondition) {CloseOrder(OrderType());tut=0;}
               if(tut && SignalDelOldOtlAll && (BuyCondition || SellCondition)) {CloseOrder(OrderType());tut=0;}
              }
            if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
              {
               if(OtmerennyiHod) MasOtmerHod(ticket);
               if(tut && (Bars_kol!=0 || Frktl_kol!=0)) TrailingByZ(ticket,TFtralSL,Bars_kol,iIndent,bTrlinloss);
              }
            if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
              {
               if(OtmerennyiHod) MasOtmerHod(ticket);
               if(tut && (Bars_kol!=0 || Frktl_kol!=0)) TrailingByZ(ticket,TFtralSL,Bars_kol,iIndent,bTrlinloss);
              }
            //            if(tut==0) {MasTekOrder(); SravMas();}
           }
        }
      //================================================================
      //  Âûñòàâëÿåì îòëîæêè.
      //================================================================
      if(Razmer<ABminRazmer) {BuyCondition=false; SellCondition=false;}
      //  -------- Îïðåäåëÿåì íîâîñòè ... Åñëè åñòü òî íå òîðãóåì.
      int Min_Dist=MarketInfo(Symbol(),MODE_STOPLEVEL); // Ìèí. äèñòàíöèÿ STOPLEVEL
      int Min_Freez=MarketInfo(Symbol(),MODE_FREEZELEVEL); // Ìèí. äèñòàíöèÿ FREEZELEVEL
      if(Min_Dist>100 || Min_Freez>100) {BuyCondition=false; SellCondition=false;} // Íà íîâîñòÿõ íå òîðãóåì...
      total=OrdersTotal();
      if(total<MaxOrder && (BuyCondition || SellCondition))
        {
         SLTP(); // Âûçûâàåì ïîäïðîãðàììó ðàñ÷åòà sl, tp,... îòêðûâàåìûõ îðäåðîâ
         if(BuyCondition)//<-- BUY condition
           {
            ticket=OpenOrder(OP_BUYSTOP); //<-- Open BUYSTOP order
            CheckError(ticket,"BUYSTOP"); // return(0);
           }
         if(SellCondition) //<-- SELL condition
           {
            ticket=OpenOrder(OP_SELLSTOP); //<-- Open SELLSTOP order
            CheckError(ticket,"SELLSTOP"); // return(0);
           }
        }
      BuyCondition=false; SellCondition=false;
      MasTekOrder(); SravMas();
      //return(0);
     }
//================================================================
//  Èùåì âñå îòêðûòûå îðäåðà è Ðàáîòåì ñ íèìè... Óäàëÿåì îòëîæêè è òðàëèì TP 
//       -=-=-=-=-=-=-=   Ìàñèâ...  ;-)   -=-=-=-=-=-=
//================================================================
   int h;
   total=OrdersTotal();
   for(cnt=0;cnt<total;cnt++)
     {
      tut=1; //òóò åñòü
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
        {
         ticket=OrderTicket();
         for(h=1;h<=30;h++) //
           {
            if((Massiv[h][4]==ticket)) break; // 
           }

         MA=Massiv[h][1]; // Öåíà A  
         MB=Massiv[h][2];  // Öåíà B
         MRazmer=Massiv[h][3]; // Ðàçìåð ÀB
         MTime=Massiv[h][5];  // Âðåìÿ  ÀB         

         if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol())
           {
            if(tut && DelKorStopOrder>0 && !OtmerennyiHod && MB-MRazmer*DelKorStopOrder*Point<iHigh(Symbol(),0,1)){CloseOrder(OrderType());tut=0;}
            if(tut && OtmerennyiHod) MasOtmerHod(ticket);
           }
         if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())
           {
            if(tut && DelKorStopOrder>0 && !OtmerennyiHod && MB+MRazmer*DelKorStopOrder*Point>iLow(Symbol(),0,1)){CloseOrder(OrderType());tut=0;}
            if(tut && OtmerennyiHod) MasOtmerHod(ticket);
           }
         if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
           {
            if(OtmerennyiHod) MasOtmerHod(ticket);
           }
         if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
           {
            if(OtmerennyiHod) MasOtmerHod(ticket);
           }
         if(!tut) { MasTekOrder(); SravMas();}
        }
     }
//================================================================
// Êîìåíòèðóåì...
//================================================================
   if(Commentariy)
     {
      string Spread=MarketInfo(Symbol(),MODE_SPREAD); ExpertComment=MarketInfo(Symbol(),MODE_SPREAD);
      string st="Öåëåâîé óáûòîê="+DoubleToStr(-TargetLoss,2)+" "+AccountCurrency()+"  Òåêóù";
      if(AccountProfit()<0) st=st+"èé óáûòîê=";
      else st=st+"àÿ ïðèáûëü=";
      st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+"  Öåëåâàÿ ïðèáûëü="+DoubleToStr(TargetProfit,2)+" "+AccountCurrency();
      Comment("",TimeToStr(TimeCurrent(),TIME_SECONDS),"    Spread = ",Spread,
              "\n ",st,
              "\n Êîë-âî îðäåðîâ= ",Mas_Ord_Tek[0][0],",Ïóñòàÿ ñòðîêà= ",Massiv[0][3],
              "\n ticketm= ",Massiv[1][4],", Òèï îðäåðà= ",Massiv[1][6],", A= ",Massiv[1][1],", B= ",Massiv[1][2],", Razmer= ",Massiv[1][3],", Time= ",TimeToStr(Massiv[1][5],TIME_DATE|TIME_MINUTES),
              "\n ticketm= ",Massiv[2][4],", Òèï îðäåðà= ",Massiv[2][6],", A= ",Massiv[2][1],", B= ",Massiv[2][2],", Razmer= ",Massiv[2][3],", Time= ",TimeToStr(Massiv[2][5],TIME_DATE|TIME_MINUTES),
              "\n ticketm= ",Massiv[3][4],", Òèï îðäåðà= ",Massiv[3][6],", A= ",Massiv[3][1],", B= ",Massiv[3][2],", Razmer= ",Massiv[3][3],", Time= ",TimeToStr(Massiv[3][5],TIME_DATE|TIME_MINUTES),
              //              "\n ticketm= ",Massiv[4][4],", Òèï îðäåðà= ",Massiv[4][6],", A= ",Massiv[4][1],", B= ",Massiv[4][2],", Razmer= ",Massiv[4][3],", Time= ",TimeToStr(Massiv[4][5],TIME_DATE|TIME_MINUTES),

              "\n MagicNumber= ",MagicNumber,//"  Ñîõðàíåííî= ",Massiv[0][5],
              "\n A= ",Ak,"   ",A,
              "\n B= ",Bk,"   ",B,
              "\n AB= ",AB);
     }
   return(0);
  }
//+------------------------------------------------------------------+
// Êîíåö...
// äàëüøå èäóò ïîäïðîãðàììû...
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
// Ðàñ÷èòûâàåì SL TP è öåíó îòêðûòèÿ.
void SLTP() // Ðàñ÷èòûâàåì SL TP
  {
   SStp=0;SSsl=0;BStp=0;BSsl=0;BSotl=0;SSotl=0;
   if(KoefProfit>0) {SStp=A-Razmer*KoefProfit*Point;}
   SSotl=A-Otstup*0.5*Point-Razmer*OtstupProc*Point;
   if(StopLos) SSsl=B+Otstup*Point;

//   if(ObeStor) {temp=B;B=A;A=temp;}

   if(KoefProfit>0) {BStp=A+Razmer*KoefProfit*Point;}
   BSotl=A+Otstup*Point+Razmer*OtstupProc*Point;
   if(StopLos) BSsl=B-Otstup/2*Point;

//   if(ObeStor) {temp=B;B=A;A=temp;}

   Lots=Lot;
   if(LotProiz)
     {
      Lots=(Lot*(Kol_B_S+1)*2);  // ïèïåö... ÿ ñàì â øîêå  ;-)
      if(Lots==0) Lots=Lot;
     }
  }
//+------------------------------------------------------------------+
void MasOtmerHod(int ticket)
  {
   double Hod=0;
   double OtkatCena=0;
   int OtkatBar=0;
   int OpBar=0;
   double Target;
   for(int m=1;m<=30;m++) //
     {
      if((Massiv[m][4]==ticket)) break; // 
     }
   for(i=0; i<OrdersTotal(); i++)// Àíàëèç ïî âñåì îðäåðàì òåðìèíàëà
     {
      tut=1;
      if(OrderSelect(i,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && ticket==OrderTicket() && OrderMagicNumber()==MagicNumber) //Åñëè åñòü ñëåäóþù è íàøà âàë.ïàðà
        {
         if(OtmerennyiHod && (Massiv[m][6]==0 || Massiv[m][6]==4)) // buy
           {
            if(DelKorStopOrder>0 && Massiv[m][6]==4 && Massiv[m][2]+Massiv[m][3]*DelKorStopOrder*Point>iLow(Symbol(),0,1)){CloseOrder(OrderType());tut=0;}
            OpBar=(iBarShift(Symbol(),0,MTime)+1);
            OtkatBar=iLowest(Symbol(),0,MODE_LOW,OpBar,1);
            OtkatCena=iLow(Symbol(),0,OtkatBar);
            if(iLow(Symbol(),0,0)<OtkatCena) OtkatCena=iLow(Symbol(),0,0);
            Hod=MRazmer;
            Target=OtkatCena+Hod*KoefProfit*Point;
            if(tut && (NormalizeDouble(Target,_Digits)!=NormalizeDouble(OrderTakeProfit(),_Digits)))
              {
               if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Target,0,Yellow))
                  Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),". Îøèáêà: ",GetLastError());
              }
           }
         if((OtmerennyiHod) && ((Massiv[m][6]==1) || (Massiv[m][6]==5))) //sell
           {
            if(DelKorStopOrder>0 && Massiv[m][6]==5 && Massiv[m][2]-Massiv[m][3]*DelKorStopOrder*Point<iHigh(Symbol(),0,1)){CloseOrder(OrderType());tut=0;}
            OpBar=(iBarShift(Symbol(),0,MTime)+1);
            OtkatBar=iHighest(Symbol(),0,MODE_HIGH,OpBar,1);
            OtkatCena=iHigh(Symbol(),0,OtkatBar);
            if(iHigh(Symbol(),0,0)>OtkatCena) OtkatCena=iHigh(Symbol(),0,0);
            Hod=MRazmer;
            Target=OtkatCena-Hod*KoefProfit*Point;
            if(tut && (NormalizeDouble(Target,_Digits)!=NormalizeDouble(OrderTakeProfit(),_Digits)))
              {
               if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Target,0,Yellow))
                  Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),". Îøèáêà: ",GetLastError());
              }
           }
        }
     }
   return;
  }
//+-----------------------------------------------------------------+
//| Èùåì è çàíîñèì â Ìàññèâ "Mas_Ord_Tek" âñå îðäåðà 
//+------------------------------------------------------------------+   
void MasTekOrder()
  {
   int Kol=0;                         // Îáíóëåíèå ñ÷¸ò÷èêà îðäåðîâ
   ArrayInitialize(Mas_Ord_Tek,0);    // Îáíóëåíèå ìàññèâà
   for(i=0; i<OrdersTotal(); i++)// Àíàëèç ïî âñåì îðäåðàì òåðìèíàëà
     {
      if(OrderSelect(i,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
        {
         Kol++;                  // Ñ÷èòàåì îáùåå êîëè÷åñòâî îðäåðîâ
         //--- Ôîðìèðîâàíèå íîâîãî ìàññèâà îðäåðîâ --
         Mas_Ord_Tek[Kol][1] = NormalizeDouble(OrderOpenPrice(),Digits); // Êóðñ îòêðûòèÿ îðäåðîâ
         Mas_Ord_Tek[Kol][2] = NormalizeDouble(OrderStopLoss(), Digits); // Êóðñ SL 
         Mas_Ord_Tek[Kol][3]= NormalizeDouble(OrderTakeProfit(),Digits); // Êóðñ ÒÐ 
         Mas_Ord_Tek[Kol][4] = OrderTicket();     // Íîìåð îðäåðà
         Mas_Ord_Tek[Kol][5] = OrderLots();       // Êîëè÷åñòâî ëîòîâ
         Mas_Ord_Tek[Kol][6] = OrderType();       // Òèï îðäåðà
         Mas_Ord_Tek[Kol][7] = OrderMagicNumber();// Ìàãè÷åñêîå ÷èñëî 
        }
     }
   Mas_Ord_Tek[0][0]=Kol; // Ñîõðàíÿåì â íóëåâóþ ÿ÷åå÷êó êîë-âî îðäåðîâ.
  }
//===================================================================
//  Çàïèñûâàì îðäåð â ìàññèâ
//===================================================================
void ZapOrdMas(int ticket)
  {
   int pusto=Massiv[0][3];
   if(pusto==0)
     {
      for(int f=1;f<=30;f++) // Ïåðåáèðàåì âåñü ìàññèâ â ïîèñêàõ ïóñòûõ ñòðîê
        {
         if((pusto==0) && (Massiv[f][4]==0)) {pusto=f; break;} // åñëè íåò ticket çíà÷èò ñòðîêà ïóñòà
        }
     }
   for(i=0; i<OrdersTotal(); i++)// Àíàëèç ïî âñåì îðäåðàì òåðìèíàëà
     {
      if(OrderSelect(i,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && ticket==OrderTicket() && OrderMagicNumber()==MagicNumber) //Åñëè åñòü ñëåäóþù è íàøà âàë.ïàðà
        {
         if((ObeStor) && (Ak>Bk) && (OrderType()==5)) {temp=B;B=A;A=temp;}  //  buy 
         if((ObeStor) && (Ak<Bk) && (OrderType()==4)) {temp=B;B=A;A=temp;}  //  sell
         Massiv[pusto][1] = A;// A
         Massiv[pusto][2] = B;// B
         Massiv[pusto][3]=Razmer;// Razmer
         Massiv[pusto][4]=OrderTicket();     // Íîìåð îðäåðà
         Massiv[pusto][5]=Time[0];// Âðåìÿ îòêðûòèÿ ñäåëêè
         Massiv[pusto][6] = OrderType();       // Òèï îðäåðà
         Massiv[pusto][7] = OrderMagicNumber();// Ìàãè÷åñêîå ÷èñëî 
         Massiv[0][3]=0;
         Massiv[0][1]=MagicNumber;
         if((ObeStor) && (Ak>Bk) && (OrderType()==5)) {temp=B;B=A;A=temp;} //   buy 
         if((ObeStor) && (Ak<Bk) && (OrderType()==4)) {temp=B;B=A;A=temp;}  //  sell
        }
     }
   return;
  }
//================================================================
//  Ïîèñê ïðîïàâøèõ îðäåðîâ
//================================================================
void SravMas()
  {
   for(int oo=1;oo<=30;oo++) // Âîçüì¸ì íîìåð îðäåðà èç ñòàðîãî ìàññèâà  
     {
      int Sovpadenie=0;     // Äëÿ íà÷àëà îáíóëèì ôàêò ïðèçíàêà ñîâïàä.                     
      for(i=1;i<=Mas_Ord_Tek[0][0];i++) // Ïîèùåì ýòîò îðäåðîê â òåêóùåì ìàññèâå  
        {
         if(Mas_Ord_Tek[i][4]==Massiv[oo][4]) // Åñëè ñîâïàë ticket îðäåðà, òî çàïîìíèì, ò.å ïîêà æèâ
            // è âûõîäèì èç âíóòðåííåãî öèêëà
           {
            Sovpadenie=1;
            if(Massiv[oo][6]!=Mas_Ord_Tek[i][6]) Massiv[oo][6]=Mas_Ord_Tek[i][6]; //èçìåíÿåì ñòàòóñ îðäåðà                        
            break;
           }
        }
      if(Sovpadenie==1) continue;  // Ïåðåõîäèì ê ñëåäóþùåìó ñòàðîìó
      if(Massiv[oo][6]<9) Massiv[oo][6]=Massiv[oo][6]+10;  // Çàêðûò îðäåð 
     }
   Massiv[0][3]=0;    // Ñáðîñ ïóñòîé ÿ÷åéêè äëÿ çàïèñè îðäåðîâ
   for(int f=1;f<=30;f++) // Ïåðåáèðàåì âåñü ìàññèâ â ïîèñêàõ ñòàðûõ îðäåðîâ è èõ óäàëåíèÿ
     {
      if(Massiv[0][3]==0 && Massiv[f][4]==0) Massiv[0][3]=f; // åñëè íåò ticket çíà÷èò ñòðîêà ïóñòà
      if(DelHistoryMassiv && Massiv[f][6]>9) // Åñëè îðäåðà óæå íåò 
        {
         for(int g=0;g<=7;g++) // Îáíóëÿåì âñþ ñòðîêó 
           {
            Massiv[f][g]=0;   // çàïîëíÿåì 0
            if(Massiv[0][3]==0) Massiv[0][3]=f;// Çàïîìèíàåì ïóñòóþ ñòðîêó äëÿ çàïèñè íîâûõ îðäåðîâ
           }
        }
     }
  }
//+------------------------------------------------------------------+
//+-----------------------------------------------------TrailingStop-+
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void TrailingByZ(int ticket,int TFtralSL,int bars_n,int indent,bool trlinloss)
  {
   int hTralFr,lTralFr;
   int   Frktl_bars=5;    // êîë-âî áàðîâ âî ôðàêòàëå
   int k;
   if(Frktl_kol>0)
     {
      k=0;hTralFr=0;
      hf=0;
      for(int a=0; a<Frktl_kol; a++)
        {
         hTralFr=0;
         while(hTralFr<1)
           {
            hf=iCustom(Symbol(),TFtralSL,"Fr",Frktl_bars,0,k);
            if(hf>0) hTralFr=k;
            k++;
           }
        }
      k=0;lTralFr=0;
      lf=0;
      for(a=0; a<Frktl_kol; a++)
         lTralFr=0;
      while(lTralFr<1)
        {
         lf=iCustom(Symbol(),TFtralSL,"Fr",Frktl_bars,1,k);
         if(lf>0) lTralFr=k;
         k++;
        }
     }
   double new_extremum=0,new_extremumFR=0,new_extremumBR=0;

// ïðîâåðÿåì ïåðåäàííûå çíà÷åíèÿ
   if((indent<0) || (ticket==0) || ((TFtralSL!=1) && (TFtralSL!=5) && (TFtralSL!=15) && (TFtralSL!=30) && (TFtralSL!=60) && (TFtralSL!=240) && (TFtralSL!=1440) && (TFtralSL!=10080) && (TFtralSL!=43200)) || (!OrderSelect(ticket,SELECT_BY_TICKET) && OrderMagicNumber()==MagicNumber))
     {
      Print("Òðåéëèíã ôóíêöèåé TrailingByShadows() íåâîçìîæåí èç-çà íåêîððåêòíîñòè çíà÷åíèé ïåðåäàííûõ åé àðãóìåíòîâ.");
      //      return(0);
     }
   if(OrderType()==OP_BUY)// åñëè äëèííàÿ ïîçèöèÿ (OP_BUY), íàõîäèì ìèíèìóì bars_n ñâå÷åé
     {
      if(Frktl_kol>0) // new_extremum = ArrayMinimum(Symbol(),tmfrm,lTralFr);
        {
         int IndMin=ArrayMinimum(Low,lTralFr,1); // èíäåêñ áàðà
         new_extremumFR=iLow(Symbol(),TFtralSL,IndMin);
        }
      if(new_extremumFR>0) new_extremum=new_extremumFR;
      if(Bars_kol>0)
        {
         for(i=1;i<=bars_n;i++)
           {
            if(i==1) new_extremumBR=iLow(Symbol(),TFtralSL,i);
            else
               if(new_extremumBR>iLow(Symbol(),TFtralSL,i)) new_extremumBR=iLow(Symbol(),TFtralSL,i);
           }
        }
      if(new_extremumBR>0 && new_extremum<new_extremumBR) new_extremum=new_extremumBR;
      if((BuySL>0) && (SLSignal)) new_extremum=BuySL;
      //+------------------------------------------------------------------+
      //|  åñëè òðàëèì è â çîíå óáûòêîâ                                    |
      //| åñëè íàéäåííîå çíà÷åíèå "ëó÷øå" òåêóùåãî ñòîïëîññà ïîçèöèè, ïåðåíîñèì
      //+------------------------------------------------------------------+
      if(trlinloss)
        {
         // åñëè íàéäåííîå çíà÷åíèå "ëó÷øå" òåêóùåãî ñòîïëîññà ïîçèöèè, ïåðåíîñèì 
         if((((new_extremum-indent*Point)>OrderStopLoss()) || (OrderStopLoss()==0)) && (new_extremum-indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
            if(NormalizeDouble(new_extremum-indent*Point,_Digits)!=NormalizeDouble(OrderStopLoss(),_Digits))
              {
               if(!OrderModify(ticket,OrderOpenPrice(),new_extremum-indent*Point,OrderTakeProfit(),OrderExpiration()))
                 {
                  Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),".Buy Òðàë SL Îøèáêà: ",GetLastError());
                 }
              }
        }
      //+------------------------------------------------------------------+
      //| åñëè íîâûé ñòîïëîññ íå òîëüêî ëó÷øå ïðåäûäóùåãî, íî è êóðñà îòêðûòèÿ ïîçèöèè                                                                |
      //+------------------------------------------------------------------+
      else
        {

         if(((new_extremum-indent*Point)>OrderStopLoss() || OrderStopLoss()==0) && ((new_extremum-indent*Point)>OrderOpenPrice()) && (new_extremum-indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
            if(NormalizeDouble(new_extremum-indent*Point,_Digits)!=NormalizeDouble(OrderStopLoss(),_Digits))
              {
               if(!OrderModify(ticket,OrderOpenPrice(),new_extremum-indent*Point,OrderTakeProfit(),OrderExpiration()))
                 {
                  Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),".Buy Òðàë SL Îøèáêà: ",GetLastError());
                 }
              }
        }
     }
// åñëè êîðîòêàÿ ïîçèöèÿ (OP_SELL), íàõîäèì ìèíèìóì bars_n ñâå÷åé
   if(OrderType()==OP_SELL)
     {
      if(Frktl_kol>0)
        {
         int IndMax=ArrayMaximum(High,hTralFr,1); // èíäåêñ áàðà
         new_extremumFR=iHigh(Symbol(),TFtralSL,IndMax);
        }
      if(new_extremumFR>0) new_extremum=new_extremumFR;
      if(Bars_kol>0)
        {
         for(i=1;i<=bars_n;i++)
           {
            if(i==1) new_extremumBR=iHigh(Symbol(),TFtralSL,i);
            else
               if(new_extremumBR<iHigh(Symbol(),TFtralSL,i)) new_extremumBR=iHigh(Symbol(),TFtralSL,i);
           }
        }
      if(new_extremumBR>0 && new_extremum==0) new_extremum=new_extremumBR;
      if(new_extremumBR>0 && new_extremumFR>new_extremumBR) new_extremum=new_extremumBR;
      if((SelSL>0) && (SLSignal)) new_extremum=SelSL;
      //+------------------------------------------------------------------+
      //|  åñëè òðàëèì è â çîíå óáûòêîâ                                                                 |
      //+------------------------------------------------------------------+
      if(trlinloss)
        {
         // åñëè íàéäåííîå çíà÷åíèå "ëó÷øå" òåêóùåãî ñòîïëîññà ïîçèöèè, ïåðåíîñèì 
         if((((new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderStopLoss()) || (OrderStopLoss()==0)) && (new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
            if(NormalizeDouble(new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point,_Digits)!=NormalizeDouble(OrderStopLoss(),_Digits))
              {
               if(!OrderModify(ticket,OrderOpenPrice(),new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration()))
                 {
                  Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),".Sell Òðàë SL Îøèáêà: ",GetLastError());
                 }
              }
        }
      //+------------------------------------------------------------------+
      //| åñëè íîâûé ñòîïëîññ íå òîëüêî ëó÷øå ïðåäûäóùåãî, íî è êóðñà îòêðûòèÿ ïîçèöèè                                                                |
      //+------------------------------------------------------------------+
      else
        {
         // åñëè íîâûé ñòîïëîññ íå òîëüêî ëó÷øå ïðåäûäóùåãî, íî è êóðñà îòêðûòèÿ ïîçèöèè
         if((((new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderStopLoss()) || (OrderStopLoss()==0)) && ((new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderOpenPrice()) && (new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
            if(NormalizeDouble(new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point,_Digits)!=NormalizeDouble(OrderStopLoss(),_Digits))
              {
               if(!OrderModify(ticket,OrderOpenPrice(),new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration()))
                 {
                  Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),".Sell Òðàë SL Îøèáêà: ",GetLastError());
                 }
              }
        }
     }
  }
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ  : 19.02.2008                                                      |
//|  Îïèñàíèå: Çàêðûòèå îäíîé ïðåäâàðèòåëüíî âûáðàííîé ïîçèöèè                 |
//+----------------------------------------------------------------------------+
void ClosePosBySelect()
  {
   bool   fc;
   color  clClose;
   double ll,pa,pb,pp;
   int    err,it;

   if((OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderMagicNumber()==MagicNumber)
     {
      for(it=1; it<=NumberOfTry; it++)
        {
         if(!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
         while(!IsTradeAllowed()) Sleep(5000);
         RefreshRates();
         pa=MarketInfo(OrderSymbol(), MODE_ASK);
         pb=MarketInfo(OrderSymbol(), MODE_BID);
         if(OrderType()==OP_BUY)
           {
            pp=pb; clClose=clCloseBuy;
              } else {
            pp=pa; clClose=clCloseSell;
           }
         ll=OrderLots();
         fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
         if(fc)
           {
            if(UseSound) PlaySound(SoundSuccess); break;
              } else {
            err=GetLastError();
            if(UseSound) PlaySound(SoundError);
            if(err==146) while(IsTradeContextBusy()) Sleep(1000*11);
            Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
                  ErrorDescription(err),", try ",it);
            Print(OrderTicket(),"  Ask=",pa,"  Bid=",pb,"  pp=",pp);
            Print("sy=",OrderSymbol(),"  ll=",ll,"  sl=",OrderStopLoss(),
                  "  tp=",OrderTakeProfit(),"  mn=",OrderMagicNumber());
            Sleep(1000*5);
           }
        }
     }
   else Print("Íåêîððåêòíàÿ òîðãîâàÿ îïåðàöèÿ. Close ",GetNameOP(OrderType()));
  }
//|  Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè                      |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    op - èäåíòèôèêàòîð òîðãîâîé îïåðàöèè                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op)
  {
   switch(op)
     {
      case OP_BUY      : return("Buy");
      case OP_SELL     : return("Sell");
      case OP_BUYLIMIT : return("BuyLimit");
      case OP_SELLLIMIT: return("SellLimit");
      case OP_BUYSTOP  : return("BuyStop");
      case OP_SELLSTOP : return("SellStop");
      default          : return("Unknown Operation");
     }
  }
//+----------------------------------------------------------------------------+
//|  Îïèñàíèå : Çàêðûòèå ïîçèöèé ïî ðûíî÷íîé öåíå ñíà÷àëà ïðèáûëüíûõ           |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   (""   - ëþáîé ñèìâîë,                   |
//|                                     NULL - òåêóùèé ñèìâîë)                 |
//|    op - îïåðàöèÿ                   (-1   - ëþáàÿ ïîçèöèÿ)                  |
//|                                                                            |
//+----------------------------------------------------------------------------+
void ClosePosFirstProfit(string sy="",int op=-1)
  {
   int t;
   t=OrdersTotal();
   if(sy=="0") sy=Symbol();
// Ñíà÷àëà çàêðûâàåì ïðèáûëüíûå ïîçèöèè
   for(i=t-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
        {
         if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(MagicNumber<0 || OrderMagicNumber()==MagicNumber)
                 {
                  if(OrderProfit()+OrderSwap()>0) ClosePosBySelect();
                 }
              }
           }
        }
     }
// Ïîòîì âñå îñòàëüíûå
   t=OrdersTotal();
   for(i=t-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
        {
         if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(MagicNumber<0 || OrderMagicNumber()==MagicNumber) ClosePosBySelect();
              }
           }
        }
     }
  }
//|  Îïèñàíèå : Óäàëåíèå îðäåðîâ                                               |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   (""   - ëþáîé ñèìâîë,                   |
//|                                     NULL - òåêóùèé ñèìâîë)                 |
//|    op - îïåðàöèÿ                   (-1   - ëþáîé îðäåð)                    |
//|                                                                            |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="",int op=-1)
  {
   bool fd;
   int  err,it,ot,tot;
//   mn=MagicNumber;
   tot=OrdersTotal();
   if(sy=="0") sy=Symbol();
   for(i=tot-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
        {
         ot=OrderType();
         if(ot>1 && ot<6)
           {
            if((OrderSymbol()==sy || sy=="") && (op<0 || ot==op))
              {
               if(MagicNumber<0 || OrderMagicNumber()==MagicNumber)
                 {
                  for(it=1; it<=NumberOfTry; it++)
                    {
                     if(!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
                     while(!IsTradeAllowed()) Sleep(5000);
                     fd=OrderDelete(OrderTicket(),clDelete);
                     if(fd)
                       {
                        if(UseSound) PlaySound(SoundSuccess); break;
                          } else {
                        err=GetLastError();
                        if(UseSound) PlaySound(SoundError);
                        Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
                        Sleep(1000*5);
                       }
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void Fun_New_Bar() // Ô-èÿ îáíàðóæåíèÿ ..íîâîãî áàðà
  {
   if(BBars==iBars(Symbol(),SigTfFr)) New_Bar=false;
   if(BBars!=iBars(Symbol(),SigTfFr)) {BBars=iBars(Symbol(),SigTfFr);New_Bar=true;}
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
// Îòêðûâàåì îòëîæåííûé îðäåð
//=-=-=-=-
int OpenOrder(int type)
  {
//   MasTekOrder(); // Èùåì è çàíîñèì â Ìàññèâ Mas_Ord_Tek âñå îðäåðà 
//   SravMas();
   int       MaxOrdersetka   = 1;        //êîë-âî îðäåðîâ ñåòêè
   int       delta       = 25;           //ðàññòîÿíèå îò òåêóùåé öåíû
   int err=0;int ticket=0;int c=0;
   if(type==OP_BUYSTOP)
     {
      BSotl= NormalizeDouble(BSotl-delta*Point,Digits);
      for(i=1; i<=MaxOrdersetka; i++)
        {
         BSotl= NormalizeDouble(BSotl+delta*Point,Digits);
         for(c=0;c<NumberOfTries;c++)
           {
            ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,BSotl,Slippage,BSsl,BStp,ExpertComment,MagicNumber,0,Green);
            err=GetLastError();
            if(err==0)
              {
               ZapOrdMas(ticket);
               break;
              }
            else
              {
               if(err==4 || err==137 || err==146 || err==136) //Busy errors
                 {
                  Sleep(60);
                  continue;
                 }
               else //normal error
                 {
                  break;
                 }
              }
           }
        }
     }
   if(type==OP_SELLSTOP)
     {
      SSotl= NormalizeDouble(SSotl+delta*Point,Digits);
      for(i=1; i<=MaxOrdersetka; i++)
        {
         SSotl=NormalizeDouble(SSotl-delta*Point,Digits);
         for(c=0;c<NumberOfTries;c++)
           {
            ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,SSotl,Slippage,SSsl,SStp,ExpertComment,MagicNumber,0,Red);
            err=GetLastError();
            if(err==0)
              {
               ZapOrdMas(ticket);
               break;
              }
            else
              {
               if(err==4 || err==137 || err==146 || err==136) //Busy errors
                 {
                  Sleep(60);
                  continue;
                 }
               else //normal error
                 {

                  break;
                 }
              }
           }
        }
     }
   return(ticket);
  }
//+------------------------------------------------------------------+
// Çàêðûâàåì îòëîæåííûé îðäåð
bool CloseOrder(int type)
  {
   if(type==OP_BUYSTOP)
      return(OrderDelete(OrderTicket()));
   if(type==OP_SELLSTOP)
      return(OrderDelete(OrderTicket()));
   return (0);
  }
//+------------------------------------------------------------------+
void CheckError(int ticket,string Type)
  {
   if(ticket>0)
     {
      if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Type+" Îðäåð îòêðûò : ",OrderOpenPrice());
     }
   else Print("Error opening "+Type+" order : ",ErrorDescription(GetLastError()));
  }
//--------------------------------------------------------------------------   
void hlFractal(int TfFr)
  {
//+--------------Âû÷èñëÿåì h1-h3
   int     BarsFr=5;
   int k;
   int kstart=1;
   hk1=0;hk2=0;hk3=0;hk4=0;hf=0;lf=0;k=kstart;
   while(hk1<1) //...h1
     {
      hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
      if(hf>0) {hk1=k;h1=hf;}
      k++;
     }
   k=k+1;
   while(hk2<1) //...h2
     {
      hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
      if(hf>0) {hk2=k;h2=hf;}
      k++;
     }
   k=k+1;
   while(hk3<1) //...h3
     {
      hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
      if(hf>0) {hk3=k;h3=hf;}
      k++;
     }
   k=k+1;
   while(hk4<1) //...h4
     {
      hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
      if(hf>0) {hk4=k;h4=hf;}
      k++;
     }
//+--------------Âû÷èñëÿåì l1-l3
   lk1=0;lk2=0;lk3=0;lk4=0;
   k=kstart;
   while(lk1<1) //...l1
     {
      lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
      if(lf>0) {lk1=k;l1=lf;}
      k++;
     }
   k=k+1;
   while(lk2<1) //...l2
     {
      lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
      if(lf>0) {lk2=k;l2=lf;}
      k++;
     }
   k=k+1;
   while(lk3<1) //...l3
     {
      lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
      if(lf>0) {lk3=k;l3=lf;}
      k++;
     }
   k=k+1;
   while(lk4<1) //...l4
     {
      lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
      if(lf>0) {lk4=k;l4=lf;}
      k++;
     }
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//+-  ×èòàåì è ïèøåì â ôàéë  -=-  -----------------------------------+
//+------------------------------------------------------------------+
void FilesWrite() //  Ïèøåì  Massiv --> â Ôàéë (ðåçåðâíîå êîïèðîâàíèå)
  {
   Massiv[0][5]=Massiv[0][5]+1;
   int h=FileOpen("Massiv.bin",FILE_BIN|FILE_WRITE);
   FileWriteInteger(h,ArraySize(Massiv),LONG_VALUE);
   FileWriteArray(h,Massiv,0,ArraySize(Massiv));
   FileClose(h);
  }
//+------------------------------------------------------------------+
void FilesOpen() // ×èòàåì Ôàéë â Massiv -->-- (ðåçåðâíîå êîïèðîâàíèå)
  {
   int h=FileOpen("Massiv.bin",FILE_BIN|FILE_READ);
   if(h<1)
     {
      Print("Ôàéë Massiv.bin íå îáíàðóæåí, ïîñëåäíÿÿ îøèáêà ",GetLastError());
      //      return(false);
     }
   int s=FileReadInteger(h,LONG_VALUE);
   ArrayResize(Massiv,s);
   FileReadArray(h,Massiv,0,s);
   FileClose(h);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---