Point Zero Oscillator
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pointzerooscillator.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Point Zero Oscillator — это пользовательский индикатор для MetaTrader 5, отображающий два гистограммных столбца в отдельном окне. Индикатор рассчитывает сглаженные скользящие средние (SMMA) по ценам Close, Low, Open и High с заданным периодом, а затем формирует осцилляционные значения на основе соотношения промежуточных средних значений.
В первом проходе вычисляются четыре линии SMMA и на их основе определяются верхние и нижние границы текущего диапазона. Во втором проходе рассчитываются SMMA от промежуточных буферов с периодом, равным трети от OsPeriod (с минимумом 2), и формируются два столбца гистограммы, отражающие направление изменения разницы между средними значениями.
Индикатор имеет два настраиваемых параметра: период расчёта OsPeriod и переключатель CalculateOnBarClose, определяющий момент пересчёта. Название индикатора в графике формируется автоматически с указанием установленного периода.
Настройки программы
| Настройка | Описание |
|---|---|
| CalculateOnBarClose | Переключатель, определяющий, будет ли индикатор пересчитываться при закрытии бара. При значении TRUE расчёт выполняется только на закрытии свечи, при FALSE — на каждом тике. |
| OsPeriod | Целочисленный параметр, задающий период для расчёта сглаженных скользящих средних (SMMA) по ценовым данным. Используется как основа для формирования осцилляционных значений индикатора. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Red
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 int OsPeriod = 20;
double g_ibuf_88[];
double g_ibuf_92[];
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
double g_ibuf_108[];
double g_ibuf_112[];
double g_ibuf_116[];
int g_period_120 = 2;
string f0_5(string as_0) {
int lia_36[16];
int lia_40[16];
int lia_52[16];
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_3(lia_36, ls_64);
f0_10(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_3(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_16(lia_52);
if (li_12 >= 56) {
f0_10(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_10(lt_20, li_24, li_28, li_32, lia_40);
return (StringConcatenate(f0_4(lt_20), f0_4(li_24), f0_4(li_28), f0_4(li_32)));
}
int f0_6(int ai_0, int ai_4, int ai_8) {
return (ai_0 & ai_4 | ai_0 & ai_8);
}
int f0_17(int ai_0, int ai_4, int ai_8) {
return (ai_0 & ai_8 | ai_4 & ai_8);
}
int f0_14(int ai_0, int ai_4, int ai_8) {
return (ai_0 ^ ai_4 ^ ai_8);
}
int f0_15(int ai_0, int ai_4, int ai_8) {
return (ai_4 ^ ai_0 | ai_8);
}
int f0_9(int ai_0, int ai_4) {
int li_ret_8 = ai_0 + ai_4;
return (li_ret_8);
}
int f0_1(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24) {
ai_0 = f0_9(ai_0, f0_9(f0_9(f0_6(ai_4, ai_8, ai_12), ai_16), ai_24));
return (f0_9(f0_8(ai_0, ai_20), ai_4));
}
int f0_7(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24) {
ai_0 = f0_9(ai_0, f0_9(f0_9(f0_17(ai_4, ai_8, ai_12), ai_16), ai_24));
return (f0_9(f0_8(ai_0, ai_20), ai_4));
}
int f0_18(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24) {
ai_0 = f0_9(ai_0, f0_9(f0_9(f0_14(ai_4, ai_8, ai_12), ai_16), ai_24));
return (f0_9(f0_8(ai_0, ai_20), ai_4));
}
int f0_2(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24) {
ai_0 = f0_9(ai_0, f0_9(f0_9(f0_15(ai_4, ai_8, ai_12), ai_16), ai_24));
return (f0_9(f0_8(ai_0, ai_20), ai_4));
}
int f0_8(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_3(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_4(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_12(lia_20[index_28]);
str_concat_4 = StringConcatenate(str_concat_4, ls_12);
}
return (str_concat_4);
}
string f0_12(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_13(li_4), str_concat_8);
}
return (str_concat_8);
}
string f0_13(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_16(int aia_0[4]) {
return (aia_0[0] | (aia_0[1] * 256) | aia_0[2] << 16 | aia_0[3] << 24);
}
void f0_10(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_1(ai_0, ai_4, ai_8, ai_12, aia_16[0], li_36, -680876936);
ai_12 = f0_1(ai_12, ai_0, ai_4, ai_8, aia_16[1], li_40, -389564586);
ai_8 = f0_1(ai_8, ai_12, ai_0, ai_4, aia_16[2], li_44, 606105819);
ai_4 = f0_1(ai_4, ai_8, ai_12, ai_0, aia_16[3], li_48, -1044525330);
ai_0 = f0_1(ai_0, ai_4, ai_8, ai_12, aia_16[4], li_36, -176418897);
ai_12 = f0_1(ai_12, ai_0, ai_4, ai_8, aia_16[5], li_40, D'11.01.2008 20:40:26');
ai_8 = f0_1(ai_8, ai_12, ai_0, ai_4, aia_16[6], li_44, -1473231341);
ai_4 = f0_1(ai_4, ai_8, ai_12, ai_0, aia_16[7], li_48, -45705983);
ai_0 = f0_1(ai_0, ai_4, ai_8, ai_12, aia_16[8], li_36, D'02.02.2026 13:30:16');
ai_12 = f0_1(ai_12, ai_0, ai_4, ai_8, aia_16[9], li_40, -1958414417);
ai_8 = f0_1(ai_8, ai_12, ai_0, ai_4, aia_16[10], li_44, -42063);
ai_4 = f0_1(ai_4, ai_8, ai_12, ai_0, aia_16[11], li_48, -1990404162);
ai_0 = f0_1(ai_0, ai_4, ai_8, ai_12, aia_16[12], li_36, D'09.03.2027 15:48:02');
ai_12 = f0_1(ai_12, ai_0, ai_4, ai_8, aia_16[13], li_40, -40341101);
ai_8 = f0_1(ai_8, ai_12, ai_0, ai_4, aia_16[14], li_44, -1502002290);
ai_4 = f0_1(ai_4, ai_8, ai_12, ai_0, aia_16[15], li_48, D'08.03.2009 20:Показано первые 50% кода (символов: 10043)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.