Author: nen@.....ru
ZUP_beta4

This script is a sophisticated technical analysis tool designed for the MetaTrader platform. It enhances the standard ZigZag indicator by adding advanced geometric logic, automated price retracement calculations, and dynamic visual filtering.

Instead of simply showing every price swing, this tool identifies significant structural points (fractals) and calculates the mathematical relationship between them to help traders identify specific harmonic patterns and trend reversals.

Core Functionality

1. Intelligent Fractal Identification The script identifies "peaks" and "troughs" in price action using a depth and backstep system. Unlike a standard ZigZag, it cleans up the data by ensuring that only the most significant local highs and lows are connected, filtering out market "noise."

2. Automated Retracement Analysis (Pesavento & Gartley) The logic automatically calculates the percentage of recovery between consecutive price points. It cross-references these percentages against specific mathematical constants:

  • Pesavento Numbers: The script identifies standard Fibonacci-related retracements.
  • Gartley Patterns: It specifically highlights the 0.886 level, which is a key requirement for identifying Gartley harmonic patterns.

3. Dynamic Visual Filtering The tool offers several modes to control how much information is displayed on your chart:

  • Hidden Mode: You can choose to hide all lines, show only those within a specific percentage range (e.g., 0.21% to 5%), or only show the lines that perfectly match specific mathematical constants.
  • Precision Adjustments: Users can define a "Delta" (tolerance). If a price retracement is very close to a target number (within your specified margin), the script will automatically label it as that specific number.

4. Automated Labeling and Drawing The script manages the chart objects automatically:

  • It draws dotted trend lines connecting significant highs and lows.
  • It places text labels on the chart to show the exact retracement value.
  • It dynamically updates or deletes these objects in real-time as new price data arrives, ensuring that "old" or corrected peaks do not clutter the workspace.

5. Fibonacci Integration The script includes an optional feature to automatically draw a Fibonacci tool relative to the most recent ZigZag legs, providing an immediate visual reference for potential support and resistance levels.

Summary for the User

This is not just a trend-following tool; it is a pattern recognition engine. By automating the math behind harmonic trading (like Gartley patterns), it allows you to see significant structural retracements instantly without having to manually calculate percentages or place multiple Fibonacci tools on every move of the market.

Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
9 Views
0 Downloads
0 Favorites
ZUP_beta4
//+----------------------------------------------------------------------+
//|ZigZag ñ ÷èëàìè Ïåñàâåíòî                                             |
//|----------------------------------------------------------------------+                                                                  |
//|ExtHidden - 0 - âñå ëèíèè ñêðûòû. Îáû÷íûé ZigZag.                     |
//|            1 - ïîêàçûâàåò âñå ëèíèè ìåæäó ôðàêòàëàìè, ó êîòîðûõ      |
//|                ïðîöåíò âîññòàíîâëåíèÿ >0.21 è <5.                    |
//|            2 - ïîêàçûâàåò òîëüêî òå  ëèíèè, ãäå ïðîöåíò âîññòàíî-    |  
//|                âëåíèÿ ðàâåí ÷èñëàì Ïåñàâåíòî (è 0.866 äëÿ ïîñòðî-    |
//|                åíèÿ ïàòòåðíîâ Gartley)                               |
//|            3 - ïîêàçûâàåò ÷èñëà, ïåðå÷èñëåííûå â ïóíêòå 2            |
//|                è ñîîòâåòñòâóþùèå ëèíèè                               |
//|            4 - ïîêàçûâàåò ÷èñëà íå Ïåñàâåíòî è ñîîòâåòñòâóþùèå ëèíèè |
//|                                                                      |
//|                                                                      |
//|ExtFractal - êîëè÷åñòâî ôðàêòàëîâ (ìàêñèìóìîâ, ìèíèìóìîâ),            |
//|             îò êîòîðûõ èäóò ëèíèè ê äðóãèì ôðàêòàëàì                 |
//|                                                                      |
//|ExtFractalEnd - êîëè÷åñòâî ôðàêòàëîâ, ê êîòîðûì èäóò ëèíèè            |
//|                äàëüøå ýòîãî ôðàêòàëà ñîåäèíÿþùèõ ëèíèé íå áóäåò      |
//|                Åñëè ExtFractalEnd=0 òî ïîñëåäíèé ôðàêòàë ðàâåí       |
//|                ìàêñèìàëüíîìó ÷èñëó ôðàêòàëîâ.                        |
//|                Ìèíèìàëüíîå çíà÷åíèå ExtFractalEnd=5                  |
//|                                                                      |
//|ExtDeltaType -    0 - âûâîäÿòñÿ ïðîöåíòû âîññòàíîâëåíèÿ "êàê åñòü"    |
//|                  1 - ðàñ÷åò äîïóñêà (%-÷èñëî Ïåñàâåíòî)<ExtDelta     |
//|                  2 - ((%-÷èñëî Ïåñàâåíòî)/÷èñëî Ïåñàâåíòî)<ExtDelta  |
//|                                                                      |
//|                                                                      |
//|ExtDelta - (äîïóñê) îòêëîíåíèå â ðàñ÷åòå. Çàäàåò âåëè÷èíó             |
//|           ïîòåíöèàëüíîé ðàçâîðîòíîé çîíû.                            |
//|                  äîëæíî áûòü 0<ExtDelta<1                            |
//|                                                                      |
//|ExtFibo  - true - âûâîäÿòñÿ óðîâíè Ôèáîíà÷÷è                          |
//|           false - íå âûâîäÿòñÿ óðîâíè Ôèáîíà÷÷è (îòíîñèòåëüíî        |
//|                   ïðåäïîñëåäíåãî êîëåíà ZigZag-a)                    |
//|                                                                      |
//+----------------------------------------------------------------------+
#property copyright "nen@.....ru"
#property link      "http://onix-trade.net/forum/index.php?act=post&do=reply_post&f=9&t=118"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int ExtDepth=12;
extern int ExtHidden=1;
extern int ExtFractal=10;
extern int ExtFractalEnd=10;
extern double ExtDelta=0.04;
extern int ExtDeltaType=1;
extern bool ExtFibo=false;
extern color ExtLine=DarkBlue;
extern color ExtPesavento=Yellow;
extern color ExtGartley866=GreenYellow;
extern color ExtNotFibo=SlateGray;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
//---- indicator buffers
// Ìàññèâ äëÿ îòðèñîâêè ZigZag
double zz[];
// Ìàññèâ ìèíèìóìîâ ÷åðíîâîé
double ExtMapBuffer[];
// Ìàññèâ ìàêñèìóìîâ ÷åðíîâîé
double ExtMapBuffer2[];

// Ìàññèâ ÷èñåë Ïåñàâåíòî (Ôèáû è ìîäèôèöèðîâàííûå Ôèáû)
double fi[]={0.382, 0.5, 0.618, 0.707, 0.786, 0.841, 0.886, 1.0, 1.128, 1.272, 1.414, 1.5, 1.618, 2.0, 2.414, 2.618, 4.0};
string fitxt[]={ ".382", "0.5", ".618", ".707", ".786", ".841", ".886", "1.0", "1.128", "1.272", "1.414", "1.5", "1.618", "2.0", "2.414", "2.618", "4.0" };
// Ìàòðèöà äëÿ ïîèñêà èñ÷åçíóâøèõ áàðîâ afr - ìàññèâ çíà÷åíèé âðåìåíè ïÿòè ïîñëåäíèõ ôðàêòàëîâ + îäíà ÿ÷åéêà - ïðèçíàê èíèöèàëèçàöèè
// afrl - ìèíèìóìû, afrh - ìàêñèìóìû
int afr[]={0.0,0.0,0.0,0.0,0.0,0.0};
double afrl[]={0.0,0.0,0.0,0.0,0.0}, afrh[]={0.0,0.0,0.0,0.0,0.0};

double HL,HLp,kk,kj,Angle;
// LowPrim,HighPrim,LowLast,HighLast - çíà÷åíèÿ ìèíèìóìîâ è ìàêñèìóìîâ áàðîâ
double LowPrim,HighPrim,LowLast,HighLast;
// numLowPrim,numHighPrim,numLowLast,numHighLast -íîìåðà áàðîâ
int numLowPrim,numHighPrim,numLowLast,numHighLast,k,k1,k2,ki,countLow1,countHigh1,shift,shift1;
// Âðåìÿ ñâå÷è ñ ïåðâûì îò íóëåâîãî áàðà ôðàêòàëîì
int timeFr1,timeFr1new,timeFr2Low,timeFr2High;
// Êîëè÷åñòâî ëèíèé, èäóùèõ îò ïåðâîãî îò íóëåâîãî áàðà ôðàêòàëà ê ñîñåäíèì ôðàêòàëàì
int countLineFr1;
// Ñ÷åò÷èê ôðàêòàëîâ
int countFr;
// Áàð, äî êîòîðîãî íàäî ðèñîâàòü ñîåäèíèòåëüíûå ëèíèè îò íóëåâîãî áàðà
int countBarEnd=0;
// Áàð, äî êîòîðîãî íàäî ïåðåñ÷èòûâàòü îò íóëåâîãî áàðà
int numBar=0;
// Íîìåð îáúåêòà
int numOb;
//Màêñèìóì èëè ìèíèìóì áàðà ïåðâîãî ôðàêòàëà (è ïðåäûäóùåãî ôðàêòàëà)
double hFr1, lFr1, hFr2, lFr2;
// Ôëàãè
// flagFrNew=true - îáðàçîâàëñÿ íîâûé ôðàêòàë èëè ïåðâûé ôðàêòàë ñìåñòèëñÿ íà äðóãîé áàð. =false - ïî óìîë÷àíèþ.
// flagFr=true - ïîñëåäíèé ôðàêòàë ìàêñèìóì. false - ïîñëåäíèé ôðàêòàë ìèíèìóì.
bool flagLow,flagHigh,flagFr,flagFrNew=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(5);
//---- drawing settings
   SetIndexStyle(0,DRAW_SECTION);
//---- indicator buffers mapping
   SetIndexBuffer(0,zz);
   SetIndexBuffer(1,ExtMapBuffer);
   SetIndexBuffer(2,ExtMapBuffer2);
   SetIndexEmptyValue(0,0.0);
   ArraySetAsSeries(zz,true);
   ArraySetAsSeries(ExtMapBuffer,true);
   ArraySetAsSeries(ExtMapBuffer2,true);
//---- indicator short name
   IndicatorShortName("ZZ("+ExtDepth+")");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Äåèíèöèàëèçàöèÿ. Óäàëåíèå âñåõ òðåíäîâûõ ëèíèé è òåêñòîâûõ îáúåêòîâ
//+------------------------------------------------------------------+
int deinit(){ ObjectsDeleteAll(0,2); ObjectsDeleteAll(0,21); ObjectDelete("Fibo"); return(0);}
//********************************************************
int start()
  {
   int counted_bars=IndicatorCounted();

   if( counted_bars<0 )
   {
      Alert("Ñáîé ðàñ÷åòà èíäèêàòîðà");
      return(-1);
   }

//  ZigZag èç ÌÒ. Íà÷àëî.
   int    shift, back,lasthighpos,lastlowpos;
   double val,res;
   double curlow,curhigh,lasthigh,lastlow;

   for(shift=Bars-ExtDepth; shift>=0; shift--)
     {
      val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
      if(val==lastlow) val=0.0;
      else 
        { 
         lastlow=val; 
         if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
         else
           {
            for(back=1; back<=ExtBackstep; back++)
              {
               res=ExtMapBuffer[shift+back];
               if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0; 
              }
           }
        } 
      ExtMapBuffer[shift]=val;
      //--- high
      val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)];
      if(val==lasthigh) val=0.0;
      else 
        {
         lasthigh=val;
         if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
         else
           {
            for(back=1; back<=ExtBackstep; back++)
              {
               res=ExtMapBuffer2[shift+back];
               if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0; 
              } 
           }
        }
      ExtMapBuffer2[shift]=val;
     }

   // final cutting 
   lasthigh=-1; lasthighpos=-1;
   lastlow=-1;  lastlowpos=-1;

   for(shift=Bars-ExtDepth; shift>=0; shift--)
     {
      curlow=ExtMapBuffer[shift];
      curhigh=ExtMapBuffer2[shift];
      if((curlow==0)&&(curhigh==0)) continue;
      //---
      if(curhigh!=0)
        {
         if(lasthigh>0) 
           {
            if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;
            else ExtMapBuffer2[shift]=0;
           }
         //---
         if(lasthigh<curhigh || lasthigh<0)
           {
            lasthigh=curhigh;
            lasthighpos=shift;
           }
         lastlow=-1;
        }
      //----
      if(curlow!=0)
        {
         if(lastlow>0)
           {
            if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;
            else ExtMapBuffer[shift]=0;
           }
         //---
         if((curlow<lastlow)||(lastlow<0))
           {
            lastlow=curlow;
            lastlowpos=shift;
           } 
         lasthigh=-1;
        }
     }
  
   countLow1=0;
   countHigh1=0;

   for(shift=Bars-1; shift>=0; shift--)
     {
      zz[shift]=ExtMapBuffer[shift];
      if(shift>=Bars-ExtDepth) {ExtMapBuffer2[shift]=0.0;ExtMapBuffer[shift]=0.0; zz[shift]=0.0;}
      else
        {
         res=ExtMapBuffer2[shift];
         if(res!=0.0) zz[shift]=res;
        }
        if (ExtMapBuffer[shift]>0.0) {countLow1++;}
        if (ExtMapBuffer2[shift]>0.0) {countHigh1++;}
     }
// ZigZag èç ÌÒ. Êîíåö. Äîáàâëåí â ZigZag ïîäñ÷åò êîëè÷åñòâà ôðàêòàëàâ countLow1 è countHigh1.
// Äàëåå èäåò "äîîñíàñòêà" ZigZag-à.
    
      // Ïðîâåðêà ïðàâèëüíîñòè ââåäåííûõ âíåøíèõ ïåðåìåííûõ
      if (countBarEnd==0)
        {
         if (ExtDelta<=0) ExtDelta=0.001;
         if (ExtDelta>1) ExtDelta=0.999;

         if (ExtHidden<0) ExtHidden=0;
         if (ExtHidden>4) ExtHidden=4;
 
         if (ExtDeltaType<0) ExtDeltaType=0;
         if (ExtDeltaType>3) ExtDeltaType=3;

         if (ExtFractalEnd>0)
           {
            if (ExtFractalEnd<5) ExtFractalEnd=5;

            if (countLow1>ExtFractalEnd) countLow1=ExtFractalEnd;
            if (countHigh1>ExtFractalEnd) countHigh1=ExtFractalEnd;
           }
        }

   if (flagFrNew)
     {
      countLow1=0;
      countHigh1=0;
      for(shift=0; shift<=numBar; shift++)
        {
         if (ExtMapBuffer[shift]>0.0) {countLow1++;}
         if (ExtMapBuffer2[shift]>0.0) {countHigh1++;}    
        }  
      counted_bars=3;
     }

   if (Bars - counted_bars>2 && ExtHidden>0)
     {

// Èíèöèàëèçàöèÿ ìàòðèöû
      if (afr[5]<1)
        {
         k=0;
         for (shift=0; shift<Bars && k<5; shift++)
           {
            if (zz[shift]>0)
              {
               afr[k]=Time[shift];
               if (zz[shift]==ExtMapBuffer[shift]) {afrl[k]=Low[shift]; afrh[k]=0.0;}
               if (zz[shift]==ExtMapBuffer2[shift]) {afrh[k]=High[shift]; afrl[k]=0.0;}
               k++;
              }
           }
         afr[k]=1;

         if (ExtFibo)
           {
            if (afrl[1]>0) ObjectCreate("fibo",OBJ_FIBO,0,afr[2],afrh[2],afr[1],afrl[1]);
            else ObjectCreate("fibo",OBJ_FIBO,0,afr[2],afrl[2],afr[1],afrh[1]);
           }
        }
     for (shift=0; shift<Bars; shift++) // Ïîèñê âðåìåíè áàðà ïåðâîãî ôðàêòàëà, ñ÷èòàÿ îò íóëåâîãî áàðà
       {
        if (zz[shift]>0.0) 
         {
          timeFr1=Time[shift];
          if (ExtMapBuffer[shift]==zz[shift]) {lFr1=Low[shift]; hFr1=0.0;}
          if (ExtMapBuffer2[shift]==zz[shift]) {hFr1=High[shift]; lFr1=0.0;}

          break;
         }
       }
      // Ïîèñê íîìåðà áàðà, äî êîòîðîãî áóäóò ðèñîâàòüñÿ ñîåäèíèòåëüíûå ëèíèè 
      if (countBarEnd==0)
        {
         if (ExtFractalEnd>0)
           {
            k=ExtFractalEnd;
            for (shift=0; shift<Bars && k>0; shift++) if (zz[shift]>0 && ExtMapBuffer2[shift]>0) {countBarEnd=shift; k--;}
           }
         else countBarEnd=Bars-3;
        }

//-----------1 Îòðèñîâêà ìàêñèìóìîâ. Íà÷àëî.
//+--------------------------------------------------------------------------+
//| Âûâîä ñîåäèíÿþùèõ ëèíèé è ÷èñåë Ïåñàâåíòî è 0.866 äëÿ ìàêñèìóìîâ ZigZag-a
//| Îòðèñîâêà èäåò îò íóëåâîãî áàðà
//+--------------------------------------------------------------------------+

   numLowPrim=0; numLowLast=0;
   numHighPrim=0; numHighLast=0;

   LowPrim=0.0; LowLast=0.0;
   HighPrim=0.0; HighLast=0.0;
   
   flagHigh=false;
   Angle=-100;
   
   if (flagFrNew) countFr=1;
   else countFr=ExtFractal;
   
   for (k=0; (k<Bars-1 && countHigh1>0 && countFr>0); k++)
     {
      if (ExtMapBuffer[k]>0.0 && LowPrim==0.0 && HighPrim>0 && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}
      if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]<LowPrim && HighPrim>0 && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}
      if (ExtMapBuffer2[k]>0.0 && ExtMapBuffer2[k]==zz[k])
        {
         if (HighPrim>0) 
           {
            if (HighLast>0) 
              {
               if (flagHigh)
                 {
                  if (ExtMapBuffer2[k]>HighLast) {HighLast=High[k]; numHighLast=k;}
                 }
               else
                 {
                  if (ExtMapBuffer2[k]>HighPrim) flagHigh=true;
                  HighLast=High[k];
                  numHighLast=k;
                 }
              }
            else {numHighLast=k; HighLast=High[k];}

              HL=High[numHighLast]-Low[numLowPrim];
              kj=(HighPrim-HighLast)*10000/(numHighLast-numHighPrim);
              if (HL>0 && (Angle>kj || Angle==-100))  // Ïðîâåðêà óãëà íàêëîíà ëèíèè
                {
                 Angle=kj;
                 // Ñîçäàíèå ëèíèè è òåêñòîâîãî îáúåêòà
                 HLp=High[numHighPrim]-Low[numLowPrim];
                 k1=MathCeil((numHighPrim+numHighLast)/2);
                 kj=HLp/HL;
 
                 if (kj>0.21 && kj<=5)
                   {
                    // Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìàêñèìóìàìè
                    kk=kj;
                    k2=1;

                    if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
                    if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

                    if (k2<0)
                      // ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
                      {
                      if (ExtHidden!=4 && ExtHidden>0)                  
                        {
                         ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));
                         if (kk==0.886) // Gartley
                           ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial", ExtGartley866);
                         else
                           ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial",ExtPesavento);
                        }
                       }
                    else
                      // ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
                      {
                       if (ExtHidden==1 || ExtHidden==4)
                         {
                          ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));
                          ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
                         }
                      }
                      if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))
                        {
                         ObjectCreate("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TREND,0,Time[numHighPrim],High[numHighPrim],Time[numHighLast],High[numHighLast]);
                         ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_RAY,false);
                         ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_STYLE,STYLE_DOT);
                         ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_COLOR,ExtLine);
                        }
                   }
                }
           }
         else 
            {numHighPrim=k; HighPrim=High[k];}
        }
       // Ïåðåõîä íà ñëåäóþùèé ôðàêòàë
       if (k>countBarEnd) 
//       if (k>Bars-3) 
         {
          k=numHighPrim+1; countHigh1--; countFr--;
          numLowPrim=0; numLowLast=0;
          numHighPrim=0; numHighLast=0;

          LowPrim=0.0; LowLast=0.0;
          HighPrim=0.0; HighLast=0.0;
   
          flagHigh=false;
          Angle=-100;
         }
     }
//-----------1 Îòðèñîâêà ìàêñèìóìîâ. Êîíåö.

//-----------2 Îòðèñîâêà ìèíèìóìîâ. Íà÷àëî.
//+-------------------------------------------------------------------------+
//| Âûâîä ñîåäèíÿþùèõ ëèíèé è ÷èñåë Ïåñàâåíòî è 0.866 äëÿ ìèíèìóìîâ ZigZag-a
//| Îòðèñîâêà èäåò îò íóëåâîãî áàðà
//+-------------------------------------------------------------------------+

   numLowPrim=0; numLowLast=0;
   numHighPrim=0; numHighLast=0;

   LowPrim=0.0; LowLast=0.0;
   HighPrim=0.0; HighLast=0.0;
   
   flagLow=false; 
   Angle=-100;

   if (flagFrNew) countFr=1;
   else countFr=ExtFractal;

   for (k=0; (k<Bars && countLow1>0 && countFr>0); k++)
     {
      if (ExtMapBuffer2[k]>HighPrim && LowPrim>0) {HighPrim=High[k]; numHighPrim=k;}
      if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]==zz[k]) 
        {
         if (LowPrim>0) 
           {
            if (LowLast>0) 
              {
               if (flagLow)
                 {
                  if (ExtMapBuffer[k]<LowLast) {LowLast=Low[k]; numLowLast=k;}
                 }
               else
                 {
                  if (ExtMapBuffer[k]<LowPrim) flagLow=true;
                  LowLast=Low[k];
                  numLowLast=k;
                 }
              }
            else {numLowLast=k; LowLast=Low[k];}
              // âûâîä ñîåäèíÿþùèõ ëèíèé è ïðîöåíòîâ âîññòàíîâëåíèÿ(÷èñåë Ïåñàâåíòî)
              HL=High[numHighPrim]-Low[numLowLast];
              kj=(LowPrim-LowLast)*1000/(numLowLast-numLowPrim);
              if (HL>0 && (Angle<kj || Angle==-100))  // Ïðîâåðêà óãëà íàêëîíà ëèíèè
                {
                 Angle=kj;

                 HLp=High[numHighPrim]-Low[numLowPrim];
                 k1=MathCeil((numLowPrim+numLowLast)/2);
                 kj=HLp/HL;

                 if (kj>0.21 && kj<=5)
                   {
                    // Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìèíèìóìàìè
                    kk=kj;
                    k2=1;

                    if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
                    if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

                    if (k2<0)
                    // ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
                      {
                       if (ExtHidden!=4 && ExtHidden>0)                  
                         {
                          ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));
                          if (kk==0.886) // Gartley
                            ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial", ExtGartley866);
                          else
                            ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial",ExtPesavento);
                         }
                      }
                    else 
                    // ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
                      { 
                       if (ExtHidden==1 || ExtHidden==4)
                         ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));
                         ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
                      }
                      if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))
                        {
                         ObjectCreate("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TREND,0,Time[numLowPrim],Low[numLowPrim],Time[numLowLast],Low[numLowLast]);
                         ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_RAY,false);
                         ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_STYLE,STYLE_DOT);
                         ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_COLOR,ExtLine);
                        }
                   }
                }
           }
         else {numLowPrim=k; LowPrim=Low[k];}
        }
       // Ïåðåõîä íà ñëåäóþùèé ôðàêòàë
       if (k>countBarEnd) 
//       if (k>Bars-3) 
         {
          k=numLowPrim+1; countLow1--; countFr--;

          numLowPrim=0; numLowLast=0;
          numHighPrim=0; numHighLast=0;

          LowPrim=0.0; LowLast=0.0;
          HighPrim=0.0; HighLast=0.0;
  
          flagLow=false;
          Angle=-100;
         }
     }

  flagFrNew=false;
  numBar=0;
//-----------2 Îòðèñîâêà ìèíèìóìîâ. Êîíåö.
  }
else // counted_bars<=2 Ïðîâåðêà ñìåùåíèé ôðàêòàëîâ.

// Ïðîâåðêà íà ðàçðåøåíèå âûâîäà îñíàñòêè. Íà÷àëî.
if (ExtHidden>0)
//
  {
//

// Êîððåêöèÿ ñîåäèíÿþùèõ ëèíèé è ÷èñåë. Íà÷àëî.

  {

   // Ïîèñê âðåìåíè áàðà ïåðâîãî ôðàêòàëà, ñ÷èòàÿ îò íóëåâîãî áàðà
   for (shift1=0; shift1<Bars; shift1++) 
     {
      if (zz[shift1]>0.0) 
       {
        timeFr1new=Time[shift1];
        break;
       }
     }
   // Ïîèñê áàðà, íà êîòîðîì áûë ïîñëåäíèé ôðàêòàë
   shift=iBarShift(Symbol(),Period(),timeFr1); 
  // Ñðàâíåíèå òåêóùåãî çíà÷åíèÿ ôðàêòàëà ñ òåì, êîòîðûé áûë ðàíåå


  // Îáðàçîâàëñÿ íîâûé ôðàêòàë
  if (timeFr1new!=timeFr1)
    {
     flagFrNew=true;
     if (shift>numBar) numBar=shift;
     afr[5]=0;
    }
  // Ôðàêòàë íà ìàêñèìóìå ñäâèíóëñÿ íà äðóãîé áàð
  if (hFr1>0 && zz[shift]==0.0)
    {
     flagFrNew=true;
     if (shift>numBar) numBar=shift;
     afr[5]=0;
    }
  // Ôðàêòàë íà ìèíèìóìå ñäâèíóëñÿ íà äðóãîé áàð
  if (lFr1>0 && zz[shift]==0.0)
    {
     flagFrNew=true;
     if (shift>numBar) numBar=shift;
     afr[5]=0;
    }


//-----------3 Ñìåñòèëñÿ ìèíèìóì èëè ìàêñèìóì, íî îñòàëñÿ íà òîì æå áàðå. Íà÷àëî.

//============= 1 ñìåñòèëñÿ ìàêñèìóì. Íà÷àëî.
if (hFr1-High[shift]!=0 && hFr1>0)
  {

   numLowPrim=0; numLowLast=0;
   numHighPrim=shift; numHighLast=0;

   LowPrim=0.0; LowLast=0.0;
   HighPrim=High[shift]; HighLast=0.0;
   
   flagHigh=false;
   Angle=-100;

   for (k=shift+1; k<Bars; k++)
     {

      if (ExtMapBuffer[k]>0.0 && LowPrim==0.0 && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}
      if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]<LowPrim && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}
      if (ExtMapBuffer2[k]>0.0  && ExtMapBuffer2[k]==zz[k])
        {
         if (HighLast>0) 
           {
            if (flagHigh)
              {
               if (ExtMapBuffer2[k]>HighLast) {HighLast=High[k]; numHighLast=k;}
              }
            else
              {
               if (ExtMapBuffer2[k]>HighPrim) flagHigh=true;
               HighLast=High[k];
               numHighLast=k;
              }
           }
         else {numHighLast=k; HighLast=High[k];}
         HL=High[numHighLast]-Low[numLowPrim];
         kj=(HighPrim-HighLast)*10000/(numHighLast-numHighPrim);
         if (HL>0 && (Angle>kj || Angle==-100))  // Ïðîâåðêà óãëà íàêëîíà ëèíèè
           {
            Angle=kj;
// Ñîçäàíèå ëèíèè
            HLp=High[numHighPrim]-Low[numLowPrim];
            k1=MathCeil((shift+numHighLast)/2);
            kj=HLp/HL;
// Ïîèñê ñòàðîé ñîåäèíèòåëüíîé ëèíèè                 
            numOb=ObjectFind("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);
            if (numOb>-1)
              {
               if (kj>0.21 && kj<=5)
                 {
                  // Ïåðåìåùåíèå îáúåêòîâ
                  ObjectMove("ph" + Time[numHighPrim] + "_" + Time[numHighLast],0,Time[numHighPrim],High[numHighPrim]);
                  ObjectMove("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));

                  // Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìàêñèìóìàìè
                  kk=kj;
                  k2=1;

                  if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
                  if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

                  if (k2<0)
                    // ïðîöåíò âîññòàíîâëåíèÿ ÷èñëî Ïåñàâåíòî
                    if (ExtHidden!=4 && ExtHidden>0)
                      {
                       if (kk==0.886)
                         ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial", ExtGartley866);
                       else
                         ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial",ExtPesavento);
                      }
                    else
                    // ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî)
                      if (ExtHidden==1 || ExtHidden==4)
                        ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
                 }
               else
                 {
                  ObjectDelete("ph" + Time[numHighPrim] + "_" + Time[numHighLast]); 
                  ObjectDelete("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast]);
                 }
              }
            else
              {
//******* Ïðîðèñîâêà íîâîé ëèíèè, åñëè îíà ïîÿâèëàñü.
               if (kj>0.21 && kj<=5)
                 {
                  // Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìàêñèìóìàìè
                  kk=kj;
                  k2=1;

                  if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
                  if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

                  if (k2<0)
                    // ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
                    {
                     if (ExtHidden!=4 && ExtHidden>0)                  
                       {
                        ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));
                        if (kk==0.886) // Gartley
                          ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial", ExtGartley866);
                        else
                          ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial",ExtPesavento);
                       }
                    }
                  else
                    // ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
                    {
                     if (ExtHidden==1 || ExtHidden==4)
                       {
                        ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));
                        ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
                       }
                    }
                  if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))
                    {
                     ObjectCreate("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TREND,0,Time[numHighPrim],High[numHighPrim],Time[numHighLast],High[numHighLast]);
                     ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_RAY,false);
                     ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_STYLE,STYLE_DOT);
                     ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_COLOR,ExtLine);
                    }
                 }
//*******
               }
             }
        }
     }
     hFr1=High[shift];
     timeFr1=Time[shift];
   }
//============= 1 ñìåñòèëñÿ ìàêñèìóì. Êîíåö.
//
//============= 1 ñìåñòèëñÿ ìèíèìóì. Íà÷àëî.
if (lFr1-Low[shift]!=0 && lFr1>0)
  {

   numLowPrim=0; numLowLast=0;
   numHighPrim=shift; numHighLast=0;

   LowPrim=Low[shift]; LowLast=0.0;
   HighPrim=0.0; HighLast=0.0;
   
   flagLow=false;
   Angle=-100;
   for (k=shift+1; k<Bars; k++)
     {
      if (ExtMapBuffer2[k]>HighPrim) {HighPrim=High[k]; numHighPrim=k;}
      if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]==zz[k]) 
        {
         if (LowLast>0) 
           {
            if (flagLow)
              {
               if (ExtMapBuffer[k]<LowLast) {LowLast=Low[k]; numLowLast=k;}
              }
            else
              {
               if (ExtMapBuffer[k]<LowPrim) flagLow=true;
               LowLast=Low[k];
               numLowLast=k;
              }
           }
         else {numLowLast=k; LowLast=Low[k];}
         HL=High[numHighPrim]-Low[numLowLast];
         kj=(LowPrim-LowLast)*1000/(numLowLast-numLowPrim);
         if (HL>0 && (Angle<kj || Angle==-100))  // Ïðîâåðêà óãëà íàêëîíà ëèíèè
           {
            Angle=kj;

            HLp=High[numHighPrim]-Low[numLowPrim];
            k1=MathCeil((numLowPrim+numLowLast)/2);
            kj=HLp/HL;
// Ïîèñê ñòàðîé ñîåäèíèòåëüíîé ëèíèè                 
            numOb=ObjectFind("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);
            if (numOb>-1)
              {
               if (kj>0.21 && kj<=5)
                 {
                  // Ïåðåìåùåíèå îáúåêòîâ
                  ObjectMove("pl" + Time[numLowPrim] + "_" + Time[numLowLast],0,Time[numLowPrim],Low[numLowPrim]);
                  ObjectMove("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));

                  // Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìèíèìóìàìè
                  kk=kj;
                  k2=1;

                  if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
                  if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

                  if (k2<0)
                  // ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
                    {
                     if (ExtHidden!=4 && ExtHidden>0)                  
                       {
                        if (kk==0.886) // Gartley
                          ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial", ExtGartley866);
                        else
                          ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial",ExtPesavento);
                       }
                    }
                  else 
                    // ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
                    if (ExtHidden==1 || ExtHidden==4)
                      ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
                 }           
               else
                 {
                  ObjectDelete("pl" + Time[numLowPrim] + "_" + Time[numLowLast]); 
                  ObjectDelete("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast]);
                 }
              }  
            else
              {
//******* Ïðîðèñîâêà íîâîé ëèíèè, åñëè îíà ïîÿâèëàñü.
               if (kj>0.21 && kj<=5)
                 {
                  // Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìèíèìóìàìè
                  kk=kj;
                  k2=1;

                  if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
                  if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

                  if (k2<0)
                    // ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
                    {
                     if (ExtHidden!=4 && ExtHidden>0)                  
                       {
                        ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));
                        if (kk==0.886) // Gartley
                          ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial", ExtGartley866);
                        else
                          ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial",ExtPesavento);
                       }
                    }
                  else 
                    // ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
                    { 
                     if (ExtHidden==1 || ExtHidden==4)
                       ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));
                       ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
                    }
                    if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))
                      {
                       ObjectCreate("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TREND,0,Time[numLowPrim],Low[numLowPrim],Time[numLowLast],Low[numLowLast]);
                       ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_RAY,false);
                       ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_STYLE,STYLE_DOT);
                       ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_COLOR,ExtLine);
                      }
                 }           
//*******
                }
             }
        }
     }
     lFr1=Low[shift];
     timeFr1=Time[shift];
   }
//============= 1 ñìåñòèëñÿ ìèíèìóì. Êîíåö.
//-----------3 Ñìåñòèëñÿ ìèíèìóì èëè ìàêñèìóì, íî îñòàëñÿ íà òîì æå áàðå. Êîíåö.


   // Ïîèñê èñ÷åçíóâøèõ ôðàêòàëîâ è óäàëåíèå ëèíèé, èñõîäÿùèõ îò ýòèõ ôðàêòàëîâ. Ïåðåçàïèñü ìàòðèöû.
   for (k=0; k<5; k++)
     {
      
      if (afrl[k]>0)
        {
         // Ïîèñê áàðà, íà êîòîðîì áûë ýòîò ôðàêòàë
         shift=iBarShift(Symbol(),Period(),afr[k]); 
         if (zz[shift]==0)
           {
            if (shift>numBar) numBar=shift;

            afr[5]=0;
            numLowPrim=shift; numLowLast=0;LowLast=10000000;
            for (k1=shift+1; k1<Bars; k1++)
              {
               if (ExtMapBuffer[k1]<LowLast && ExtMapBuffer[k1]>0) 
                 {
                  LowLast=Low[k1]; numLowLast=k1;
                  numOb=ObjectFind("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);
                  if (numOb>-1)
                    {
                     ObjectDelete("pl" + Time[numLowPrim] + "_" + Time[numLowLast]); 
                     ObjectDelete("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast]);
                    }
                 }
              }
           }
        }

      if (afrh[k]>0)
        {
         // Ïîèñê áàðà, íà êîòîðîì áûë ýòîò ôðàêòàë
         shift=iBarShift(Symbol(),Period(),afr[k]); 
         if (zz[shift]==0)
           {
            if (shift>numBar) numBar=shift;

            afr[5]=0;
            numHighPrim=shift; numHighLast=0;HighLast=0.0;
            for (k1=shift+1; k1<Bars; k1++)
              {
               if (ExtMapBuffer2[k1]>HighLast) 
                 {
                  HighLast=High[k1]; numHighLast=k1;
                  numOb=ObjectFind("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);
                  if (numOb>-1)
                    {
                     ObjectDelete("ph" + Time[numHighPrim] + "_" + Time[numHighLast]); 
                     ObjectDelete("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast]);
                    }
                 }
              }

           }
        }

     }

   // Ïåðåçàïèñü ìàòðèöû
   if (afr[5]<1)
     if (ExtFibo) ObjectDelete("Fibo");
     {
      k=0;
      for (shift=0; shift<Bars && k<5; shift++)
        {
         if (zz[shift]>0)
           {
            afr[k]=Time[shift];
            if (zz[shift]==ExtMapBuffer[shift]) {afrl[k]=Low[shift]; afrh[k]=0.0;}
            if (zz[shift]==ExtMapBuffer2[shift]) {afrh[k]=High[shift]; afrl[k]=0.0;}
            k++;
           }
        }
      afr[k]=1;
      if (ExtFibo)
        {
         if (afrl[1]>0) ObjectCreate("fibo",OBJ_FIBO,0,afr[2],afrh[2],afr[1],afrl[1]);
         else ObjectCreate("fibo",OBJ_FIBO,0,afr[2],afrl[2],afr[1],afrh[1]);
        }
     }

// Ïðîâåðêà íà ðàçðåøåíèå âûâîäà îñíàñòêè. Êîíåö.
//
  }
//


// Êîððåêöèÿ. Êîíåö.
  }


// end
}

Comments