BuySellWait
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «scalping_future_.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для MetaTrader 4, который рассчитывает аналитическое значение на основе линейно-взвешенной скользящей средней (LWMA) и ценовых данных. Результат отображается в виде линии на графике в диапазоне от -1 до 1 с дополнительными уровнями на отметках 0.8 и -0.8.
Индикатор генерирует сигналы Buy и Sell при пересечении пороговых значений 0.8 и -0.8 соответственно. Сигналы визуализируются с помощью стрелок на графике, а текущий статус (Buy, Sell или Wait) отображается текстовой меткой в окне индикатора.
При генерации сигнала индикатор может отправлять уведомления (Alert) с указанием направления сделки и уровня StopLoss. Параметр SL_distance_pips задаёт расстояние StopLoss в пунктах от текущей цены для формирования уровня в алертах.
Настройки программы
| Настройка | Описание |
|---|---|
| FilterPeriod | FilterPeriod — Период скользящей средней и фильтра, используемых в расчёте индикатора. Задаётся целым числом. |
| SL_distance_pips | SL_distance_pips — Расстояние StopLoss в пунктах, используемое при формировании уровней в сигнальных уведомлениях. Задаётся целым числом. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_minimum -1.2
#property indicator_maximum 1.2
#property indicator_levelcolor Lime
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 3
#property indicator_level1 0.8
#property indicator_level2 -0.8
int gi_76 = 22;
extern int FilterPeriod = 22;
double gd_84 = 1.0;
int gi_92 = 0;
extern int SL_distance_pips = 20;
double g_ibuf_100[];
double gda_104[];
double g_ibuf_108[];
int gi_112 = 14;
double gda_116[];
double gd_120;
int gia_128[];
int gia_132[];
int gi_136 = 0;
int g_time_140 = 0;
string gs_144 = "www.mql54.com";
string g_name_152;
datetime g_time_160;
void f0_7(string as_0, double ad_8, double ad_16, double ad_24) {
string ls_32;
string ls_40;
string ls_48;
if (Time[0] != g_time_160) {
g_time_160 = Time[0];
if (ad_24 != 0.0) ls_48 = " - price " + DoubleToStr(ad_24, 4);
else ls_48 = "";
if (ad_8 != 0.0) ls_40 = ", TakeProfit on " + DoubleToStr(ad_8, 4);
else ls_40 = "";
if (ad_16 != 0.0) ls_32 = ", StopLoss on " + DoubleToStr(ad_16, 4);
else ls_32 = "";
Alert("www.mql54.com " + as_0 + ls_48 + ls_40 + ls_32 + " ", Symbol(), ", ", Period(), " minute chart");
}
}
void f0_0(int ai_0) {
int li_4;
int count_8;
int li_12;
int li_16;
double ld_20;
switch (gi_92) {
case 0:
gda_104[ai_0] = iMA(NULL, 0, gi_76 + 1, 0, MODE_LWMA, PRICE_CLOSE, ai_0);
break;
case 1:
gda_104[ai_0] = iMA(NULL, 0, gi_76 + 1, 0, MODE_LWMA, PRICE_OPEN, ai_0);
break;
case 2:
gda_104[ai_0] = iMA(NULL, 0, gi_76 + 1, 0, MODE_LWMA, PRICE_HIGH, ai_0);
break;
case 3:
gda_104[ai_0] = iMA(NULL, 0, gi_76 + 1, 0, MODE_LWMA, PRICE_LOW, ai_0);
break;
case 4:
gda_104[ai_0] = iMA(NULL, 0, gi_76 + 1, 0, MODE_LWMA, PRICE_MEDIAN, ai_0);
break;
case 5:
gda_104[ai_0] = iMA(NULL, 0, gi_76 + 1, 0, MODE_LWMA, PRICE_TYPICAL, ai_0);
break;
case 6:
gda_104[ai_0] = iMA(NULL, 0, gi_76 + 1, 0, MODE_LWMA, PRICE_WEIGHTED, ai_0);
break;
default:
gda_104[ai_0] = iMA(NULL, 0, gi_76 + 1, 0, MODE_LWMA, PRICE_WEIGHTED, ai_0);
}
for (int li_32 = ai_0 + gi_76 + 2; li_32 > ai_0; li_32--) {
ld_20 = 0.0;
li_4 = 0;
count_8 = 0;
li_12 = li_32 + gi_76;
li_16 = li_32 - gi_76;
if (li_16 < ai_0) li_16 = ai_0;
while (li_12 >= li_32) {
count_8++;
ld_20 += count_8 * f0_4(li_12);
li_4 += count_8;
li_12--;
}
while (li_12 >= li_16) {
count_8--;
ld_20 += count_8 * f0_4(li_12);
li_4 += count_8;
li_12--;
}
gda_104[li_32] = ld_20 / li_4;
}
}
double f0_4(int ai_0) {
switch (gi_92) {
case 0:
return (Close[ai_0]);
case 1:
return (Open[ai_0]);
case 2:
return (High[ai_0]);
case 3:
return (Low[ai_0]);
case 4:
return ((High[ai_0] + Low[ai_0]) / 2.0);
case 5:
return ((Close[ai_0] + High[ai_0] + Low[ai_0]) / 3.0);
case 6:
return ((2.0 * Close[ai_0] + High[ai_0] + Low[ai_0]) / 4.0);
}
return (Close[ai_0]);
}
void f0_8(int ai_0) {
double ld_4 = gda_104[ArrayMaximum(gda_104, FilterPeriod, ai_0)];
double ld_12 = gda_104[ArrayMinimum(gda_104, FilterPeriod, ai_0)];
g_ibuf_108[ai_0] = (2.0 * (gd_84 + 2.0) * gda_104[ai_0] - (ld_4 + ld_12)) / 2.0 / (gd_84 + 1.0);
}
double f0_1(double ada_0[], int ai_4) {
double ld_8;
for (int index_16 = 0; index_16 < ai_4; index_16++) ld_8 += MathPow(ada_0[index_16] - index_16 - 1.0, 2);
double ld_ret_20 = 1 - 6.0 * ld_8 / (MathPow(ai_4, 3) - ai_4);
return (ld_ret_20);
}
void f0_5(int aia_0[]) {
double ld_4;
double ld_12;
int index_20;
int li_24;
int li_28;
int li_32;
double lda_36[];
ArrayResize(lda_36, gi_112);
ArrayCopy(gia_132, aia_0);
for (int index_40 = 0; index_40 < gi_112; index_40++) lda_36[index_40] = index_40 + 1;
ArraySort(gia_132, WHOLE_ARRAY, 0, MODE_DESCEND);
for (index_40 = 0; index_40 < gi_112 - 1; index_40++) {
if (gia_132[index_40] == gia_132[index_40 + 1]) {
li_24 = gia_132[index_40];
index_20 = index_40 + 1;
li_28 = 1;
ld_12 = index_40 + 1;
while (index_20 < gi_112) {
if (gia_132[index_20] != li_24) break;
li_28++;
ld_12 += index_20 + 1;
index_20++;
}
ld_4 = li_28;
ld_12 /= ld_4;
for (int li_44 = index_40; li_44 < index_20; li_44++) lda_36[li_44] = ld_12;
index_40 = iПоказано первые 50% кода (символов: 6658)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.