zb tma tt.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «zb tma tt.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор для MetaTrader 4 отображает на графике несколько аналитических буферов: две линии скользящей средней на основе LWMA с настраиваемыми периодами, ZigZag-линию, стрелки направления, зоны покупок и продаж, а также маркеры пересечений. Параметры расчёта периодов, ценовых данных и глубины анализа задаются пользователем через диалог настроек.
Индикатор определяет локальные экстремумы сглаженных данных и рисует ZigZag и стрелки в точках разворотов. Зоны покупок и продаж формируются вокруг этих точек в зависимости от заданных параметров глубины и отклонения. Все отображаемые элементы размещаются в отдельных буферах с настраиваемыми стилями отрисовки.
Восемь буферов индикатора зарегистрированы в свойствах: две линейные линии для средних значений, секционная линия для ZigZag, две стрелки для направления, две стрелки для зон и один буфер для маркеров пересечений. При включённом параметре ZigZag отображается как секционная линия, при отключёнии — не рисуется.
Настройки программы
| Настройка | Описание |
|---|---|
| TMAPeriod | TMAPeriod — Задаёт основной период расчёта центральной линии TMA. |
| HalfTMAPeriod | HalfTMAPeriod — Задаёт период расчёта половинной линии TMA, используемой для определения экстремумов и ZigZag. |
| TMAPrice | TMAPrice — Задаёт тип ценовых данных, используемых при расчёте линий TMA (0 — Close, 1 — Open, 4 — Median, 5 — Typical, 6 — Weighted). |
| ShowZigZag | ShowZigZag — Включает или отключает отображение ZigZag-линии на графике. |
| Depth | Depth — Задаёт глубину поиска локальных минимумов и максимумов для отрисовки стрелок и зон покупок/продаж. |
| Deviation | Deviation — Задаёт отклонение (в барах) для определения экстремумов при построении ZigZag-линии. |
| Backstep | Backstep — Задаёт количество баров, используемых для коррекции расчёта половинной линии TMA. Влияет на формулу усреднения экстремумов. |
Поиск по коду файла
/*
Generated by EX4-TO-MQ4 decompiler V4.0.438.3 [-]
Website:
E-mail : p******m*@gmail.com
*/
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 White
#property indicator_color2 RoyalBlue
#property indicator_color3 Lavender //Lime
#property indicator_color4 Purple
#property indicator_color5 Lime
#property indicator_color6 Red
#property indicator_color7 Lime
#property indicator_color8 Red
#property indicator_width1 4
#property indicator_width2 2
#property indicator_width5 2
#property indicator_width6 2
extern int TMAPeriod = 3;
extern int HalfTMAPeriod = 21;
extern int TMAPrice = 0;
extern bool ShowZigZag = true;
extern int Depth = 12;
extern int Deviation = 20;
extern int Backstep = 3;
double KREST[];
double ZIGZAG[];
double CenterTMA[];
double HalfTMA[];
double ArrowUP[];
double ArrowDN[];
double ZoneBUY[];
double ZoneSELL[];
int gia_136[6] = {0, 0, 0, 0, 0, 0};
int gia_140[5] = {0, 0, 0, 0, 0};
int gi_144;
int gi_148;
int gi_152;
int gi_156;
int gi_160;
bool gi_164 = TRUE;
int g_bars_168 = 0;
void f0_6(int i) {
if (Bars - i > TMAPeriod + 1) f0_5(i);
else CenterTMA[i] = 0;
if (Bars - i > HalfTMAPeriod + TMAPeriod + 2) {
CalcTMAlines(i);
return;
}
HalfTMA[i] = 0;
}
void f0_5(int i) {
int li_4;
int count_8;
int counted_bars;
int limit;
double ld_20;
switch (TMAPrice) {
case 0:
CenterTMA[i] = iMA(NULL, 0, TMAPeriod + 1, 0, MODE_LWMA, PRICE_CLOSE, i);
break;
case 1:
CenterTMA[i] = iMA(NULL, 0, TMAPeriod + 1, 0, MODE_LWMA, PRICE_OPEN, i);
break;
case 4:
CenterTMA[i] = iMA(NULL, 0, TMAPeriod + 1, 0, MODE_LWMA, PRICE_MEDIAN, i);
break;
case 5:
CenterTMA[i] = iMA(NULL, 0, TMAPeriod + 1, 0, MODE_LWMA, PRICE_TYPICAL, i);
break;
case 6:
CenterTMA[i] = iMA(NULL, 0, TMAPeriod + 1, 0, MODE_LWMA, PRICE_WEIGHTED, i);
break;
default:
CenterTMA[i] = iMA(NULL, 0, TMAPeriod + 1, 0, MODE_LWMA, PRICE_OPEN, i);
}
for (int x = i + TMAPeriod + 2; x > i; x--) {
ld_20 = 0.0;
li_4 = 0;
count_8 = 0;
counted_bars = x + TMAPeriod;
limit = x - TMAPeriod;
if (limit < i) limit = i;
while (counted_bars >= x) {
count_8++;
ld_20 += count_8 * f0_2(counted_bars);
li_4 += count_8;
counted_bars--;
}
while (counted_bars >= limit) {
count_8--;
ld_20 += count_8 * f0_2(counted_bars);
li_4 += count_8;
counted_bars--;
}
CenterTMA[x] = ld_20 / li_4;
}
}
double f0_2(int i) {
switch (TMAPrice) {
case 0:
return (Close[i]);
case 1:
return (Open[i]);
case 4:
return ((High[i] + Low[i]) / 2.0);
case 5:
return ((Close[i] + High[i] + Low[i]) / 3.0);
case 6:
return ((2.0 * Close[i] + High[i] + Low[i]) / 4.0);
}
return (Open[i]);
}
void CalcTMAlines(int i) {
double ld_4;
double ld_12;
for (int k = i + TMAPeriod + 2; k >= i; k--) {
ld_4 = CenterTMA[ArrayMaximum(CenterTMA, HalfTMAPeriod, k)];
ld_12 = CenterTMA[ArrayMinimum(CenterTMA, HalfTMAPeriod, k)];
HalfTMA[k] = ((Backstep + 2) * 2 * CenterTMA[k] - (ld_4 + ld_12)) / 2.0 / (Backstep + 1);
}
}
void ManageZigZag(int i) {
int li_4;
int j;
int counted_bars;
int index_16;
int k = i - 1;
int li_24 = 0;
int li_28 = 0;
while (k < gi_144 && counted_bars == 0) {
k++;
ZIGZAG[k] = 0;
li_4 = k - Deviation;
if (li_4 < i) li_4 = i;
j = k + Deviation;
if (k == ArrayMinimum(HalfTMA, j - li_4 + 1, li_4)) {
counted_bars = -1;
li_24 = k;
}
if (k == ArrayMaximum(HalfTMA, j - li_4 + 1, li_4)) {
counted_bars = 1;
li_28 = k;
}
}
if (counted_bars != 0) {
index_16 = 0;
if (k > i) {
if (HalfTMA[k] > HalfTMA[i]) {
if (counted_bars == 1) {
if (k >= i + Deviation && index_16 < 5) {
index_16++;
gia_136[index_16] = k;
}
li_28 = k;
ZIGZAG[k] = HalfTMA[k];
}
} else {
if (counted_bars == -1) {
if (k >= i + Deviation && index_16 < 5) {
index_16++;
gia_136[index_16] = k;
}
li_24 = k;
ZIGZAG[k] = HalfTMA[k];
}
}
}
while (k < gi_160 || index_16 < 5) {
ZIGZAG[k] = 0;
li_4 = k - Deviation;
if (li_4 < i) li_4 = i;
j = k + Deviation;
if (k == ArrayMinimum(HalfTMA, j - li_4 + 1, li_4)) {
if (counted_bars == -1 && HalfTMA[k] < HalfTMA[li_24]) {
if (k >= i + Deviation && index_16 < 5) gia_136[index_16] = k;
ZIGZAG[li_24] = 0;
ZIGZAG[k] = HalfTMA[k];
li_24 = k;
}
if (counted_bars == 1) {
if (k >= i + Deviation && index_16 < 5) {
index_16++;
gia_136[index_16] = k;
}
ZIGZAG[k] = HalfTMA[k];
counted_bars = -1;
li_24 = k;
}
}
if (k == ArrayMaximum(HalfTMA, j - li_4 + 1, li_4)) {
if (counted_bars == 1 && HalfTMA[k] > HalfTMA[li_28]) {
if (k >= i + Deviation && index_16 < 5) gia_136[index_16] = k;
ZIGZAG[li_28] = 0;
ZIGZAG[k] = HalfTMA[k];
li_28 = k;
}
if (counted_bars == -1) {
if (k >= i + Deviation && index_16 < 5) {
index_16++;
gia_136[index_16] = k;
}
ZIGZAG[k] = HalfTMA[k];
counted_bars = 1;
li_28 = k;
}
}
k++;
if (k > gi_144) return;
}
gi_152 = Bars - gia_136[5];
ZIGZAG[i] = HalfTMA[i];
return;
}
}
void ManageArrowsZones(int i) {
int li_4;
int j;
int counted_bars;
int index_16;
int k = i - 1;
int li_24 = 0;
int Показано первые 50% кода (символов: 7689)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.