mv-i-TAACH_1_0

Author: ������ ��������� �. MaxV42
Price Data Components
Series array that contains open time of each bar
Indicators Used
Fractals
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
mv-i-TAACH_1_0
//+---------------------------------------------------------------------------+
//|                                                        mv-i-TAACH_1_0.mq4 |
//|                                                Ìàêñèì Âàñèëåíêî Â. MaxV42 |
//|                                                http://                    |
//| Èíäèêàòîð ðàáîòàåò ïî ñòðàòåãèè "ÒÀÀ×".                                   |
//| Âåðñèÿ 1.0 îò 20.12.2009:                                                 |
//|                                                                           |
//+---------------------------------------------------------------------------+
#property copyright "Ìàêñèì Âàñèëåíêî Â. MaxV42"
#property link      "http://"
//+---------------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_width3 1
#property indicator_width4 1
//+---------------------------------------------------------------------------+
extern string Ind_Coment1= "--- Ïàðàìåòðû ìëàäøåãî òàéìôðåéìà ---";
extern bool  ShowFractals_LowerTF      = false;    // Âêë/âûêë çíà÷êîâ ôðàêòàëîâ
extern bool  OnAlert_Pitchfork_LowerTF = false;    // Âêë/âûêë ñèãíàëà ïðè âûÿâëåíèè íîâîãî êàíàëà
extern int   nPitchfork_Upper_LowerTF  =     2;    // Êîëè÷åñòâî âûâîäèìûõ âîñõîäÿùèõ "Âèë Ýíäðþñà"
extern int   nPitchfork_Lower_LowerTF  =     2;    // Êîëè÷åñòâî âûâîäèìûõ íèñõîäÿùèõ "Âèë Ýíäðþñà"
extern bool  ShowPitchfork_LowerTF     =  true;    // Âêë/âûêë "Âèë Ýíäðþñà" ìëàäøåãî òàéìôðåéìà
extern string Ind_Coment2= "--- Ïàðàìåòðû ñòàðøåãî òàéìôðåéìà ---";
extern int   TF_Upper                  =  1440;    // Ñòàðøèé òàéìôðåéì
extern bool  ShowFractals_UpperTF      = false;    // Âêë/âûêë çíà÷êîâ ôðàêòàëîâ
extern bool  OnAlert_Pitchfork_UpperTF = false;    // Âêë/âûêë ñèãíàëà ïðè âûÿâëåíèè íîâîãî êàíàëà
extern int   nPitchfork_Upper_UpperTF  =     1;    // Êîëè÷åñòâî âûâîäèìûõ âîñõîäÿùèõ "Âèë Ýíäðþñà"
extern int   nPitchfork_Lower_UpperTF  =     1;    // Êîëè÷åñòâî âûâîäèìûõ íèñõîäÿùèõ "Âèë Ýíäðþñà"
extern bool  ShowPitchfork_UpperTF     =  true;    // Âêë/âûêë "Âèë Ýíäðþñà" ñòàðøåãî òàéìôðåéìà
//+---------------------------------------------------------------------------+
// ãëîáàëüíûå ïåðåìåííûå
int          nBars_LowerTF             =     0,    // êîë-âî áàðîâ ìëàäøåãî òàôìôðåéìà
             nBars_UpperTF             =     0;    // êîë-âî áàðîâ ñòàðøåãî òàôìôðåéìà
int          QntPitchfork_Upper_LowerTF=     0;    // Êîëè÷åñòâî óæå îòðèñîâàííûõ âîñõîäÿùèõ "Âèë Ýíäðþñà"
int          QntPitchfork_Lower_LowerTF=     0;    // Êîëè÷åñòâî óæå îòðèñîâàííûõ íèñõîäÿùèõ "Âèë Ýíäðþñà"
int          QntPitchfork_Upper_UpperTF=     0;    // Êîëè÷åñòâî óæå îòðèñîâàííûõ âîñõîäÿùèõ "Âèë Ýíäðþñà"
int          QntPitchfork_Lower_UpperTF=     0;    // Êîëè÷åñòâî óæå îòðèñîâàííûõ íèñõîäÿùèõ "Âèë Ýíäðþñà"

//----- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+---------------------------------------------------------------------------+
void init()  {        // Custom indicator initialization function
int    Qnt=ObjectsTotal();
  // ----- Indicators Properties
  SetIndexStyle(0,DRAW_ARROW);
  SetIndexArrow(0,119);
  SetIndexBuffer(0,ExtMapBuffer1);
  SetIndexEmptyValue(0,0.0);
  SetIndexStyle(1,DRAW_ARROW);
  SetIndexArrow(1,119);
  SetIndexBuffer(1,ExtMapBuffer2);
  SetIndexEmptyValue(1,0.0);
  SetIndexStyle(2,DRAW_ARROW);
  SetIndexArrow(2,117);
  SetIndexBuffer(2,ExtMapBuffer3);
  SetIndexEmptyValue(2,0.0);
  SetIndexStyle(3,DRAW_ARROW);
  SetIndexArrow(3,117);
  SetIndexBuffer(3,ExtMapBuffer4);
  SetIndexEmptyValue(3,0.0);


  // ----- Name for DataWindow and indicator subwindow label
  IndicatorShortName("mv-i-TAACH_1_0");
  SetIndexLabel(0,"FractalsUp.LowerTF");
  SetIndexLabel(1,"FractalsDown.LowerTF");
  SetIndexLabel(2,"FractalsUp.UpperTF");
  SetIndexLabel(3,"FractalsDown.UpperTF");

  return;
}

//+---------------------------------------------------------------------------+
void deinit()   {     // Custom indicator deinitialization function
int    Qnt=ObjectsTotal();
  // ----- Óäàëÿåì òðåíäîâûå ëèíèè
  for (int i=0; i<Qnt; i++)   {  // Öèêë ïî îáúåêòàì
    if(StringFind(ObjectName(i),"Pitchfork_Upper",0)>=0) {
      ObjectDelete(ObjectName(i));     // íàïðàâëåííûå ââåðõ
      i--; continue;
    }
    if(StringFind(ObjectName(i),"Pitchfork_Lower",0)>=0) {
      ObjectDelete(ObjectName(i));     // íàïðàâëåííûå âíèç
      i--; continue;
    }
    if(i>=ObjectsTotal()) break;
  }
 return;
}

//+---------------------------------------------------------------------------+
void start() {        // Custom indicator iteration function
int    counted_bars=IndicatorCounted();
int    limit;
int    Spred=(int)MarketInfo(Symbol(),MODE_SPREAD);
double Fractals_Upper=0,Fractals_Lower=0;
  // ----- Ïðîâåðêà âíåøíèõ ïàðàìåòðîâ èíäèêàòîðà
  if(!CheckParameters()) return;
  // ----- íîâûé áàð íå ïîÿâèëñÿ
  if(!isNewBar_LowerTF()) return;
  // ----- Ïîñëåäíèé ïîñ÷èòàííûé áàð áóäåò ïåðåñ÷èòàí
  if (counted_bars>0) counted_bars--;
  limit=Bars-counted_bars; if(limit>500) limit=500;
  // ----- Îñíîâíîé öèêë
  for (int i=limit; i>=0; i--)   {
    //--------------------------------------------------------- 1 --
    Fractals_Upper=iFractals(NULL,0,MODE_UPPER,i);
    Fractals_Lower=iFractals(NULL,0,MODE_LOWER,i);
    if(Fractals_Upper>0)  {
      // ----- çäåñü íóæíî çàïóñòèòü ôóíêöèþ îòðèñîâêè íèñõîäÿùèõ "Âèë Ýíäðþñà"
      if(ShowPitchfork_LowerTF)  {
        if(DrawLowerPitchfork(i, 0))  {
          // ----- çäåñü àëåðò
          if(OnAlert_Pitchfork_LowerTF && i==0)  {
            Alert(Symbol(),Period()," Íèñõîäÿùèå Âèëû Ýíäðþñà! ",TimeToStr(Time[i],TIME_DATE|TIME_SECONDS));
          }
        }
      }
      // ----- îòîáðàæàåì âðàêòàëû ìëàäøåãî òàéìôðåéìà
      if(ShowFractals_LowerTF)  {
        ExtMapBuffer1[i]=Fractals_Upper+Spred*Point;
      }
    }
    if(Fractals_Lower>0)  {
      // ----- çäåñü íóæíî çàïóñòèòü ôóíêöèþ îòðèñîâêè âîñõîäÿùèõ "Âèë Ýíäðþñà"
      if(ShowPitchfork_LowerTF)  {
        if(DrawUpperPitchfork(i, 0))  {
          // ----- çäåñü àëåðò
          if(OnAlert_Pitchfork_LowerTF && i==0)  {
            Alert(Symbol(),Period()," Âîñõîäÿùèå Âèëû Ýíäðþñà! ",TimeToStr(Time[i],TIME_DATE|TIME_SECONDS));
          }
        }
      }
      // ----- îòîáðàæàåì âðàêòàëû ìëàäøåãî òàéìôðåéìà
      if(ShowFractals_LowerTF)  {
        ExtMapBuffer2[i]=Fractals_Lower-Spred*Point;
      }
    }
    //--------------------------------------------------------- 2 --
    Fractals_Upper=0;Fractals_Lower=0;
    //--------------------------------------------------------- 3 --
    // ----- ïîÿâèëñÿ íîâûé áàð ñòàðøåãî òàéìôðåéìà
    if(isNewBar_UpperTF(Time[i]))  {
      Fractals_Upper=iFractals(NULL,TF_Upper,MODE_UPPER,nBars_UpperTF);
      Fractals_Lower=iFractals(NULL,TF_Upper,MODE_LOWER,nBars_UpperTF);
      if(Fractals_Upper>0)  {
        // ----- çäåñü íóæíî çàïóñòèòü ôóíêöèþ îòðèñîâêè íèñõîäÿùèõ "Âèë Ýíäðþñà"
        if(ShowPitchfork_UpperTF)  {
          if(DrawLowerPitchfork(nBars_UpperTF, TF_Upper))  {
            // ----- çäåñü àëåðò
            if(OnAlert_Pitchfork_UpperTF && nBars_UpperTF==0)  {
              Alert(Symbol(),Period()," Íèñõîäÿùèå Âèëû Ýíäðþñà! ",TimeToStr(Time[i],TIME_DATE|TIME_SECONDS));
            }
          }
        }
        // ----- îòîáðàæàåì âðàêòàëû ñòàðøåãî òàéìôðåéìà
        if(ShowFractals_UpperTF)  {
          ExtMapBuffer3[iBarShift(NULL,0,iTime(NULL,TF_Upper,nBars_UpperTF),false)]=Fractals_Upper+Spred*Point;
        }
      }
      if(Fractals_Lower>0)  {
        // ----- çäåñü íóæíî çàïóñòèòü ôóíêöèþ îòðèñîâêè âîñõîäÿùèõ "Âèë Ýíäðþñà"
        if(ShowPitchfork_UpperTF)  {
          if(DrawUpperPitchfork(nBars_UpperTF, TF_Upper))  {
            // ----- çäåñü àëåðò
            if(OnAlert_Pitchfork_UpperTF && nBars_UpperTF==0)  {
              Alert(Symbol(),Period()," Âîñõîäÿùèå Âèëû Ýíäðþñà! ",TimeToStr(Time[i],TIME_DATE|TIME_SECONDS));
            }
          }
        }
        // ----- îòîáðàæàåì âðàêòàëû ñòàðøåãî òàéìôðåéìà
        if(ShowFractals_UpperTF)  {
          ExtMapBuffer4[iBarShift(NULL,0,iTime(NULL,TF_Upper,nBars_UpperTF),false)]=Fractals_Lower-Spred*Point;
        }
      }
    }


  }

  return;
}

//+---------------------------------------------------------------------------+
bool isNewBar_LowerTF() {  // Ôóíêöèÿ âîçâðàùàåò true, åñëè ïîÿâèòüñÿ íîâûé áàð íà ìëàäøåì òéàìôðåéìå
  if(nBars_LowerTF!=Bars) {
    nBars_LowerTF=Bars; return(true);
  }
  return(false);
}

//+---------------------------------------------------------------------------+
bool isNewBar_UpperTF(datetime DateTime_) {  // Ôóíêöèÿ âîçâðàùàåò true, åñëè ïîÿâèòüñÿ íîâûé áàð íà ñòàðøåì òéàìôðåéìå
  if(nBars_UpperTF!=iBarShift(NULL, TF_Upper, DateTime_, false)) {
    nBars_UpperTF=iBarShift(NULL, TF_Upper, DateTime_, false); return(true);
  }
  return(false);
}

//+---------------------------------------------------------------------------+
bool DrawUpperPitchfork(int nBar, int TF=0)  {  // Ôóíêöèÿ îïðåäåëÿåò è ðèñóåò âîñõîäÿùèå "Âèëû Ýíäðþñà"
double Fractals_Upper=0,Fractals_Lower=0;
string mFractals[3][3];
int i,j=0;
  //--------------------------------------------------------- 1 --
  // ----- îïðåäåëÿåì îïîðíûå òî÷êè
  for (i=nBar; i<Bars; i++)   {  // Öèêë ïî áàðàì
    Fractals_Upper=iFractals(NULL,TF,MODE_UPPER,i);
    Fractals_Lower=iFractals(NULL,TF,MODE_LOWER,i);
    // ----- ÂÀÆÍÎ! íà÷èíàåì ïðîâåðêó ñ íèæíåãî ôðàêòàëà 
    if(j<3 && Fractals_Lower>0)  {
      mFractals[j][0]=TimeToStr(iTime(NULL,TF,i),TIME_DATE|TIME_MINUTES);
      mFractals[j][1]=DoubleToStr(Fractals_Lower,Digits);
      mFractals[j][2]=(string)-1;
      j++;
    }
    if(j<3 && Fractals_Upper>0)  {
      mFractals[j][0]=TimeToStr(iTime(NULL,TF,i),TIME_DATE|TIME_MINUTES);
      mFractals[j][1]=DoubleToStr(Fractals_Upper,Digits);
      mFractals[j][2]=(string)1;
      j++;
    }
    if(j>3) break;
  }
  //--------------------------------------------------------- 2 --
  // ------ ïðîâåðÿåì ïîñëåäîâòåëüíîñòü îïîðíûõ òî÷åê: MODE_LOWER->MODE_UPPER->MODE_LOWER
  if(StrToDouble(mFractals[0][2])==-1 && StrToDouble(mFractals[1][2])==1 && StrToDouble(mFractals[2][2])==-1)  {
    //--------------------------------------------------------- 1 --
    // ----- ìëàäøèé òàéìôðåéì
    if(TF==0)  {
      if(QntPitchfork_Upper_LowerTF<nPitchfork_Upper_LowerTF)   {  // êîë-âî âèë íå ïðåâûøåíî, ðèñóåì íîâûå âèëû
        ObjectCreate("Pitchfork_Upper_LowerTF"+(string)QntPitchfork_Upper_LowerTF, OBJ_PITCHFORK, 0,
        StrToTime(mFractals[2][0]), StrToDouble(mFractals[2][1]),
        StrToTime(mFractals[1][0]), StrToDouble(mFractals[1][1]),
        StrToTime(mFractals[0][0]), StrToDouble(mFractals[0][1]));
        ObjectSet("Pitchfork_Upper_LowerTF"+(string)QntPitchfork_Upper_LowerTF,OBJPROP_COLOR,Red); 
        ObjectSet("Pitchfork_Upper_LowerTF"+(string)QntPitchfork_Upper_LowerTF,OBJPROP_STYLE,STYLE_DASH); 
        QntPitchfork_Upper_LowerTF++;
      }
      if(QntPitchfork_Upper_LowerTF>=nPitchfork_Upper_LowerTF)  {  // êîë-âî âèë ïðåâûøåíî, èçìåíÿåì ïàðàìåòðû ïåðâûõ âèë
        for (i=0; i<=QntPitchfork_Upper_LowerTF-2; i++)   {
          ObjectSet("Pitchfork_Upper_LowerTF"+(string)i,OBJPROP_TIME1,ObjectGet("Pitchfork_Upper_LowerTF"+(string)(i+1),OBJPROP_TIME1));
          ObjectSet("Pitchfork_Upper_LowerTF"+(string)i,OBJPROP_PRICE1,ObjectGet("Pitchfork_Upper_LowerTF"+(string)(i+1),OBJPROP_PRICE1));
          ObjectSet("Pitchfork_Upper_LowerTF"+(string)i,OBJPROP_TIME2,ObjectGet("Pitchfork_Upper_LowerTF"+(string)(i+1),OBJPROP_TIME2));
          ObjectSet("Pitchfork_Upper_LowerTF"+(string)i,OBJPROP_PRICE2,ObjectGet("Pitchfork_Upper_LowerTF"+(string)(i+1),OBJPROP_PRICE2));
          ObjectSet("Pitchfork_Upper_LowerTF"+(string)i,OBJPROP_TIME3,ObjectGet("Pitchfork_Upper_LowerTF"+(string)(i+1),OBJPROP_TIME3));
          ObjectSet("Pitchfork_Upper_LowerTF"+(string)i,OBJPROP_PRICE3,ObjectGet("Pitchfork_Upper_LowerTF"+(string)(i+1),OBJPROP_PRICE3));
        }
        ObjectSet("Pitchfork_Upper_LowerTF"+(string)(QntPitchfork_Upper_LowerTF-1),OBJPROP_TIME1,StrToTime(mFractals[2][0]));
        ObjectSet("Pitchfork_Upper_LowerTF"+(string)(QntPitchfork_Upper_LowerTF-1),OBJPROP_PRICE1,StrToDouble(mFractals[2][1]));
        ObjectSet("Pitchfork_Upper_LowerTF"+(string)(QntPitchfork_Upper_LowerTF-1),OBJPROP_TIME2,StrToTime(mFractals[1][0]));
        ObjectSet("Pitchfork_Upper_LowerTF"+(string)(QntPitchfork_Upper_LowerTF-1),OBJPROP_PRICE2,StrToDouble(mFractals[1][1]));
        ObjectSet("Pitchfork_Upper_LowerTF"+(string)(QntPitchfork_Upper_LowerTF-1),OBJPROP_TIME3,StrToTime(mFractals[0][0]));
        ObjectSet("Pitchfork_Upper_LowerTF"+(string)(QntPitchfork_Upper_LowerTF-1),OBJPROP_PRICE3,StrToDouble(mFractals[0][1]));
        ObjectSet("Pitchfork_Upper_LowerTF"+(string)(QntPitchfork_Upper_LowerTF-1),OBJPROP_STYLE,STYLE_SOLID); 
      }
    }
    //--------------------------------------------------------- 2 --
    // ----- ñòàðøèé òàéìôðåéì
    if(TF!=0)  {
      if(QntPitchfork_Upper_UpperTF<nPitchfork_Upper_UpperTF)   {  // êîë-âî âèë íå ïðåâûøåíî, ðèñóåì íîâûå âèëû
        ObjectCreate("Pitchfork_Upper_UpperTF"+(string)QntPitchfork_Upper_UpperTF, OBJ_PITCHFORK, 0,
        StrToTime(mFractals[2][0]), StrToDouble(mFractals[2][1]),
        StrToTime(mFractals[1][0]), StrToDouble(mFractals[1][1]),
        StrToTime(mFractals[0][0]), StrToDouble(mFractals[0][1]));
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)QntPitchfork_Upper_UpperTF,OBJPROP_COLOR,Red); 
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)QntPitchfork_Upper_UpperTF,OBJPROP_STYLE,STYLE_DASH); 
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)QntPitchfork_Upper_UpperTF,OBJPROP_WIDTH,2); 
        QntPitchfork_Upper_UpperTF++;
      }
      if(QntPitchfork_Upper_UpperTF>=nPitchfork_Upper_UpperTF)  {  // êîë-âî âèë ïðåâûøåíî, èçìåíÿåì ïàðàìåòðû ïåðâûõ âèë
        for (i=0; i<=QntPitchfork_Upper_UpperTF-2; i++)   {
          ObjectSet("Pitchfork_Upper_UpperTF"+(string)i,OBJPROP_TIME1,ObjectGet("Pitchfork_Upper_UpperTF"+(string)(i+1),OBJPROP_TIME1));
          ObjectSet("Pitchfork_Upper_UpperTF"+(string)i,OBJPROP_PRICE1,ObjectGet("Pitchfork_Upper_UpperTF"+(string)(i+1),OBJPROP_PRICE1));
          ObjectSet("Pitchfork_Upper_UpperTF"+(string)i,OBJPROP_TIME2,ObjectGet("Pitchfork_Upper_UpperTF"+(string)(i+1),OBJPROP_TIME2));
          ObjectSet("Pitchfork_Upper_UpperTF"+(string)i,OBJPROP_PRICE2,ObjectGet("Pitchfork_Upper_UpperTF"+(string)(i+1),OBJPROP_PRICE2));
          ObjectSet("Pitchfork_Upper_UpperTF"+(string)i,OBJPROP_TIME3,ObjectGet("Pitchfork_Upper_UpperTF"+(string)(i+1),OBJPROP_TIME3));
          ObjectSet("Pitchfork_Upper_UpperTF"+(string)i,OBJPROP_PRICE3,ObjectGet("Pitchfork_Upper_UpperTF"+(string)(i+1),OBJPROP_PRICE3));
        }
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)(QntPitchfork_Upper_UpperTF-1),OBJPROP_TIME1,StrToTime(mFractals[2][0]));
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)(QntPitchfork_Upper_UpperTF-1),OBJPROP_PRICE1,StrToDouble(mFractals[2][1]));
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)(QntPitchfork_Upper_UpperTF-1),OBJPROP_TIME2,StrToTime(mFractals[1][0]));
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)(QntPitchfork_Upper_UpperTF-1),OBJPROP_PRICE2,StrToDouble(mFractals[1][1]));
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)(QntPitchfork_Upper_UpperTF-1),OBJPROP_TIME3,StrToTime(mFractals[0][0]));
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)(QntPitchfork_Upper_UpperTF-1),OBJPROP_PRICE3,StrToDouble(mFractals[0][1]));
        ObjectSet("Pitchfork_Upper_UpperTF"+(string)(QntPitchfork_Upper_UpperTF-1),OBJPROP_STYLE,STYLE_SOLID); 
      }
    }
  return(true);
  }
  return(false);
}

//+---------------------------------------------------------------------------+
bool DrawLowerPitchfork(int nBar, int TF=0)  {  // Ôóíêöèÿ îïðåäåëÿåò è ðèñóåò íèñõîäÿùèå "Âèëû Ýíäðþñà"
double Fractals_Upper=0,Fractals_Lower=0;
string mFractals[3][3];
int i,j=0;
  //--------------------------------------------------------- 1 --
  // ----- îïðåäåëÿåì îïîðíûå òî÷êè
  for (i=nBar; i<Bars; i++)   {  // Öèêë ïî áàðàì
    Fractals_Upper=iFractals(NULL,TF,MODE_UPPER,i);
    Fractals_Lower=iFractals(NULL,TF,MODE_LOWER,i);
    // ----- ÂÀÆÍÎ! íà÷èíàåì ïðîâåðêó ñ âåðõíåãî ôðàêòàëà 
    if(j<3 && Fractals_Upper>0)  {
      mFractals[j][0]=TimeToStr(iTime(NULL,TF,i),TIME_DATE|TIME_MINUTES);
      mFractals[j][1]=DoubleToStr(Fractals_Upper,Digits);
      mFractals[j][2]=(string)1;
      j++;
    }
    if(j<3 && Fractals_Lower>0)  {
      mFractals[j][0]=TimeToStr(iTime(NULL,TF,i),TIME_DATE|TIME_MINUTES);
      mFractals[j][1]=DoubleToStr(Fractals_Lower,Digits);
      mFractals[j][2]=(string)-1;
      j++;
    }
    if(j>3) break;
  }
  //--------------------------------------------------------- 2 --
  // ------ ïðîâåðÿåì ïîñëåäîâòåëüíîñòü îïîðíûõ òî÷åê: MODE_UPPER->MODE_LOWER->MODE_UPPER
  if(StrToDouble(mFractals[0][2])==1 && StrToDouble(mFractals[1][2])==-1 && StrToDouble(mFractals[2][2])==1)  {
    //--------------------------------------------------------- 1 --
    // ----- ìëàäøèé òàéìôðåéì
    if(TF==0)  {
      if(QntPitchfork_Lower_LowerTF<nPitchfork_Lower_LowerTF)   {  // êîë-âî âèë íå ïðåâûøåíî, ðèñóåì íîâûå âèëû
        ObjectCreate("Pitchfork_Lower_LowerTF"+(string)QntPitchfork_Lower_LowerTF, OBJ_PITCHFORK, 0,
        StrToTime(mFractals[2][0]), StrToDouble(mFractals[2][1]),
        StrToTime(mFractals[1][0]), StrToDouble(mFractals[1][1]),
        StrToTime(mFractals[0][0]), StrToDouble(mFractals[0][1]));
        ObjectSet("Pitchfork_Lower_LowerTF"+(string)QntPitchfork_Lower_LowerTF,OBJPROP_COLOR,Blue); 
        ObjectSet("Pitchfork_Lower_LowerTF"+(string)QntPitchfork_Lower_LowerTF,OBJPROP_STYLE,STYLE_DASH); 
        QntPitchfork_Lower_LowerTF++;
      }
      if(QntPitchfork_Lower_LowerTF>=nPitchfork_Lower_LowerTF)  {  // êîë-âî âèë ïðåâûøåíî, èçìåíÿåì ïàðàìåòðû ïåðâûõ âèë
        for (i=0; i<=QntPitchfork_Lower_LowerTF-2; i++)   {
          ObjectSet("Pitchfork_Lower_LowerTF"+(string)i,OBJPROP_TIME1,ObjectGet("Pitchfork_Lower_LowerTF"+(string)(i+1),OBJPROP_TIME1));
          ObjectSet("Pitchfork_Lower_LowerTF"+(string)i,OBJPROP_PRICE1,ObjectGet("Pitchfork_Lower_LowerTF"+(string)(i+1),OBJPROP_PRICE1));
          ObjectSet("Pitchfork_Lower_LowerTF"+(string)i,OBJPROP_TIME2,ObjectGet("Pitchfork_Lower_LowerTF"+(string)(i+1),OBJPROP_TIME2));
          ObjectSet("Pitchfork_Lower_LowerTF"+(string)i,OBJPROP_PRICE2,ObjectGet("Pitchfork_Lower_LowerTF"+(string)(i+1),OBJPROP_PRICE2));
          ObjectSet("Pitchfork_Lower_LowerTF"+(string)i,OBJPROP_TIME3,ObjectGet("Pitchfork_Lower_LowerTF"+(string)(i+1),OBJPROP_TIME3));
          ObjectSet("Pitchfork_Lower_LowerTF"+(string)i,OBJPROP_PRICE3,ObjectGet("Pitchfork_Lower_LowerTF"+(string)(i+1),OBJPROP_PRICE3));
        }
        ObjectSet("Pitchfork_Lower_LowerTF"+(string)(QntPitchfork_Lower_LowerTF-1),OBJPROP_TIME1,StrToTime(mFractals[2][0]));
        ObjectSet("Pitchfork_Lower_LowerTF"+(string)(QntPitchfork_Lower_LowerTF-1),OBJPROP_PRICE1,StrToDouble(mFractals[2][1]));
        ObjectSet("Pitchfork_Lower_LowerTF"+(string)(QntPitchfork_Lower_LowerTF-1),OBJPROP_TIME2,StrToTime(mFractals[1][0]));
        ObjectSet("Pitchfork_Lower_LowerTF"+(string)(QntPitchfork_Lower_LowerTF-1),OBJPROP_PRICE2,StrToDouble(mFractals[1][1]));
        ObjectSet("Pitchfork_Lower_LowerTF"+(string)(QntPitchfork_Lower_LowerTF-1),OBJPROP_TIME3,StrToTime(mFractals[0][0]));
        ObjectSet("Pitchfork_Lower_LowerTF"+(string)(QntPitchfork_Lower_LowerTF-1),OBJPROP_PRICE3,StrToDouble(mFractals[0][1]));
        ObjectSet("Pitchfork_Lower_LowerTF"+(string)(QntPitchfork_Lower_LowerTF-1),OBJPROP_STYLE,STYLE_SOLID); 
      }
    }
    //--------------------------------------------------------- 2 --
    // ----- ñòàðøèé òàéìôðåéì
    if(TF!=0)  {
      if(QntPitchfork_Lower_UpperTF<nPitchfork_Lower_UpperTF)   {  // êîë-âî âèë íå ïðåâûøåíî, ðèñóåì íîâûå âèëû
        ObjectCreate("Pitchfork_Lower_UpperTF"+(string)QntPitchfork_Lower_UpperTF, OBJ_PITCHFORK, 0,
        StrToTime(mFractals[2][0]), StrToDouble(mFractals[2][1]),
        StrToTime(mFractals[1][0]), StrToDouble(mFractals[1][1]),
        StrToTime(mFractals[0][0]), StrToDouble(mFractals[0][1]));
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)QntPitchfork_Lower_UpperTF,OBJPROP_COLOR,Blue); 
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)QntPitchfork_Lower_UpperTF,OBJPROP_STYLE,STYLE_DASH); 
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)QntPitchfork_Lower_UpperTF,OBJPROP_WIDTH,2); 
        QntPitchfork_Lower_UpperTF++;
      }
      if(QntPitchfork_Lower_UpperTF>=nPitchfork_Lower_UpperTF)  {  // êîë-âî âèë ïðåâûøåíî, èçìåíÿåì ïàðàìåòðû ïåðâûõ âèë
        for (i=0; i<=QntPitchfork_Lower_UpperTF-2; i++)   {
          ObjectSet("Pitchfork_Lower_UpperTF"+(string)i,OBJPROP_TIME1,ObjectGet("Pitchfork_Lower_UpperTF"+(string)(i+1),OBJPROP_TIME1));
          ObjectSet("Pitchfork_Lower_UpperTF"+(string)i,OBJPROP_PRICE1,ObjectGet("Pitchfork_Lower_UpperTF"+(string)(i+1),OBJPROP_PRICE1));
          ObjectSet("Pitchfork_Lower_UpperTF"+(string)i,OBJPROP_TIME2,ObjectGet("Pitchfork_Lower_UpperTF"+(string)(i+1),OBJPROP_TIME2));
          ObjectSet("Pitchfork_Lower_UpperTF"+(string)i,OBJPROP_PRICE2,ObjectGet("Pitchfork_Lower_UpperTF"+(string)(i+1),OBJPROP_PRICE2));
          ObjectSet("Pitchfork_Lower_UpperTF"+(string)i,OBJPROP_TIME3,ObjectGet("Pitchfork_Lower_UpperTF"+(string)(i+1),OBJPROP_TIME3));
          ObjectSet("Pitchfork_Lower_UpperTF"+(string)i,OBJPROP_PRICE3,ObjectGet("Pitchfork_Lower_UpperTF"+(string)(i+1),OBJPROP_PRICE3));
        }
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)(QntPitchfork_Lower_UpperTF-1),OBJPROP_TIME1,StrToTime(mFractals[2][0]));
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)(QntPitchfork_Lower_UpperTF-1),OBJPROP_PRICE1,StrToDouble(mFractals[2][1]));
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)(QntPitchfork_Lower_UpperTF-1),OBJPROP_TIME2,StrToTime(mFractals[1][0]));
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)(QntPitchfork_Lower_UpperTF-1),OBJPROP_PRICE2,StrToDouble(mFractals[1][1]));
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)(QntPitchfork_Lower_UpperTF-1),OBJPROP_TIME3,StrToTime(mFractals[0][0]));
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)(QntPitchfork_Lower_UpperTF-1),OBJPROP_PRICE3,StrToDouble(mFractals[0][1]));
        ObjectSet("Pitchfork_Lower_UpperTF"+(string)(QntPitchfork_Lower_UpperTF-1),OBJPROP_STYLE,STYLE_SOLID); 
      }
    }
  return(true);
  }
  return(false);
}

//+---------------------------------------------------------------------------+
bool CheckParameters()  {     // Ôóíêöèÿ ïðîâåðêè âíåøíèõ ïàðàìåòðîâ èíäèêàòîðà
string TextMessage;
  if(nPitchfork_Upper_LowerTF<1 || nPitchfork_Lower_LowerTF<1  ||
     nPitchfork_Upper_UpperTF<1 || nPitchfork_Lower_UpperTF<1  )  {
     TextMessage="Íåâåðíûå çíà÷åíèÿ âíåøíèõ ïàðàìåòðîâ èíäèêàòîðà!"+
                        "Êîëè÷åñòâî âèë íå ìîãåò áûòü <(ìåíüøå) 1";
    Alert(TextMessage);
    return(false);
  }
  if(TF_Upper<=Period())  {
    TextMessage="Íåâåðíûå çíà÷åíèÿ âíåøíèõ ïàðàìåòðîâ èíäèêàòîðà!"+
                        "Çíà÷åíèå ñòàðøåãî òàéìôðåéìà äîëæíî áûòü >(áîëüøå) òåêóùåãî!";
    Alert(TextMessage);
    return(false);
  }


  return(true);
}



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