zone indicator.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «zone indicator.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Это пользовательский индикатор для MetaTrader 4, отображающий ценовые зоны в виде прямоугольников на графике. Индикатор анализирует данные ценовых свечей и скользящие средние для определения уровней, разделяя зоны на две категории — покупочные и продажные, каждая из которых рисуется своим цветом. На графике создаются графические объекты: прямоугольники зон, пунктирные линии и текстовые метки с обозначениями. Внешний вид и расположение зон настраиваются через параметры индикатора.
Настройки программы
| Настройка | Описание |
|---|---|
| _ | Период определения зон — Текстовый параметр, задающий перечень допустимых таймфреймов для определения зон |
| TF | Таймфрейм — Целочисленный таймфрейм, на котором выполняется анализ ценовых данных |
| __ | Количество баров — Текстовый параметр, описывающий назначение параметра MaxBars |
| MaxBars | Максимальное количество баров — Ограничение числа баров, используемых при расчёте зон |
| Rcolor | Цвет зоны покупки — Цвет, используемый для отрисовки покупочных зон на графике |
| Scolor | Цвет зоны продажи — Цвет, используемый для отрисовки продажных зон на графике |
| TxtColor | Цвет текста — Цвет текстовых меток и линий, выводимых на графике |
| BackGround | Фоновый режим — Переключатель, определяющий, отображаются ли зоны на переднем или заднем плане графика |
| RectangleWidth | Толщина прямоугольника — Толщина линий прямоугольников зон в пунктах |
| RectangleStyle | Стиль прямоугольника — Стиль отрисовки линий прямоугольников зон |
| TxtSize | Размер текста — Размер шрифта текстовых меток на графике |
| ___ | Сдвиг зоны вправо — Текстовый параметр, описывающий сдвиг зон вправо по горизонтали |
| RectShift | Сдвиг зоны — Число баров, на которое зоны сдвигаются вправо от точки построения |
| ____ | Параметры определения АО — Текстовый параметр, обозначающий группу настроек скользящих средних |
| MA1 | Период первой MA — Первый период скользящей средней, используемый в расчётах |
| MA2 | Период второй MA — Второй период скользящей средней, используемый в расчётах |
| Metod_MA | Метод расчёта MA — Метод построения скользящей средней (например, SMA, EMA и т.д.) |
| Price_MA | Цена для MA — Тип цены, используемой для расчёта скользящих средних |
Поиск по коду файла
#property indicator_chart_window
extern string _ = "Период опр. зон (1-M1, 5-M5, 15-M15, 30-M30, 60-Н1, 240-Н4, 1440-D1, 10080-W1, 43200-MN1)";
extern int TF = 60;
extern string __ = "Кол-во баров в для определения зон";
extern int MaxBars = 1000;
extern color Rcolor = Red;
extern color Scolor = LimeGreen;
extern color TxtColor = DarkGray;
extern bool BackGround = FALSE;
extern int RectangleWidth = 2;
extern int RectangleStyle = 0;
extern int TxtSize = 8;
extern string ___ = "Сдвиг зоны право на RectShift баров";
extern int RectShift = 10;
extern string ____ = "Параметры определения АО";
extern int MA1 = 1;
extern int MA2 = 5;
extern int Metod_MA = 1;
extern int Price_MA = 0;
int Gi_164 = 4;
int Gi_168;
int Gi_172;
int G_bars_176;
int G_bars_180;
string Gs_184;
bool Gi_192;
int Gia_196[];
int Gia_200[];
double Gda_204[];
double Gda_208[];
string Gsa_212[];
int init() {
// код доступен только после оплаты
}
void deinit() {
for (int count_0 = 0; count_0 < MaxBars / 3; count_0++) {
ObjectDelete("R" + Gs_184 + count_0);
ObjectDelete("R" + Gs_184 + "t" + count_0);
ObjectDelete("R" + Gs_184 + "l" + count_0);
ObjectDelete("S" + Gs_184 + count_0);
ObjectDelete("S" + Gs_184 + "t" + count_0);
ObjectDelete("S" + Gs_184 + "l" + count_0);
}
}
int f0_3(int Ai_0) {
double Ld_4 = iMA(NULL, TF, MA1, 0, Metod_MA, Price_MA, Ai_0) - iMA(NULL, TF, MA2, 0, Metod_MA, Price_MA, Ai_0);
if (Ld_4 > Point / 2.0) return (1);
if (Ld_4 < (-Point) / 2.0) return (-1);
return (0);
}
int f0_1(int Ai_0) {
if (Ai_0 < iBars(Symbol(), TF) - 3) {
if (iHigh(NULL, TF, Ai_0 + 2) < iHigh(NULL, TF, Ai_0 + 1) && iHigh(NULL, TF, Ai_0 + 1) < iHigh(NULL, TF, Ai_0)) return (1);
return (0);
}
return (0);
}
int f0_2(int Ai_0) {
if (Ai_0 < iBars(Symbol(), TF) - 2) {
if (!(!iLow(NULL, TF, Ai_0 + 2) > iLow(NULL, TF, Ai_0 + 1) && iLow(NULL, TF, Ai_0 + 1) > iLow(NULL, TF, Ai_0))) return (1);
return (0);
}
return (0);
}
int f0_0(int Ai_0) {
if (iLow(NULL, TF, Ai_0) == iLow(NULL, TF, Ai_0 - 1)) Ai_0--;
if (Ai_0 > 3) {
if (!(!(iHigh(NULL, TF, Ai_0) < iHigh(NULL, TF, Ai_0 - 1) && iHigh(NULL, TF, Ai_0 - 1) < iHigh(NULL, TF, Ai_0 - 2)) || (iHigh(NULL, TF, Ai_0 - 1) < iHigh(NULL, TF,
Ai_0 - 2) && iHigh(NULL, TF, Ai_0 - 2) < iHigh(NULL, TF, Ai_0 - 3)))) return (1);
return (0);
}
return (0);
}
int f0_4(int Ai_0) {
if (iHigh(NULL, TF, Ai_0) == iHigh(NULL, TF, Ai_0 - 1)) Ai_0--;
if (Ai_0 > 3) {
if (!(!(iLow(NULL, TF, Ai_0) > iLow(NULL, TF, Ai_0 - 1) && iLow(NULL, TF, Ai_0 - 1) > iLow(NULL, TF, Ai_0 - 2)) || (iLow(NULL, TF, Ai_0 - 1) > iLow(NULL, TF, Ai_0 - 2) &&
iLow(NULL, TF, Ai_0 - 2) > iLow(NULL, TF, Ai_0 - 3)))) return (1);
return (0);
}
return (0);
}
int start() {
// код доступен только после оплаты
}
int index_0;
bool Li_4;
int highest_8;
int highest_12;
int Li_16;
int Li_20;
int highest_24;
int highest_28;
double Ld_32;
double Ld_40;
double ihigh_48;
double ilow_56;
double Ld_64;
bool bool_72;
bool bool_76;
bool Li_80;
bool Li_84;
G_bars_176 = Bars;
Gi_168 = iBars(Symbol(), TF);
if (Gi_172 != Gi_168 || Gi_192) {
Gi_192 = FALSE;
Gi_172 = Gi_168;
ArrayResize(Gia_196, 0);
ArrayResize(Gia_200, 0);
ArrayResize(Gda_204, 0);
ArrayResize(Gda_208, 0);
ArrayResize(Gsa_212, 0);
index_0 = 0;
if (MaxBars > Gi_168) MaxBars = Gi_168;
for (int Li_88 = f0_3(MaxBars); Li_88 == 0; Li_88 = f0_3(MaxBars)) MaxBars--;
Li_16 = MaxBars;
for (int Li_92 = MaxBars; Li_92 > 2; Li_92--) {
Li_80 = FALSE;
Li_84 = FALSE;
Li_20 = f0_3(Li_92);
bool_72 = f0_1(Li_92) && f0_4(Li_92);
bool_76 = f0_2(Li_92) && f0_0(Li_92);
if (bool_72) {
highest_24 = iHighest(NULL, TF, MODE_OPEN, 6, Li_92 - 3);
Ld_32 = iOpen(NULL, TF, highest_24);
highest_28 = iHighest(NULL, TF, MODE_CLOSE, 6, Li_92 - 3);
Ld_40 = iClose(NULL, TF, highest_28);
if (Ld_40 > Ld_32) highest_8 = highest_28;
else highest_8 = highest_24;
highest_8 = iHighest(NULL, TF, MODE_HIGH, 3, highest_8 - 1);
ihigh_48 = iHigh(NULL, TF, highest_8);
Li_80 = TRUE;
} else {
if (Li_20 != Li_88 && Li_20 != 0 && Li_88 > 0) {
if (Li_16 - Li_92 > 1) {
highest_24 = iHighest(NULL, TF, MODE_OPEN, Li_16 - Li_92, Li_92);
Ld_32 = iOpen(NULL, TF, highest_24);
highest_28 = iHighest(NULL, TF, MODE_CLOSE, Li_16 - Li_92, Li_92);
Ld_40 = iClose(NULL, TF, highest_28);
if (Ld_40 > Ld_32) highest_8 = highest_28;
else highest_8 = highest_24;
highest_8 = iHighest(NULL, TF, MODE_HIGH, 3, highest_8 - 1);
ihigh_48 = iHigh(NULL, TF, highest_8);
if (f0_1(highest_8) || f0_4(highest_8) || Li_16 - Li_92 > Gi_164) Li_80 = TRUE;
}
Li_88 = Li_20;
Li_16 = Li_92;
}
}
if (bool_76) {
highest_24 = iLowest(NULL, TF, MODE_OPEN, 6, Li_92 - 3);
Ld_32 = iOpen(NULL, TF, highest_24);
highest_28 = iLowest(NULL, TF, MODE_CLOSE, 6, Li_92 - 3);
Ld_40 = iClose(NULL, TF, highest_28);
if (Ld_40 < Ld_32) highest_12 = highest_28;
else highest_12 = highest_24;
ilow_56 = iLow(NULL, TF, highest_12);
Li_84 = TRUE;
} else {
if (Li_20 != Li_88 && Li_20 != 0 && Li_88 < 0) {
if (Li_16 - Li_92 > 1) {
highest_24 = iLowest(NULL, TF, MODE_OPEN, Li_16 - Li_92, Li_92);
Ld_32 = iOpen(NULL, TF, highest_24);
highest_28 = iLowest(NULL, TF, MODE_CLOSE, Li_16 - Li_92, Li_92);
Ld_40 = iClose(NULL, TF, highest_28);
if (Ld_40 < Ld_32) highest_12 = highest_28;
else highest_12 = highest_24;
highest_12 = iLowest(NULL, TF, MODE_LOW, 3, highest_12 - 1);
ilow_56 =Показано первые 50% кода (символов: 8847)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.