Point Zero
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pointzero.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Point Zero — это пользовательский индикатор для платформы MetaTrader 5, который отображает аналитические данные на графике через восемь индикаторных буферов: гистограммы, линии и стрелки. Индикатор получает значения от стороннего индикатора PointZeroOscillator (имя настраивается параметром), вычисляет уровень канала на основе ATR, а также использует параболический SAR для определения стоп-уровней.
Индикатор определяет направление тренда (рост или падение) путём сравнения значений пользовательского осциллятора и положения SAR относительно ценовых экстремумов. При смене тренда на графике отображаются сигнальные стрелки и обновляются линии канала.
Point Zero поддерживает три типа уведомлений: информационный комментарий прямо на графике, всплывающие десктопные оповещения и email-рассылку — все они срабатывают при смене направления тренда. Расчёт можно включить только на закрытии бара.
Индикатор не содержит встроенных торговых функций и не отправляет ордера. Все входные параметры настраиваются через панель свойств, включая чувствительность, размер канала и типы уведомлений.
Настройки программы
| Настройка | Описание |
|---|---|
| CalculateOnBarClose | Расчёт при закрытии бара — Переключатель расчёта индикатора только при закрытии свечи. При значении TRUE расчёт запускается на закрытии бара, при FALSE — в процессе формирования. |
| Signals | Отображение сигналов — Переключатель отображения сигнальных стрелок на графике при смене направления тренда. При значении FALSE стрелки не отрисовываются. |
| ChannelPeriod | Период канала — Целочисленный параметр, передаваемый в сторонний индикатор PointZeroOscillator для задания периода расчёта канала. |
| ChannelSize | Размер канала — Целочисленный множитель ширины канала, используемый для расчёта отступа на основе значения ATR(30). При значении меньше 1 автоматически устанавливается в 1. |
| Sensitivity | Чувствительность — Целочисленный параметр чувствительности (1–5), определяющий коэффициенты SAR (gd_164 и gd_172) и, соответственно, скорость реакции на изменение тренда. По умолчанию — 4. |
| DisplayAlerts | Десктопные оповещения — Переключатель всплывающих десктопных оповещений. При значении TRUE пользователь получает уведомления при смене направления тренда. |
| EmailAlerts | Email-оповещения — Переключатель email-рассылки. При значении TRUE отправляется письмо с уведомлением о смене направления тренда на текущем инструменте. |
| AlertCaption | Заголовок оповещения — Заголовок текстового поля для персонализации текстовых оповещений, отображаемых при смене тренда. |
| ???????? 2-??? ?????????? (NameSecondIndi) | Имя второго индикатора — Имя стороннего индикатора, значения которого (по индексам 6 и 7) используются для определения направления тренда. По умолчанию — PointZeroOscillator. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 LightBlue
#property indicator_color2 LightPink
#property indicator_color3 LightBlue
#property indicator_color4 LightPink
#property indicator_color5 DeepSkyBlue
#property indicator_color6 Tomato
#property indicator_color7 Blue
#property indicator_color8 Tomato
int gia_76[] = {33, 42, 39, 40, 41, 59, 58, 64, 38, 61, 43, 36, 47, 63, 35, 91, 93};
extern bool CalculateOnBarClose = TRUE;
extern bool Signals = TRUE;
extern int ChannelPeriod = 5;
extern int ChannelSize = 2;
extern int Sensitivity = 4;
extern bool DisplayAlerts = FALSE;
extern bool EmailAlerts = FALSE;
extern string AlertCaption = "My Alert Name";
double g_ibuf_116[];
double g_ibuf_120[];
double g_ibuf_124[];
double g_ibuf_128[];
double g_ibuf_132[];
double g_ibuf_136[];
double g_ibuf_140[];
double g_ibuf_144[];
int g_count_148 = 0;
int g_count_152 = 0;
int gi_156 = EMPTY_VALUE;
int gi_160 = EMPTY_VALUE;
double gd_164;
double gd_172;
string gs_188;
string gs_196;
datetime g_time_204;
int gi_208 = 1;
int gi_212 = EMPTY_VALUE;
extern string NameSecondIndi = "PointZeroOscillator"; // ???????? 2-??? ??????????
string f0_8(string as_0) {
int lia_36[16];
int lia_40[16];
int lia_52[4];
string ls_64;
int li_72;
int str_len_8 = StringLen(as_0);
int li_12 = str_len_8 % 64;
int li_16 = (str_len_8 - li_12) / 64;
datetime lt_20 = D'26.11.2024 02:23:13';
int li_24 = -271733879;
int li_28 = -1732584194;
int li_32 = 271733878;
for (int count_44 = 0; count_44 < li_16; count_44++) {
ls_64 = StringSubstr(as_0, count_44 * 64, 64);
f0_6(lia_36, ls_64);
f0_14(lt_20, li_24, li_28, li_32, lia_36);
}
ArrayInitialize(lia_40, 0);
ArrayInitialize(lia_52, 0);
int li_56 = 0;
if (li_12 > 0) {
li_72 = li_12 % 4;
li_16 = li_12 - li_72;
if (li_16 > 0) {
ls_64 = StringSubstr(as_0, count_44 * 64, li_16);
li_56 = f0_6(lia_40, ls_64);
}
for (int index_48 = 0; index_48 < li_72; index_48++) lia_52[index_48] = StringGetChar(as_0, count_44 * 64 + li_16 + index_48);
}
lia_52[index_48] = 128;
lia_40[li_56] = f0_22(lia_52);
if (li_12 >= 56) {
f0_14(lt_20, li_24, li_28, li_32, lia_40);
ArrayInitialize(lia_40, 0);
}
lia_40[14] = str_len_8 * 8;
lia_40[15] = str_len_8 >> 1 & EMPTY_VALUE >> 28;
f0_14(lt_20, li_24, li_28, li_32, lia_40);
return (StringConcatenate(f0_7(lt_20), f0_7(li_24), f0_7(li_28), f0_7(li_32)));
}
int f0_9(int ai_0, int ai_4, int ai_8) {
return (ai_0 & ai_4 | ai_0 & ai_8);
}
int f0_23(int ai_0, int ai_4, int ai_8) {
return (ai_0 & ai_8 | ai_4 & ai_8);
}
int f0_18(int ai_0, int ai_4, int ai_8) {
return (ai_0 ^ ai_4 ^ ai_8);
}
int f0_20(int ai_0, int ai_4, int ai_8) {
return (ai_4 ^ ai_0 | ai_8);
}
int f0_13(int ai_0, int ai_4) {
int li_ret_8 = ai_0 + ai_4;
return (li_ret_8);
}
int f0_3(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24) {
ai_0 = f0_13(ai_0, f0_13(f0_13(f0_9(ai_4, ai_8, ai_12), ai_16), ai_24));
return (f0_13(f0_12(ai_0, ai_20), ai_4));
}
int f0_11(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24) {
ai_0 = f0_13(ai_0, f0_13(f0_13(f0_23(ai_4, ai_8, ai_12), ai_16), ai_24));
return (f0_13(f0_12(ai_0, ai_20), ai_4));
}
int f0_24(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24) {
ai_0 = f0_13(ai_0, f0_13(f0_13(f0_18(ai_4, ai_8, ai_12), ai_16), ai_24));
return (f0_13(f0_12(ai_0, ai_20), ai_4));
}
int f0_4(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24) {
ai_0 = f0_13(ai_0, f0_13(f0_13(f0_20(ai_4, ai_8, ai_12), ai_16), ai_24));
return (f0_13(f0_12(ai_0, ai_20), ai_4));
}
int f0_12(int ai_0, int ai_4) {
if (ai_4 == 32) return (ai_0);
int li_ret_8 = ai_0 << ai_4 | ai_0 >> 1 & EMPTY_VALUE >> (31 - ai_4);
return (li_ret_8);
}
int f0_6(int &aia_0[16], string as_4) {
int li_12 = StringLen(as_4);
if (li_12 % 4 != 0) li_12 -= li_12 % 4;
int arr_size_24 = ArraySize(aia_0);
if (arr_size_24 < li_12 / 4) ArrayResize(aia_0, li_12 / 4);
int index_16 = 0;
for (int li_20 = 0; li_20 < li_12; li_20 += 4) {
aia_0[index_16] = StringGetChar(as_4, li_20) | (StringGetChar(as_4, li_20 + 1) * 256) | StringGetChar(as_4, li_20 + 2) << 16 | StringGetChar(as_4, li_20 + 3) << 24;
index_16++;
}
return (li_12 / 4);
}
string f0_7(int ai_0) {
string ls_12;
int lia_20[4];
string str_concat_4 = "";
lia_20[0] = ai_0 & 255;
for (int li_24 = 1; li_24 < 4; li_24++) lia_20[li_24] = ai_0 >> 1 & EMPTY_VALUE >> (li_24 * 8 - 1) & 255;
for (int index_28 = 0; index_28 < 4; index_28++) {
ls_12 = f0_16(lia_20[index_28]);
str_concat_4 = StringConcatenate(str_concat_4, ls_12);
}
return (str_concat_4);
}
string f0_16(int ai_0) {
int li_4;
string str_concat_8;
for (int count_16 = 0; count_16 < 2; count_16++) {
li_4 = ai_0 % 16;
ai_0 = (ai_0 - li_4) / 16;
str_concat_8 = StringConcatenate(f0_17(li_4), str_concat_8);
}
return (str_concat_8);
}
string f0_17(int ai_0) {
int li_12;
string ls_4 = "0";
if (ai_0 < 10) li_12 = ai_0 + 48;
else li_12 = ai_0 + 97 - 10;
return (StringSetChar(ls_4, 0, li_12));
}
int f0_22(int aia_0[4]) {
return (aia_0[0] | (aia_0[1] * 256) | aia_0[2] << 16 | aia_0[3] << 24);
}
void f0_14(int &ai_0, int &ai_4, int &ai_8, int &ai_12, int aia_16[16]) {
int li_36 = 7;
int li_40 = 12;
int li_44 = 17;
int li_48 = 22;
int li_52 = 5;
int li_56 = 9;
int li_60 = 14;
int li_64 = 20;
int li_68 = 4;
int li_72 = 11;
int li_76 = 16;
int li_80 = 23;
int li_84 = 6;
int li_88 = 10;
int li_92 = 15;
int li_96 = 21;
int li_20 = ai_0;
int li_24 = ai_4;
int li_28 = ai_8;
int li_32 = ai_12;
ai_0 = f0_3(ai_0, ai_4, ai_8, ai_12, aia_16[0], li_36, -680876936);
ai_12 = f0_3(ai_12, ai_0, ai_4, ai_8, aia_16[1], li_40, -389564586);
ai_8 = f0_3(ai_8, ai_12, ai_0, ai_4, aia_16[2], li_44, 606105819);
ai_4 = f0_3(ai_4, ai_8, ai_12, ai_0, aia_16[3], li_48, -1044525330);
ai_0 = f0_3(ai_0, ai_4, ai_8, ai_12, aia_16[4], li_36, -176418897);
ai_12 = f0_3(ai_12, ai_0, ai_4, ai_8, aia_16[5], li_40, D'11.01.2008 20:40:26');
ai_8 = f0_3(ai_8, ai_12, ai_0, ai_4, aia_16[6], li_44, -1473231341);
ai_4 = f0_3(ai_4, ai_8, ai_12, ai_0, aia_16[7], li_48, -45705983);
ai_0 = f0_3(ai_0, ai_4, ai_8, ai_12, aia_16[8], li_36, D'02.02.2026 13:30:16');
ai_12 = f0_3(ai_12, ai_0, ai_4, ai_8, aia_16[9], li_40, -1958414417);
ai_8 = f0_3(ai_8, ai_12, ai_0, ai_4, aia_16[10], li_44, -42063);
ai_4 = f0_3(ai_4, ai_8, ai_12, ai_0, aia_16[11], li_48, -1990404162);
ai_0 = f0_3(ai_0, ai_4, ai_8, ai_12, aia_16[12], li_36, D'09.03.2027 15:48:02');
ai_12 = f0_3(ai_12, ai_0, ai_4, ai_8, aia_16[13], li_40, -40341101);
ai_8 = f0_3(ai_8, ai_12, ai_0, ai_4, aia_16[14], li_44, -1502002290);
ai_4 = f0_3(ai_4, ai_8, ai_12, ai_0, aia_16[15], li_48, D'08.03.2009 20:02:09');
ai_0 = f0_11(ai_0, ai_4, ai_8, ai_12, aia_16[1], li_52, -165796510);
ai_12 = f0_11(ai_12, ai_0, ai_4, ai_8, aia_16[6], li_56, -1069501632);
ai_8 = f0_11(ai_8, ai_12, ai_0, ai_4, aia_16[11], li_60, 643717713);
ai_4 = f0_11(ai_4, ai_8, ai_12, ai_0, aia_16[0], li_64, -373897302);
ai_0 = f0_11(ai_0, ai_4, ai_8, ai_12, aia_16[5], li_52, -701558691);
ai_12 = f0_11(ai_12, ai_0, ai_4, ai_8, aia_16[10], li_56, 38016083);
ai_8 = f0_11(ai_8, ai_12, ai_0, ai_4, aia_16[15], li_60, -660478335);
ai_4 = f0_11(ai_4, ai_8, ai_12, ai_0, aia_16[4], li_64, -405537848);
ai_0 = f0_11(ai_0, ai_4, ai_8, ai_12, aia_16[9], li_52, 568446438);
ai_12 = f0_11(ai_12, ai_0, ai_4, ai_8, aia_16[14], li_56, -1019803690);
ai_8 = f0_11(ai_8, ai_12, ai_0, ai_4, aia_16[3], li_60, -187363961);
ai_4 = f0_11(ai_4, ai_8, ai_12, ai_0, aia_16[8], li_64, D'14.11.2006 20:11:41');
ai_0 = f0_11(ai_0, ai_4, ai_8, ai_12, aia_16[13], li_52, -1444681467);
ai_12 = f0_11(ai_12, ai_0, ai_4, ai_8, aia_16[2], li_56, -51403784);
ai_8 = f0_11(ai_8, ai_12, ai_0, ai_4, aia_16[7], li_60, D'27.12.2024 20:41:13');
ai_4 = f0_11(ai_4, ai_8, ai_12, ai_0, aia_16[12], li_64, -1926607734);
ai_0 = f0_24(ai_0, ai_4, ai_8, ai_12, aia_16[5], li_68, -378558);
ai_12 = f0_24(ai_12, ai_0, ai_4, ai_8, aia_16[8], li_72, -2022574463);
ai_8 = f0_24(ai_8, ai_12, ai_0, ai_4, aia_16[11], li_76, D'11.04.2028 03:49:22');
ai_4 = f0_24(ai_4, ai_8, ai_12, ai_0, aia_16[14], li_80, -35309556);
ai_0 = f0_24(ai_0, ai_4, ai_8, ai_12, aia_16[1], li_68, -1530992060);
ai_12 = f0_24(ai_12, ai_0, ai_4, ai_8, aia_16[4], li_72, D'03.05.2010 15:29:13');
ai_8 = f0_24(ai_8, ai_12, ai_0, ai_4, aia_16[7], li_76, -155497632);
ai_4 = f0_24(ai_4, ai_8, ai_12, ai_0, aia_16[10], li_80, -1094730640);
ai_0 = f0_24(ai_0, ai_4, ai_8, ai_12, aia_16[13], li_68, 681279174);
ai_12 = f0_24(ai_12, ai_0, ai_4, ai_8, aia_16[0], li_72, -358537222);
ai_8 = f0_24(ai_8, ai_12, ai_0, ai_4, aia_16[3], li_76, -722521979);
ai_4 = f0_24(ai_4, ai_8, ai_12, ai_0, aia_16[6], li_80, 76029189);
ai_0 = f0_24(ai_0, ai_4, ai_8, ai_12, aia_16[9], li_68, -640364487);
ai_12 = f0_24(ai_12, ai_0, ai_4, ai_8, aia_16[12], li_72, -421815835);
ai_8 = f0_24(ai_8, ai_12, ai_0, ai_4, aia_16[15], li_76, 530742520);
ai_4 = f0_24(ai_4, ai_8, ai_12, ai_0, aia_16[2], li_80, -995338651);
ai_0 = f0_4(ai_0, ai_4, ai_8, ai_12, aia_16[0], li_84, -198630844);
ai_12 = f0_4(ai_12, ai_0, ai_4, ai_8, aia_16[7], li_88, D'16.09.2005 19:23:35');
ai_8 = f0_4(ai_8, ai_12, ai_0, ai_4, aia_16[14], li_92, -1416354905);
ai_4 = f0_4(ai_4, ai_8, ai_12, ai_0, aia_16[5], li_96, -57434055);
ai_0 = f0_4(ai_0, ai_4, ai_8, ai_12, aia_16[12], li_84, D'20.11.2023 14:06:11');
ai_12 = f0_4(ai_12, ai_0, ai_4, ai_8, aia_16[3], li_88, -1894986606);
ai_8 = f0_4(ai_8, ai_12, ai_0, ai_4, aia_16[10], li_92, -1051523);
ai_4 = f0_4(ai_4, ai_8, ai_12, ai_0, aia_16[1], li_96, -2054922799);
ai_0 = f0_4(ai_0, ai_4, ai_8, ai_12, aia_16[8], li_84, D'12.05.2029 22:49:19');
ai_12 = f0_4(ai_12, ai_0, ai_4, ai_8, aia_16[15], li_88, -30611744);
ai_8 = f0_4(ai_8, ai_12, ai_0, ai_4, aia_16[6], li_92, -1560198380);
ai_4 = f0_4(ai_4, ai_8, ai_12, ai_0, aia_16[13], li_96, D'27.06.2011 07:14:09');
ai_0 = f0_4(ai_0, ai_4, ai_8, ai_12, aia_16[4], li_84, -145523070);
ai_12 = f0_4(ai_12, ai_0, ai_4, ai_8, aia_16[11], li_88, -1120210379);
ai_8 = f0_4(ai_8, ai_12, ai_0, ai_4, aia_16[2], li_92, 718787259);
ai_4 = f0_4(ai_4, ai_8, ai_12, ai_0, aia_16[9], li_96, -343485551);
ai_0 = f0_13(ai_0, li_20);
ai_4 = f0_13(ai_4, li_24);
ai_8 = f0_13(ai_8, li_28);
ai_12 = f0_13(ai_12, li_32);
}
int init() {
// код доступен только после оплаты
}
string lsa_4[256];
IndicatorBuffers(8);
SeПоказано первые 50% кода (символов: 16216)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.