Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
olyakish_fractals_02
//+------------------------------------------------------------------+
//| olyakish_fractals_02 |
//| Copyright © -2007, olyakish |
//| plutonia-dmb#yandex.ru |
//| Äîáàâëåí ïðîöåíò äëÿ îòñåèâàíèÿ ôðàêòàëîâ |
//+------------------------------------------------------------------+
#property copyright "olyakish"
#property link "plutonia-dmb#yandex.ru"
//----
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Lime // Çåëåíûé ôðàêòàë
#property indicator_color2 Red // Ïðèñåäàþùèé
#property indicator_color3 SaddleBrown // Óâÿäàþùèé
#property indicator_color4 Blue // Ôàëüøèâûé
//----
extern int Pips = 15;
extern int ShiftBars = 150;
extern string rem1 = "Ïðîöåíò äëÿ îòñåèâàíèÿ ïî îáúåìó";
extern int Percent = 110;
double ExtLimeBuffer[];
double ExtRedBuffer[];
double ExtSaddleBrownBuffer[];
double ExtBlueBuffer[];
int i, j;
double a_Fractal[2]; // 0- ïîñëåäíèé 1-ïðåäûäóùèé
double a_MFI[2]; // 0- ïîñëåäíèé 1-ïðåäûäóùèé
double a_Volume[2]; // 0- ïîñëåäíèé 1-ïðåäûäóùèé
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0, ExtLimeBuffer);
SetIndexBuffer(1, ExtRedBuffer);
SetIndexBuffer(2, ExtSaddleBrownBuffer);
SetIndexBuffer(3, ExtBlueBuffer);
//----
SetIndexStyle(0, DRAW_ARROW, 0, 1);
SetIndexStyle(1, DRAW_ARROW, 0, 1);
SetIndexStyle(2, DRAW_ARROW, 0, 1);
SetIndexStyle(3, DRAW_ARROW, 0, 1);
//----
SetIndexArrow(0, 177);
SetIndexArrow(1, 177);
SetIndexArrow(2, 177);
SetIndexArrow(3, 177);
//----
SetIndexLabel(0, "Çåëåíûé ôðàêòàë");
SetIndexLabel(1, "Ïðèñåäàþùèé ôðàêòàë");
SetIndexLabel(2, "Óâÿäàþùèé ôðàêòàë");
SetIndexLabel(3, "Ôàëüøèâûé ôðàêòàë");
//----
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int n = 3;
while(ExtLimeBuffer[n] != NULL || ExtRedBuffer[n] != NULL ||
ExtSaddleBrownBuffer[n] != NULL || ExtBlueBuffer[n] != NULL)
{
if(n > ShiftBars)
{
n = ShiftBars;
break;
}
n++;
}
for(int i = n + 20; i >= 3; i--)
{
//-- âåðõíèå ôðàêòàëû
ArrayInitialize(a_Fractal, 0);
ArrayInitialize(a_MFI, 0);
ArrayInitialize(a_Volume, 0);
// íà i áàðå åñòü ôðàêòàë ââåðõ
if(iFractals(NULL, 0, MODE_UPPER, i) != 0)
{
Comment("olyakish_fractals_02\n",i, ", ", j);
Sleep(1000);
// öåíà íà ôðàêòàëå
a_Fractal[0] = iFractals(NULL, 0, MODE_UPPER, i);
// îáúåì
a_Volume[0] = Volume[i] + Volume[i+1] + Volume[i+2] +
Volume[i-1] + Volume[i-2];
// MFI
a_MFI[0] = (High[i] - Low[i] + High[i-1] - Low[i-1] +
High[i-2] - Low[i-2] + High[i+1] - Low[i+1] +
High[i+2] - Low[i+2]) / a_Volume[0];
// ïîøëè èñêàòü ôðàêòàë íà âíèç ïî èñòîðèè
j = i + 1;
while(a_Fractal[1] == 0)
{
if(iFractals(NULL, 0, MODE_UPPER, j) != 0)
break;
// Íàøëè ôðàêòàë âíèç
if(iFractals(NULL, 0, MODE_LOWER, j) != 0)
{
a_Fractal[1] = iFractals(NULL, 0, MODE_LOWER, j);
a_Volume[1] = Volume[j+2] + Volume[j+1] + Volume[j] +
Volume[j-1] + Volume[j-2];
a_MFI[1] = (High[j+1] - Low[j+1] + High[j+2] -
Low[j+2] + High[j] - Low[j] + High[j-1] -
Low[j-1] + High[j-2] - Low[j-2]) / a_Volume[1];
// èìååì ïðèñåäàþùèé ôðàêòàë (MFI - îáúåì +)
if(a_Volume[0] > a_Volume[1]*Percent / 100 &&
a_MFI[0] < a_MFI[1])
{
ExtRedBuffer[i] = High[i]; // + Pips*Point;
break;
}
// èìååì çåëåíûé ôðàêòàë (MFI + îáúåì +)
if(a_Volume[0] > a_Volume[1]*Percent / 100 &&
a_MFI[0] > a_MFI[1])
{
ExtLimeBuffer[i] = High[i]; // + Pips*Point;
break;
}
// èìååì ôàëüøèâûé ôðàêòàë (MFI + îáúåì -)
if(a_Volume[0]*Percent / 100 < a_Volume[1] &&
a_MFI[0] > a_MFI[1])
{
ExtBlueBuffer[i] = High[i]; // + Pips*Point;
break;
}
// èìååì óâÿäàþùèé ôðàêòàë (MFI - îáúåì -)
if(a_Volume[0]*Percent / 100 < a_Volume[1] &&
a_MFI[0] < a_MFI[1])
{
ExtSaddleBrownBuffer[i] = High[i]; // + Pips*Point;
break;
}
}
j++;
}
}
//--- íèæíèå ôðàêòàëû
ArrayInitialize(a_Fractal, 0);
ArrayInitialize(a_MFI, 0);
ArrayInitialize(a_Volume, 0);
// íà i áàðå åñòü ôðàêòàë âíèç
if(iFractals(NULL, 0, MODE_LOWER, i) != 0)
{
// öåíà íà ôðàêòàëå
a_Fractal[0] = iFractals(NULL, 0, MODE_LOWER, i);
// îáúåì
a_Volume[0] = Volume[i] + Volume[i+1] + Volume[i+2] +
Volume[i-1] + Volume[i-2];
// MFI
a_MFI[0] = (High[i] - Low[i] + High[i-1] - Low[i-1] +
High[i-2] - Low[i-2] + High[i+1] - Low[i+1] +
High[i+2] - Low[i+2]) / a_Volume[0];
// ïîøëè èñêàòü ôðàêòàë íà ââåðõ ïî èñòîðèè
j = i + 1;
while(a_Fractal[1] == 0)
{
if(iFractals(NULL, 0, MODE_LOWER, j) != 0)
{
break;
}
// Íàøëè ôðàêòàë ââåðõ
if(iFractals(NULL, 0, MODE_UPPER, j) != 0)
{
a_Fractal[1] = iFractals(NULL, 0, MODE_UPPER, j);
a_Volume[1] = Volume[j+2] + Volume[j+1] + Volume[j] +
Volume[j-1] + Volume[j-2];
a_MFI[1] = (High[j+1] - Low[j+1] + High[j+2] -
Low[j+2] + High[j] - Low[j] + High[j-1] -
Low[j-1] + High[j-2] - Low[j-2]) / a_Volume[1];
// èìååì ïðèñåäàþùèé ôðàêòàë (MFI - îáúåì +)
if(a_Volume[0] > a_Volume[1]*Percent / 100 &&
a_MFI[0] < a_MFI[1])
{
ExtRedBuffer[i] = Low[i]; // - Pips*Point;
break;
}
// èìååì çåëåíûé ôðàêòàë (MFI + îáúåì +)
if(a_Volume[0] > a_Volume[1]*Percent / 100 &&
a_MFI[0] > a_MFI[1])
{
ExtLimeBuffer[i] = Low[i]; // - Pips*Point;
break;
}
// èìååì ôàëüøèâûé ôðàêòàë (MFI + îáúåì -)
if(a_Volume[0]*Percent / 100 < a_Volume[1] &&
a_MFI[0] > a_MFI[1])
{
ExtBlueBuffer[i] = Low[i]; // - Pips*Point;
break;
}
// èìååì óâÿäàþùèé ôðàêòàë (MFI - îáúåì -)
if(a_Volume[0]*Percent / 100 < a_Volume[1] &&
a_MFI[0] < a_MFI[1])
{
ExtSaddleBrownBuffer[i] = Low[i]; // - Pips*Point;
break;
}
}
j++;
}
}
}
return(0);
}
//+------------------------------------------------------------------+
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
---