super scalping future.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «super scalping future.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор для MetaTrader 5 рассчитывает корреляцию рангов Спирмена (Spearman Rank Correlation) ценовых данных за 14 баров. Основное значение индикатора (буфер 0) отображает коэффициент корреляции, ограниченный диапазоном от -1.0 до 1.0, и отрисовывается в виде линии на графике. Для расчёта используются вспомогательные буферы: сначала вычисляется сглаженная скользящая средняя LWMA с дополнительным весовым сглаживанием, затем применяется собственная сглаживающая формула, после чего производится ранжирование значений и расчёт корреляции Спирмена.
Индикатор генерирует визуальные сигналы при пересечении пороговых уровней 0.8 и -0.8: при переходе корреляции через 0.8 рисуется стрелка продажи, при переходе через -0.8 — стрелка покупки. Также на графике выводится текстовая метка с текущим состоянием сигнала (Ожидание/Покупка/Продажа). При появлении сигнала на текущем баре вызывается функция уведомлений с информацией о цене и стоп-лоссе.
Дополнительно индикатор рисует горизонтальные уровни 0.8 и -0.8 для наглядности пороговых значений. Параметр FilterPeriod влияет на период фильтрации при сглаживании, а параметр SL_distance_pips задаёт расстояние стоп-лосса в пунктах, используемое при формировании сигнала.
Настройки программы
| Настройка | Описание |
|---|---|
| FilterPeriod | Период фильтрации — Период фильтрации, используемый при сглаживании вспомогательного буфера индикатора (по умолчанию 22). |
| SL attaalums no kanaala aarmalaam (SL_distance_pips) | Расстояние стоп-лосса в пунктах — Расстояние стоп-лосса в пунктах, применяемое при формировании торговых сигналов (по умолчанию 20). |
Поиск по коду файла
#property indicator_chart_window
#property indicator_minimum -1.2
#property indicator_maximum 1.2
#property indicator_buffers 1 // bija 1
#property indicator_color1 Blue
#property indicator_width1 3
#property indicator_style1 STYLE_SOLID
#property indicator_levelcolor Lime // bija OrangeRed
#property indicator_level1 0.8
#property indicator_level2 -0.8
int pomul = 22;
extern int FilterPeriod = 22;
double ulinop = 1.0;
int cilik = 0;
extern int SL_distance_pips = 20; // SL attaalums no kanaala aarmalaam
double indic_buffer0[];
double indic_buffer1[];
double indic_buffer2[];
int iConst_14 = 14;
double dArray1[];
double dConst_pipDigits;
int iArray1[];
int iArray2[];
int iSignFlag = 0;
int iTimeBar0 = 0;
string indPrefix="www.mql54.com";
string nosaukums;
datetime lastAlertTime;
void displayAlert(string strMsg, double tp, double sl, double currPrice) {
if (Time[0] != lastAlertTime) {
lastAlertTime = Time[0];
string strSL, strTP, strCurr;
if (currPrice!=0) strCurr= " - price "+DoubleToStr(currPrice,4); else strCurr="";
if (tp!=0) strTP= ", TakeProfit on "+DoubleToStr(tp,4); else strTP="";
if (sl!=0) strSL= ", StopLoss on "+DoubleToStr(sl,4); else strSL="";
Alert("www.mql54.com "+strMsg+strCurr+strTP+strSL+" ", Symbol(), ", ", Period(), " minute chart");
}
}
void MartAxis(int ai_0) {
int li_4;
int l_count_8;
int li_12;
int li_16;
double ld_24;
switch (cilik) {
case 0:
indic_buffer1[ai_0] = iMA(NULL, 0, pomul + 1, 0, MODE_LWMA, PRICE_CLOSE, ai_0);
break;
case 1:
indic_buffer1[ai_0] = iMA(NULL, 0, pomul + 1, 0, MODE_LWMA, PRICE_OPEN, ai_0);
break;
case 2:
indic_buffer1[ai_0] = iMA(NULL, 0, pomul + 1, 0, MODE_LWMA, PRICE_HIGH, ai_0);
break;
case 3:
indic_buffer1[ai_0] = iMA(NULL, 0, pomul + 1, 0, MODE_LWMA, PRICE_LOW, ai_0);
break;
case 4:
indic_buffer1[ai_0] = iMA(NULL, 0, pomul + 1, 0, MODE_LWMA, PRICE_MEDIAN, ai_0);
break;
case 5:
indic_buffer1[ai_0] = iMA(NULL, 0, pomul + 1, 0, MODE_LWMA, PRICE_TYPICAL, ai_0);
break;
case 6:
indic_buffer1[ai_0] = iMA(NULL, 0, pomul + 1, 0, MODE_LWMA, PRICE_WEIGHTED, ai_0);
break;
default:
indic_buffer1[ai_0] = iMA(NULL, 0, pomul + 1, 0, MODE_LWMA, PRICE_WEIGHTED, ai_0);
}
for (int li_20 = ai_0 + pomul + 2; li_20 > ai_0; li_20--) {
ld_24 = 0.0;
li_4 = 0;
l_count_8 = 0;
li_12 = li_20 + pomul;
li_16 = li_20 - pomul;
if (li_16 < ai_0) li_16 = ai_0;
while (li_12 >= li_20) {
l_count_8++;
ld_24 += l_count_8 * SnakePrice(li_12);
li_4 += l_count_8;
li_12--;
}
while (li_12 >= li_16) {
l_count_8--;
ld_24 += l_count_8 * SnakePrice(li_12);
li_4 += l_count_8;
li_12--;
}
indic_buffer1[li_20] = ld_24 / li_4;
}
}
double SnakePrice(int ai_0) {
switch (cilik) {
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 SmoothOverMart(int ai_0) {
double ld_4 = indic_buffer1[ArrayMaximum(indic_buffer1, FilterPeriod, ai_0)];
double ld_12 = indic_buffer1[ArrayMinimum(indic_buffer1, FilterPeriod, ai_0)];
indic_buffer2[ai_0] = (2.0 * (ulinop + 2.0) * indic_buffer1[ai_0] - (ld_4 + ld_12)) / 2.0 / (ulinop + 1.0);
}
double SpearmanRankCorrelation(double ada_0[], int ai_4) {
double ld_16;
for (int l_index_24 = 0; l_index_24 < ai_4; l_index_24++) ld_16 += MathPow(ada_0[l_index_24] - l_index_24 - 1.0, 2);
double ld_ret_8 = 1 - 6.0 * ld_16 / (MathPow(ai_4, 3) - ai_4);
return (ld_ret_8);
}
void RankPrices(int aia_0[]) {
double ld_4;
double ld_12;
int l_index_24;
int li_32;
int li_36;
int li_40;
double lda_44[];
ArrayResize(lda_44, iConst_14);
ArrayCopy(iArray2, aia_0);
for (int l_index_20 = 0; l_index_20 < iConst_14; l_index_20++) lda_44[l_index_20] = l_index_20 + 1;
ArraySort(iArray2, WHOLE_ARRAY, 0, MODE_DESCEND);
for (l_index_20 = 0; l_index_20 < iConst_14 - 1; l_index_20++) {
if (iArray2[l_index_20] == iArray2[l_index_20 + 1]) {
li_32 = iArray2[l_index_20];
l_index_24 = l_index_20 + 1;
li_36 = 1;
ld_12 = l_index_20 + 1;
while (l_index_24 < iConst_14) {
if (iArray2[l_index_24] != li_32) break;
li_36++;
ld_12 += l_index_24 + 1;
l_index_24++;
}
ld_4 = li_36;
ld_12 /= ld_4;
for (int li_28 = l_index_20; li_28 < l_index_24; li_28++) lda_44[li_28] = ld_1Показано первые 50% кода (символов: 7494)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.