mv-i-Fibo_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-Fibo_1_0
//+---------------------------------------------------------------------------+
//|                                                         mv-i-Fibo_1_0.mq4 |
//|                                                Ìàêñèì Âàñèëåíêî Â. MaxV42 |
//|                                                http://                    |
//| Èíäèêàòîð ñòðîèò Ôèáî-óðîâíè ïî ýêñòðèìàëüíûì òî÷êàì ñòàðøåãî òàéìôðåìà.  |
//+---------------------------------------------------------------------------+
//| Âåðñèÿ 1.0 îò 22.03.2010                                                  |
//+---------------------------------------------------------------------------+
#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 int   TF.Upper                  =  1440;    // Ñòàðøèé òàéìôðåéì
extern bool  ShowFractals.UpperTF      = false;    // Âêë/âûêë çíà÷êîâ ôðàêòàëîâ
extern bool  Show.FiboLevels           =  true;    // Âêë/âûêë Ôèáî-óðîâíåé
extern bool  Show.FiboArcs             =  true;    // Âêë/âûêë Ôèáî-äóãè
extern int   nFibo                     =     1;    // êîë-âî Ôèáî-óðîâíåé
//+---------------------------------------------------------------------------+
extern string Ind_Coment2= "--- Ïàðàìåòðû îòîáðàæåíèÿ êàíàëîâ ---";
extern color Fibo.Color0           =     DodgerBlue;  // Öâåò 0 Ôèáî-óðîâíåé
extern color Fibo.Color1           =        Magenta;  // Öâåò 1 Ôèáî-óðîâíåé
extern color Fibo.Color2           =          Green;  // Öâåò 2 Ôèáî-óðîâíåé
extern color Fibo.Color3           =           Peru;  // Öâåò 3 Ôèáî-óðîâíåé
extern color Fibo.Color4           =          Black;  // Öâåò îñòàëüíûõ Ôèáî-óðîâíåé
extern int   nBars.History             =       1000;  // êîë-âî áàðîâ îòðèñîâêè èíäèêàòîðà
//+---------------------------------------------------------------------------+
// ãëîáàëüíûå ïåðåìåííûå
int          nBars.LowerTF             =     0,    // êîë-âî áàðîâ ìëàäøåãî òàôìôðåéìà
             nBars.UpperTF             =     0;    // êîë-âî áàðîâ ñòàðøåãî òàôìôðåéìà
int          QntFiboLevels             =     0;    // êîë-âî óæå îòðèñîâàííûõ Ôèáî-óðîâíåé

//----- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+---------------------------------------------------------------------------+
void init()  {        // Custom indicator initialization function

  // ----- 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);

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

  return;
}

//+---------------------------------------------------------------------------+
void deinit()   {     // Custom indicator deinitialization function
  // ----- Óäàëÿåì Ôèáî-óðîâíè ñ ãðàôèêà
  DeleteFibo();
 return;
}

//+---------------------------------------------------------------------------+
void start() {        // Custom indicator iteration function
int    counted_bars=IndicatorCounted();
int    limit;
int    Spred=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>nBars.History) limit=nBars.History;
  // ----- Îñíîâíîé öèêë
  for (int i=limit; i>=0; i--)   {
    //--------------------------------------------------------- 1 --
    // ----- ïîÿâèëñÿ íîâûé áàð ñòàðøåãî òàéìôðåéìà
    if(isNewBar.UpperTF(Time[i]))  {
      Fractals.Upper=0;Fractals.Lower=0;
      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(ShowFractals.UpperTF)  {
          ExtMapBuffer1[iBarShift(NULL,0,iTime(NULL,TF.Upper,nBars.UpperTF),false)]=Fractals.Upper+Spred*Point;
        }
        // ----- îòîáðàæàåì Ôèáî-óðîâíè
        DrawFibo(nBars.UpperTF);
      }
      // ----- áëîê íèæíèõ ôðàêòàëîâ ñòàðøåãî òàéìôðåéìà
      if(Fractals.Lower>0)  {
        // ----- îòîáðàæàåì âðàêòàëû ñòàðøåãî òàéìôðåéìà
        if(ShowFractals.UpperTF)  {
          ExtMapBuffer2[iBarShift(NULL,0,iTime(NULL,TF.Upper,nBars.UpperTF),false)]=Fractals.Lower-Spred*Point;
        }
        // ----- îòîáðàæàåì Ôèáî-óðîâíè
        DrawFibo(nBars.UpperTF);
      }
    }

  }

  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 CheckParameters()  {     // Ôóíêöèÿ ïðîâåðêè âíåøíèõ ïàðàìåòðîâ èíäèêàòîðà
string TextMessage;

  if(TF.Upper<=Period())  {
    TextMessage="Íåâåðíûå çíà÷åíèÿ âíåøíèõ ïàðàìåòðîâ èíäèêàòîðà!"+
                        "Çíà÷åíèå ñòàðøåãî òàéìôðåéìà äîëæíî áûòü >(áîëüøå) òåêóùåãî!";
    Alert(TextMessage);
    return(false);
  }

  return(true);
}




//+-------------------------------------------------------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------------------------------------------+
//+-------------------------------------------- ÔÓÍÊÖÈÈ ÎÒÐÈÑÎÂÊÈ Ôèáî-óðîâíåé ---------------------------------------------+
//+-------------------------------------------------------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------------------------------------------+

//+---------------------------------------------------------------------------+
color GetFiboColor(int Index) {  // Ôóíêöèÿ âîçâðàùàåò öâåò Ôèáî-óðîâíÿ ïî èíäåêñó
  switch(Index) {
    case 0:
      return(Fibo.Color0);
    case 1:
      return(Fibo.Color1);
    case 2:
      return(Fibo.Color2);
    case 3:
      return(Fibo.Color3);
  }
  return(Fibo.Color4);
}

//+---------------------------------------------------------------------------+
void DeleteFibo()  {             // Ôóíêöèÿ óäàëÿåò âñå Ôèáî-óðîâíè ñ ãðàôèêà
int    Qnt=ObjectsTotal();
  for (int i=0; i<Qnt; i++)   {  // Öèêë ïî îáúåêòàì
    if(StringFind(ObjectName(i),"FiboLevels",0)>=0) {
      ObjectDelete(ObjectName(i));      // Ôèáî-óðîâíè
      i--; continue;
    }
    if(StringFind(ObjectName(i),"FiboArcs",0)>=0) {
      ObjectDelete(ObjectName(i));     // óäàëÿì Ôèáî-äóãè
      i--; continue;
    }
    if(i>=ObjectsTotal()) break;
  }
 return;
}

//+---------------------------------------------------------------------------+
void DrawFibo(int nBar)  {            // Ôóíêöèÿ îòîáðàæàåò Ôèáî-óðîâíåé íà ãðàôèêå
double Fractals.Upper=0,Fractals.Lower=0;
string mFractals[][3];
int i,j=0;
  ArrayResize(mFractals,nFibo*4);
  // ----- Óäàëÿåì Ôèáî-óðîâíè ñ ãðàôèêà
  DeleteFibo();
  //--------------------------------------------------------- 1 --
  // ----- îïðåäåëÿåì îïîðíûå òî÷êè
  for (i=nBar; i<Bars; i++)   {  // Öèêë ïî áàðàì
    Fractals.Upper=iFractals(NULL,TF.Upper,MODE_UPPER,i);
    Fractals.Lower=iFractals(NULL,TF.Upper,MODE_LOWER,i);
    if(Fractals.Lower>0)  {
      mFractals[j][0]=TimeToStr(iTime(NULL,TF.Upper,i),TIME_DATE|TIME_MINUTES);
      mFractals[j][1]=DoubleToStr(Fractals.Lower,Digits);
      mFractals[j][2]=-1;
      j++;
    }
    if(Fractals.Upper>0)  {
      mFractals[j][0]=TimeToStr(iTime(NULL,TF.Upper,i),TIME_DATE|TIME_MINUTES);
      mFractals[j][1]=DoubleToStr(Fractals.Upper,Digits);
      mFractals[j][2]=1;
      j++;
    }
    if(j>(nFibo*4-1)) break;
  }
  //--------------------------------------------------------- 2 --
  j=0;
  for (i=0; i<nFibo*4-1; i++)   {
    // ----- åñëè äâà ïîñëåäîâàòåëüíûõ ôðàêòàëà îäíîíàïðàâëåííûå, òî ïðîïóñêàåì
    if(StrToDouble(mFractals[i][2])==StrToDouble(mFractals[i+1][2])) continue;
    // ----- îòîáðàæàåì Ôèáî-óðîâíè
    if(Show.FiboLevels)  {
      ObjectCreate("FiboLevels"+j,OBJ_FIBO,0,StrToTime(mFractals[i][0]),StrToDouble(mFractals[i][1]),StrToTime(mFractals[i+1][0]),StrToDouble(mFractals[i+1][1]));
      ObjectSet("FiboLevels"+j,OBJPROP_FIBOLEVELS,12); // -38.2; -23.6; -14.5; 0; 14.5; 23.6; 38.2; 50; 61.8; 100; 161.8; 261.8;
      ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+0,-0.382); ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+1,-0.236); ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+2,-0.145);
      ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+3,0); ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+4,0.145); ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+5,0.236);
      ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+6,0.382); ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+7,0.50); ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+8,0.618);
      ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+9,1.00); ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+10,1.618); ObjectSet("FiboLevels"+j,OBJPROP_FIRSTLEVEL+11,2.618);
      ObjectSetFiboDescription("FiboLevels"+j,0,"-38.2"); ObjectSetFiboDescription("FiboLevels"+j,1,"-23.6"); ObjectSetFiboDescription("FiboLevels"+j,2,"-14.5");
      ObjectSetFiboDescription("FiboLevels"+j,3,"0"); ObjectSetFiboDescription("FiboLevels"+j,4,"14.5"); ObjectSetFiboDescription("FiboLevels"+j,5,"23.6");
      ObjectSetFiboDescription("FiboLevels"+j,6,"38.2"); ObjectSetFiboDescription("FiboLevels"+j,7,"50"); ObjectSetFiboDescription("FiboLevels"+j,8,"61.8");
      ObjectSetFiboDescription("FiboLevels"+j,9,"100"); ObjectSetFiboDescription("FiboLevels"+j,10,"161.8"); ObjectSetFiboDescription("FiboLevels"+j,11,"261.8");
      ObjectSet("FiboLevels"+j,OBJPROP_COLOR,GetFiboColor(j)); ObjectSet("FiboLevels"+j,OBJPROP_LEVELCOLOR,GetFiboColor(j));
    }
    // ----- îòîáðàæàåì Ôèáî-äóãè
    if(Show.FiboArcs)  {
      ObjectCreate("FiboArcs"+j,OBJ_FIBOARC,0,StrToTime(mFractals[i][0]),StrToDouble(mFractals[i][1]),StrToTime(mFractals[i][0]),StrToDouble(mFractals[i+1][1]));
      ObjectSet("FiboArcs"+j,OBJPROP_FIBOLEVELS,6); // 38.2; 50; 61.8; 100; 114.5; 138.2;
      ObjectSet("FiboArcs"+j,OBJPROP_FIRSTLEVEL+0,0.382); ObjectSet("FiboArcs"+j,OBJPROP_FIRSTLEVEL+1,0.50); ObjectSet("FiboArcs"+j,OBJPROP_FIRSTLEVEL+2,0.618);
      ObjectSet("FiboArcs"+j,OBJPROP_FIRSTLEVEL+3,1.00); ObjectSet("FiboArcs"+j,OBJPROP_FIRSTLEVEL+4,1.145); ObjectSet("FiboArcs"+j,OBJPROP_FIRSTLEVEL+5,1.382);
      ObjectSetFiboDescription("FiboArcs"+j,0,"38.2"); ObjectSetFiboDescription("FiboArcs"+j,1,"50"); ObjectSetFiboDescription("FiboArcs"+j,2,"61.8");
      ObjectSetFiboDescription("FiboArcs"+j,3,"100"); ObjectSetFiboDescription("FiboArcs"+j,4,"114.5"); ObjectSetFiboDescription("FiboArcs"+j,5,"138.2");
      ObjectSet("FiboArcs"+j,OBJPROP_COLOR,GetFiboColor(j)); ObjectSet("FiboArcs"+j,OBJPROP_LEVELCOLOR,GetFiboColor(j));
    }
    j++;
    if(j>(nFibo-1)) break;
  }
  
}


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