RK-ml-RSI_EMA_mtf v1.2
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «original rsi-ema signals.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, рассчитывающий значения RSI и экспоненциальной скользящей средней на выбранном таймфрейме и отображающий направление тренда стрелками на графике. Поддерживает мультитаймфреймовый расчёт с интерполяцией значений между барами. При пересечении RSI и EMA индикатор формирует сигналы в виде стрелок вверх и вниз, а также может отправлять уведомления через всплывающие сообщения, звуковой сигнал и электронную почту.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм для расчёта индикатора; поддерживается строковое задание (например, M5, H1) или специальное значение calculate/returnBars для внутренних режимов. |
| RsiPeriod | Период RSI — Период расчёта индикатора относительной силы RSI. |
| MaType | Тип скользящей средней — Тип скользящей средней, используемой для сглаживания RSI (например, MODE_EMA). |
| MaPeriod | Период скользящей средней — Период скользящей средней, применяемой к значениям RSI. |
| Interpolate | Интерполяция — Включает или отключает интерполяцию значений RSI и EMA между барами выбранного таймфрейма. |
| arrowsIdentifier | Идентификатор стрелок — Префикс имени графических объектов-стрелок, отображающих сигналы на графике. |
| arrowsUpColor | Цвет стрелок вверх — Цвет стрелок, указывающих на восходящий тренд (RSI выше EMA). |
| arrowsDnColor | Цвет стрелок вниз — Цвет стрелок, указывающих на нисходящий тренд (RSI ниже EMA). |
| alertsOn | Уведомления включены — Включает или отключает систему уведомлений о смене тренда. |
| alertsSound | Звуковое уведомление — Воспроизводит звуковой сигнал при срабатывании уведомления. |
| alertsOnCurrent | Текущий бар — Если включено, проверка уведомления выполняется по текущему бару; если выключено — по предыдущему. |
| alertsMessage | Всплывающее сообщение — Отображает всплывающее сообщение в терминале при смене тренда. |
| alertsEmail | Email-уведомление — Отправляет электронное письмо на адрес, указанный в настройках терминала, при смене тренда. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Orange
#property indicator_width1 2
extern string TimeFrame = "M5";
extern int RsiPeriod = 14;
extern int MaType = MODE_EMA;
extern int MaPeriod = 40;
extern bool Interpolate = true;
extern string arrowsIdentifier = "RsiEmaArrows";
extern color arrowsUpColor = Lime;
extern color arrowsDnColor = Red;
extern bool alertsOn = true;
extern bool alertsSound = true;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = false;
extern bool alertsEmail = false;
double rsi[],ema[],trend[];
string indicatorFileName;
bool calculating = false;
bool returningBars = false;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
deleteArrows();
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int i,limit;
if(counted_bars < 0) return(-1);
if(counted_bars>0) counted_bars--;
limit = MathMin(Bars-counted_bars,Bars-1);
if (returningBars) { rsi[0] = limit+1; return(0); }
if (timeFrame > Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
if (calculating)
{
for(i=0; i<limit; i++) rsi[i] = iRSI(NULL,0,RsiPeriod,PRICE_CLOSE,i);
for(i=0; i<limit; i++) ema[i] = iMAOnArray(rsi,0,MaPeriod,0,MaType,i);
return(0);
}
for(i=limit; i>=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time[i]);
rsi[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculate",RsiPeriod,MaType,MaPeriod,0,y);
ema[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculate",RsiPeriod,MaType,MaPeriod,1,y);
trend[i] = trend[i+1];
if (rsi[i]>ema[i]) trend[i]= 1;
if (rsi[i]<ema[i]) trend[i]=-1;
if (trend[i]!=trend[i+1])
{
if (trend[i] == 1) drawArrow(i,arrowsUpColor,233,false);
if (trend[i] ==-1) drawArrow(i,arrowsDnColor,234,true);
}
if (timeFrame <= Period() || y==iBarShift(NULL,timeFrame,Time[i-1])) continue;
if (!Interpolate) continue;
datetime time = iTime(NULL,timeFrame,y);
for(int n = 1; i+n < Bars && Time[i+n] >= time; n++) continue;
double factor = 1.0 / n;
for(int k = 1; k < n; k++)
{
rsi[i+k] = k*factor*rsi[i+n] + (Показано первые 50% кода (символов: 4518)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.