Price Data Components
Indicators Used
Miscellaneous
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 Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---