Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
_AllFramesTrend_4
#property link "mailto:rainal@mail.ru"
#property copyright "rainal - Ñìèðíîâ Àëåêñàíäð Ìèõàéëîâè÷"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 0
#property indicator_width4 0
extern string remark1 = "Ïàðàìåòðû ÌÀ";
extern int method = 3; // ìåòîä óñðåäíåíèÿ ÌÀ äëÿ âñåõ òàéìôðåéìîâ
extern int price = 5; // öåíà äëÿ ðàñ÷åòà ÌÀ äëÿ âñåõ òàéìôðåéìîâ
extern string remark2 = "Âûáîð òàéìôåðåéìîâ";
extern int M1_use = 0; // èñïîëüçîâàíèå òàéìôðåìà Ì1
extern int M5_use = 0; // 0 - íåò, ëþáàÿ äðóãàÿ öèôðà - äà
extern int M15_use = 0; // àíàëîãè÷íî äëÿ îñòàëüíûõ òàéìðåôìîâ
extern int M30_use = 0;
extern int H1_use = 1;
extern int H4_use = 0;
extern int D1_use = 0;
extern string remark3 = "Âûáîð ïåðèîäîâ ÌÀ";
extern int M1_period = 5; // ïåðèîä óñðåäíåíèÿ ÌÀ äëÿ òàéìôðåéìà Ì1
extern int M5_period = 5; // àíàëîãè÷íî äëÿ îñòàëüíûõ òàéìðåôìîâ
extern int M15_period = 5;
extern int M30_period = 5;
extern int H1_period = 5;
extern int H4_period = 5;
extern int D1_period = 5;
extern string remark4 = "Ðåæèì ðàñ÷åòà äàííûõ";
extern bool on_next_bar = true; // true - èñïîëüçîâàíèå äëÿ ðàñ÷åòà èíäèêàòîðà öåíû Close ïðåäïîñëåäíåãî ðàñ÷åòíîãî áàðà
// íà ìèíèìàëüíîì âûáðàííîì òàéìðåéìå, ò.å. îæèäàíèå ïîëíîãî ôîðìèðîâàíèÿ áàðà,
// îòðèñîâêà îòêðûòèÿ è çàêðûòèÿ ïîçèöèè áóäåò îñóùåñòâëÿòüñÿ ïî öåíå Open
// ïîñëåäíåãî (òåêóùåãî) ðàñ÷åòíîãî áàðà íà ìèíèìàëüíîì âûáðàííîì òàéìðåéìå
// false - èñïîëüçîâàíèå òåêóùåé öåíû (Close) ïîñëåäíåãî ðàñ÷åòíîãî áàðà íà ìèíèìàëüíîì
// âûáðàííîì òàéìðåéìå, ò.å. ðàñ÷åò â ðåàëüíîì âðåìåíè, íå äîæèäàÿñü ïîëíîãî ôîðìèðîâàíèÿ
// áàðà, îòðèñîâêà îòêðûòèÿ è çàêðûòèÿ ïîçèöèè áóäåò îñóùåñòâëÿòüñÿ ïî òåêóùåé öåíå (Close)
// ïîñëåäíåãî (òåêóùåãî) ðàñ÷åòíîãî áàðà íà ìèíèìàëüíîì âûáðàííîì òàéìðåéìå
int bars_history = 5000; // îãðàíè÷åíèå íà êîëè÷åñòâî îáðàáàòûâàåìûõ èíäèêàòîðîì áàðîâ
string sound_up = "up.wav"; // çâóê, îáîçíà÷àþùèé íà÷àëî äâèæåíèÿ ââåðõ
string sound_down = "down.wav"; // çâóê, îáîçíà÷àþùèé íà÷àëî äâèæåíèÿ âíèç
string sound_end = "end.wav"; // çâóê, îáîçíà÷àþùèé îêîí÷àíèå äâèæåíèÿ
// çâóêîâûå ôàéëû äîëæíû íàõîäèòüñÿ â ïàïêå "êàòàëîã_òåðìèíàëà\sounds"
double line_up[], line_down[], arrow_up[], arrow_down[];
int mode, flag_alert, flag_sound_up, flag_sound_down, flag_end_up, flag_end_down, pos_up, pos_down;
datetime time_last, time_up, time_down;
int init()
{
IndicatorShortName("AllFramesTrend_4");
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_ARROW);
SetIndexStyle(3, DRAW_ARROW);
SetIndexArrow(2, 108);
SetIndexArrow(3, 108);
SetIndexDrawBegin(0, 1);
SetIndexDrawBegin(1, 1);
SetIndexDrawBegin(2, 1);
SetIndexDrawBegin(3, 1);
SetIndexBuffer(0, line_up);
SetIndexBuffer(1, line_down);
SetIndexBuffer(2, arrow_up);
SetIndexBuffer(3, arrow_down);
return(0);
}
int start()
{
// ïðîâåðêà ñîîòâåòñòâèÿ òàéìôðåìà òåêóùãî ãðàôèêà âõîäíûì äàííûì
int min_frame = 0;
if(D1_use == 1) min_frame = 1440;
if(H4_use == 1) min_frame = 240;
if(H1_use == 1) min_frame = 60;
if(M30_use == 1) min_frame = 30;
if(M15_use == 1) min_frame = 15;
if(M5_use == 1) min_frame = 5;
if(M1_use == 1) min_frame = 1;
if(min_frame == 0 && flag_alert != 1)
{
flag_alert = 1;
Alert("Íè îäèí òàéìôðåéì íå âûáðàí! Âûáåðèòå õîòÿ áû îäèí!");
return(0);
}
if(Period() > min_frame && flag_alert != 1)
{
flag_alert = 1;
Alert("Òàéìôðåéì òåêóùåãî ãðàôèêà äîëæåí áûòü íå áîëüøå ìèíèìàëüíîãî âûáðàííîîãî òàéìôðåéìà!");
return(0);
}
int pos = 0, shift, i;
double d, M1_cur, M1_prev, M5_cur, M5_prev, M15_cur, M15_prev, M30_cur, M30_prev, H1_cur, H1_prev, H4_cur, H4_prev, D1_cur, D1_prev;
int counted_bars = IndicatorCounted();
if(counted_bars < bars_history) pos = bars_history - counted_bars;
if(on_next_bar) mode = 1;
else mode = 0;
while(pos >= 0)
{
// ïðîâåðêà óñëîâèÿ ïîëíîãî ôîðìèðîâàíèÿ ïðåäïîñëåäíåãî ðàñ÷åòíîãî áàðà íà ìèíèìàëüíîì âûáðàííîì òàéìôðåéìå
if(mode == 1 && counted_bars > bars_history)
{
shift = iBarShift(NULL, min_frame, Time[pos]);
if(iTime(NULL, min_frame, shift) == time_last) return(0);
else time_last = iTime(NULL, min_frame, shift);
}
// ñîáèðàåì èíôîðìàöèþ ïî ðàçíûì òàéìôðåìàì
if(M1_use == 1)
{
M1_cur = iMA(NULL, PERIOD_M1, M1_period, 0, method, price, pos + mode);
M1_prev = iMA(NULL, PERIOD_M1, M1_period, 0, method, price, pos + mode + 1);
}
if(M5_use == 1)
{
shift = iBarShift(NULL, PERIOD_M5, Time[pos + (5 / Period()) * mode]);
M5_cur = iMA(NULL, PERIOD_M5, M5_period, 0, method, price, shift);
shift = iBarShift(NULL, PERIOD_M5, Time[pos + (5 / Period()) * (mode + 1)]);
M5_prev = iMA(NULL, PERIOD_M5, M5_period, 0, method, price, shift);
}
if(M15_use == 1)
{
shift = iBarShift(NULL, PERIOD_M15, Time[pos + (15 / Period()) * mode]);
M15_cur = iMA(NULL, PERIOD_M15, M15_period, 0, method, price, shift);
shift = iBarShift(NULL, PERIOD_M15, Time[pos + (15 / Period()) * (mode + 1)]);
M15_prev = iMA(NULL, PERIOD_M15, M15_period, 0, method, price, shift);
}
if(M30_use == 1)
{
shift = iBarShift(NULL, PERIOD_M30, Time[pos + (30 / Period()) * mode]);
M30_cur = iMA(NULL, PERIOD_M30, M30_period, 0, method, price, shift);
shift = iBarShift(NULL, PERIOD_M30, Time[pos + (30 / Period()) * (mode + 1)]);
M30_prev = iMA(NULL, PERIOD_M30, M30_period, 0, method, price, shift);
}
if(H1_use == 1)
{
shift = iBarShift(NULL, PERIOD_H1, Time[pos + (60 / Period()) * mode]);
H1_cur = iMA(NULL, PERIOD_H1, H1_period, 0, method, price, shift);
shift = iBarShift(NULL, PERIOD_H1, Time[pos + (60 / Period()) * (mode + 1)]);
H1_prev = iMA(NULL, PERIOD_H1, H1_period, 0, method, price, shift);
}
if(H4_use == 1)
{
shift = iBarShift(NULL, PERIOD_H4, Time[pos + (240 / Period()) * mode]);
H4_cur = iMA(NULL, PERIOD_H4, H4_period, 0, method, price, shift);
shift = iBarShift(NULL, PERIOD_H4, Time[pos + (240 / Period()) * (mode + 1)]);
H4_prev = iMA(NULL, PERIOD_H4, H4_period, 0, method, price, shift);
}
if(D1_use == 1)
{
shift = iBarShift(NULL, PERIOD_D1, Time[pos + (1440 / Period()) * mode]);
D1_cur = iMA(NULL, PERIOD_D1, D1_period, 0, method, price, shift);
shift = iBarShift(NULL, PERIOD_D1, Time[pos + (1440 / Period()) * (mode + 1)]);
D1_prev = iMA(NULL, PERIOD_D1, D1_period, 0, method, price, shift);
}
// îïðåäåëÿåì íàïðàâëåíèå äâèæåíèÿ íà âñåõ âûáðàííûõ òàéìôðåéìàõ
string direction = "none";
if(((M1_cur > M1_prev) || M1_use == 0) && ((M5_cur > M5_prev) || M5_use == 0) && ((M15_cur > M15_prev) || M15_use == 0) && ((M30_cur > M30_prev) || M30_use == 0) && ((H1_cur > H1_prev) || H1_use == 0) && ((H4_cur > H4_prev) || H4_use == 0) && ((D1_cur > D1_prev) || D1_use == 0)) direction = "up";
if(((M1_cur < M1_prev) || M1_use == 0) && ((M5_cur < M5_prev) || M5_use == 0) && ((M15_cur < M15_prev) || M15_use == 0) && ((M30_cur < M30_prev) || M30_use == 0) && ((H1_cur < H1_prev) || H1_use == 0) && ((H4_cur < H4_prev) || H4_use == 0) && ((D1_cur < D1_prev) || D1_use == 0)) direction = "down";
// åñëè íàïðàâëåíèÿ äâèæåíèé ÌÀ íà âûáðàííûõ òàéìôðåéìàõ íàïðàâëåíû ââåðõ...
if(direction == "up")
{
// èäåíòèôèöèðóåì íà÷àëî äâèæåíèÿ ââåðõ
if(time_up == EMPTY)
{
flag_end_up = 0;
flag_sound_down = 0;
time_up = Time[pos];
if(mode == 1)
{
line_up[pos] = Open[pos];
arrow_up[pos] = Open[pos];
}
else
{
line_up[pos] = Close[pos];
arrow_up[pos] = Close[pos];
}
// èãðàåì çâóê íà÷àëà äâèæåíèÿ ââåðõ
if(counted_bars >= bars_history && flag_sound_up != 1)
{
flag_sound_up = 1;
PlaySound(sound_up);
}
}
// ðèñóåì ïðÿìóþ ëèíèþ îò íà÷àëà äâèæåíèÿ ââåðõ äî òåêóùåãî çíà÷åíèÿ
if(counted_bars >= bars_history && time_up != EMPTY && time_up != Time[pos])
{
pos_up = iBarShift(NULL, 0, time_up);
if(mode == 1) d = (Open[pos] - Open[pos_up]) / (pos_up - pos);
else d = (Close[pos] - Close[pos_up]) / (pos_up - pos);
for(i = pos_up - 1; i >= pos; i--) line_up[i] = line_up[i + 1] + d;
}
}
// èäåíòèôèöèðóåì îêîí÷àíèå äâèæåíèÿ ââåðõ
if(direction != "up" && flag_end_up != 1)
{
flag_end_up = 1;
// èãðàåì çâóê îêîí÷àíèÿ äâèæåíèÿ
if(counted_bars >= bars_history) PlaySound(sound_end);
// ðèñóåì ïðÿìóþ ëèíèþ îò íà÷àëà äî îêîí÷àíèÿ äâèæåíèÿ âåðõ
if(time_up != Time[pos])
{
pos_up = iBarShift(NULL, 0, time_up);
if(mode == 1)
{
arrow_up[pos] = Open[pos];
d = (Open[pos] - Open[pos_up]) / (pos_up - pos);
}
else
{
arrow_up[pos] = Close[pos];
d = (Close[pos] - Close[pos_up]) / (pos_up - pos);
}
for(i = pos_up - 1; i >= pos; i--) line_up[i] = line_up[i + 1] + d;
}
time_up = EMPTY;
}
// åñëè íàïðàâëåíèÿ äâèæåíèé ÌÀ íà âûáðàííûõ òàéìôðåéìàõ íàïðàâëåíû âíèç...
if(direction == "down")
{
// èäåíòèôèöèðóåì íà÷àëî äâèæåíèÿ âíèç
if(time_down == EMPTY)
{
flag_end_down = 0;
flag_sound_up = 0;
time_down = Time[pos];
if(mode == 1)
{
line_down[pos] = Open[pos];
arrow_down[pos] = Open[pos];
}
else
{
line_down[pos] = Close[pos];
arrow_down[pos] = Close[pos];
}
// èãðàåì çâóê íà÷àëà äâèæåíèÿ âíèç
if(counted_bars >= bars_history && flag_sound_up != 1)
{
flag_sound_down = 1;
PlaySound(sound_down);
}
}
// ðèñóåì ïðÿìóþ ëèíèþ îò íà÷àëà äâèæåíèÿ âíèç äî òåêóùåãî çíà÷åíèÿ
if(counted_bars >= bars_history && time_down != EMPTY && time_down != Time[pos])
{
pos_down = iBarShift(NULL, 0, time_down);
if(mode == 1) d = (Open[pos] - Open[pos_down]) / (pos_down - pos);
else d = (Close[pos] - Close[pos_down]) / (pos_down - pos);
for(i = pos_down - 1; i >= pos; i--) line_down[i] = line_down[i + 1] + d;
}
}
// èäåíòèôèöèðóåì îêîí÷àíèå äâèæåíèÿ âíèç
if(direction != "down" && flag_end_down != 1)
{
flag_end_down = 1;
// èãðàåì çâóê îêîí÷àíèÿ äâèæåíèÿ
if(counted_bars >= bars_history) PlaySound(sound_end);
// ðèñóåì ïðÿìóþ ëèíèþ îò íà÷àëà äî îêîí÷àíèÿ äâèæåíèÿ âíèç
if(time_down != Time[pos])
{
pos_down = iBarShift(NULL, 0, time_down);
if(mode == 1)
{
arrow_down[pos] = Open[pos];
d = (Open[pos] - Open[pos_down]) / (pos_down - pos);
}
else
{
arrow_down[pos] = Close[pos];
d = (Close[pos] - Close[pos_down]) / (pos_down - pos);
}
for(i = pos_down - 1; i >= pos; i--) line_down[i] = line_down[i + 1] + d;
}
time_down = EMPTY;
}
pos--;
}
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
---