mtf_marsi_v0.20.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mtf_marsi_v0.20.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор представляет собой многофрейменный аналитический инструмент, рассчитывающий RSI и MARSI (скользящую среднюю RSI) на шести таймфреймах: M1, M5, M15, M30, H1 и H4. Основные линии RSI и MARSI текущего таймфрейма отображаются в отдельном окне графика, а также визуализируются горизонтальные цветные полосы, отражающие значения MARSI каждого фрейма.
Индикатор позволяет выбирать тип скользящей средней (SMA или EMA) для расчёта MARSI, настраивать периоды RSI и MARSI, размер шрифта, цвета линий и меток. Цветовая индикация автоматически меняется в зависимости от уровней перекупленности и перепроданности (70 и 30), что помогает визуальной оценке текущего состояния рынка.
Верхний предел индикатора установлен на уровне 100, нижний — на 0, что соответствует стандартному диапазону RSI. Все значения отображаются в виде текстовых меток на графике с настраиваемым позиционированием.
Настройки программы
| Настройка | Описание |
|---|---|
| RSIPeriod | Период RSI — Период расчёта индикатора RSI |
| MARSIPeriod | Период MARSI — Период скользящей средней для расчёта MARSI |
| Avalible: 0-SMA, 1-EMA (ModeMA) | Тип скользящей средней — Тип скользящей средней: 0 — SMA, 1 — EMA |
| showBars | Отображение полос — Включение отображения горизонтальных цветных полос по значениям MARSI (1 — включено) |
| fontsize | Размер шрифта — Размер шрифта для текстовых меток и подписей |
| Side | Сторона меток — Сторона размещения текстовых меток на графике (угол привязки) |
| Y | Вертикальное смещение — Вертикальное смещение текстовых меток от угла графика |
| X | Горизонтальное смещение — Горизонтальное смещение текстовых меток от угла графика |
| maRsiCoolor | Цвет линии MARSI — Цвет линии MARSI на графике |
| rsiCoolor | Цвет линии RSI — Цвет линии RSI на графике |
| BarLabel_color | Цвет меток полос — Цвет меток временных полос с указанием названий таймфреймов |
| minBars | Минимальное количество баров — Минимальное количество баров для корректной работы индикатора |
Поиск по коду файла
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Gold
#property indicator_level1 30
#property indicator_level2 70
#property indicator_levelcolor DarkSlateGray
extern int RSIPeriod = 14;
extern int MARSIPeriod =8;
extern int ModeMA = MODE_EMA; //Avalible: 0-SMA, 1-EMA
extern int showBars =1;
extern int fontsize = 10;
extern int Side = 1;
extern int Y = 5;
extern int X = 5;
extern color maRsiCoolor = Gold;
extern color rsiCoolor = Blue;
extern color BarLabel_color = DarkGreen;
extern int minBars = 250;
int tf[] = {1, 5, 15, 30, 60, 240};
double rsi1[],
rsi5[],
rsi15[],
rsi30[],
rsi1H[],
rsi4H[];
double maRsi1[],
maRsi5[],
maRsi15[],
maRsi30[],
maRsi1H[],
maRsi4H[];
double dRsi[];
double dMaRsi[];
string ind;
int i, j;
int pperiod;
int limit[6];
int cBars[6],
pBars[6];
color ncol[6];
int pTime ;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectDelete("NumberRsi"+WindowFind(ind));
DeleteAllVObj();
return(0);
}
int start()
{
// код доступен только после оплаты
}
for (i=0; i<6; i++) {
cBars[i] = iBars(Symbol(), tf[i]);
if (pBars[i] <= 0)
limit[i] = cBars[i] - RSIPeriod - 1;
else
limit[i] = cBars[i] - pBars[i];
}
limit[0] = CheckArray(maRsi1, tf[0], limit[0], 0);
limit[1] = CheckArray(maRsi5, tf[1], limit[1], 1);
limit[2] = CheckArray(maRsi15, tf[2], limit[2], 2);
limit[3] = CheckArray(maRsi30, tf[3], limit[3], 3);
limit[4] = CheckArray(maRsi1H, tf[4], limit[4], 4);
limit[5] = CheckArray(maRsi4H, tf[5], limit[5], 5);
for (i=limit[0]+MARSIPeriod; i>=0; i--)
rsi1[i] = iRSI(Symbol(),tf[0],RSIPeriod,PRICE_CLOSE,i);
for (i=limit[1]+MARSIPeriod; i>=0; i--)
rsi5[i] = iRSI(Symbol(),tf[1],RSIPeriod,PRICE_CLOSE,i);
for (i=limit[2]+MARSIPeriod; i>=0; i--)
rsi15[i] = iRSI(Symbol(),tf[2],RSIPeriod,PRICE_CLOSE,i);
for (i=limit[3]+MARSIPeriod; i>=0; i--)
rsi30[i] = iRSI(Symbol(),tf[3],RSIPeriod,PRICE_CLOSE,i);
for (i=limit[4]+MARSIPeriod; i>=0; i--)
rsi1H[i] = iRSI(Symbol(),tf[4],RSIPeriod,PRICE_CLOSE,i);
for (i=limit[5]+MARSIPeriod; i>=0; i--)
rsi4H[i] = iRSI(Symbol(),tf[5],RSIPeriod,PRICE_CLOSE,i);
if (ModeMA == MODE_EMA) {
maRsi1[limit[0]] = iMAOA(maRsi1, rsi1, MARSIPeriod, MODE_SMA, limit[0]);
maRsi5[limit[1]] = iMAOA(maRsi5, rsi5, MARSIPeriod, MODE_SMA, limit[1]);
maRsi15[limit[2]] = iMAOA(maRsi15, rsi15, MARSIPeriod, MODE_SMA, limit[2]);
maRsi30[limit[3]] = iMAOA(maRsi30, rsi30, MARSIPeriod, MODE_SMA, limit[3]);
maRsi1H[limit[4]] = iMAOA(maRsi1H, rsi1H, MARSIPeriod, MODE_SMA, limit[4]);
maRsi4H[limit[5]] = iMAOA(maRsi4H, rsi4H, MARSIPeriod, MODE_SMA, limit[5]);
for (i=0; i<6; i++)
limit[i] --;
}
for (i=limit[0]; i>=0; i--)
maRsi1[i] = iMAOA(maRsi1, rsi1, MARSIPeriod, ModeMA, i);
for (i=limit[1]; i>=0; i--)
maRsi5[i] = iMAOA(maRsi5, rsi5, MARSIPeriod, ModeMA, i);
for (i=limit[2]; i>=0; i--)
maRsi15[i] = iMAOA(maRsi15, rsi15, MARSIPeriod, ModeMA, i);
for (i=limit[3]; i>=0; i--)
maRsi30[i] = iMAOA(maRsi30, rsi30, MARSIPeriod, ModeMA, i);
for (i=limit[4]; i>=0; i--)
maRsi1H[i] = iMAOA(maRsi1H, rsi1H, MARSIPeriod, ModeMA, i);
for (i=limit[5]; i>=0; i--)
maRsi4H[i] = iMAOA(maRsi4H, rsi4H, MARSIPeriod, ModeMA, i);
switch (Period()) {
case 1: {
if (pperiod != Period()) {
ArrayResize(maRsi1, cBars[0]);
}
limit[0]= cBars[0] - RSIPeriod;
for (i=cBars[0] - RSIPeriod; i>=0; i--)
maRsi1[i] = iMAOnArray(rsi1,0,MARSIPeriod,0,ModeMA,i);
ArrayCopy(dRsi, rsi1, 0, 0, WHOLE_ARRAY);
ArrayCopy(dMaRsi, maRsi1, 0, 0, WHOLE_ARRAY);
} break;
case 5: {
if (pperiod != Period()) {
ArrayResize(maRsi5, cBars[1]);
}
limit[1]= cBars[1] - RSIPeriod;
for (i=cBars[1] - RSIPeriod; i>=0; i--)
maRsi5[i] = iMAOnArray(rsi5,0,MARSIPeriod,0,ModeMA,i);
ArrayCopy(dRsi, rsi5, 0, 0, WHOLE_ARRAY);
ArrayCopy(dMaRsi, maRsi5, 0, 0, WHOLE_ARRAY);
} break;
case 15: {
if (pperiod != Period()) {
ArrayResize(maRsi15, cBars[2]);
}
limit[2]= cBars[2] - RSIPeriod;
for (i=cBars[2] - RSIPeriod; i>=0; i--)
maRsi15[i] = iMAOnArray(rsi15,0,MARSIPeriod,0,ModeMA,i);
ArrayCopy(dRsi, rsi15, 0, 0, WHOLE_ARRAY);
ArrayCopy(dMaRsi, maRsi15, 0, 0, WHOLE_ARRAY);
} break;
case 30: {
if (pperiod != Period()) {
ArrayResize(maRsi30, cBars[3]);
}
limit[3]= cBars[3] - RSIPeriod;
for (i=cBars[3] - RSIPeriod; i>=0; i--)
maRsi30[i] = iMAOnArray(rsi30,0,MARSIPeriod,0,ModeMA,i);
ArrayCopy(dRsi, rsi30, 0, 0);
ArrayCopy(dMaRsi, maRsi30, 0, 0);
} break;
case 60: {
if (pperiod != Period()) {
ArrayResize(maRsi1H, cBars[4]);
}
limit[4]= cBars[4] - RSIPeriod;
for (i=cBars[4] - RSIPeriod; i>=0; i--)
maRsi1H[i] = iMAOnArray(rsi1H,0,MARSIPeriod,0,ModeMA,i);
ArrayCopy(dRsi, rsi1H, 0, 0);
ArrayCopy(dMaRsi, maRsi1H, 0, 0);
} break;
case 240: {
if (pperiod != Period()) {
ArrayResize(maRsi4H, cBars[5]);
}
limit[5]= cBars[5] - RSIPeriod;
for (i=cBars[5] - RSIPeriod; i>=0; i--)
maRsi4H[i] = iMAOnArray(rsi4H,0,MARSIPeriod,0,ModeMA,i);
ArrayCopy(dRsi, rsi4H, 0, 0);
ArrayCopy(dMaRsi, maRsi4H, 0, 0);
} break;
default: {
ArrayInitialize(dRsi, EMPTY_VALUE);
ArrayInitialize(dMaRsi, EMPTY_VALUE);
} break;
}
for (i=0; i<6; i++)
pBars[i] = cBars[i];
pperiod = Period();
ncol[0] = SetColor(maRsi1, 0);
ncol[1] = SetColor(maRsi5, 1);
ncol[2] = SetColor(maRsi15, 2);
ncol[3] = SeПоказано первые 50% кода (символов: 11022)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.