RK-ml-RSI_EMA_mtf v1.2
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rk-ml-rsi_ema_mtf_v1.2_modjk.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
RK-ml-RSI_EMA_mtf v1.2 — это пользовательский индикатор для MetaTrader 4, который отображает в отдельном окне линии RSI и скользящей средней, рассчитанные на выбранном таймфрейме. Индикатор реализует мультитаймфреймовый анализ, позволяя использовать данные старшего таймфрейма на графике текущего инструмента.
При пересечении линии RSI и скользящей средней индикатор рисует стрелки, сигнализируя о смене направления. Поддерживается интерполяция значений между барами старшего таймфрейма для более гладкого отображения линий.
Индикатор оснащён системой уведомлений, которая может отправлять сообщения на график, воспроизводить звуковой сигнал или отправлять электронную почту при наступлении условий. Доступны настройки периодов, типов скользящих средних, цветов стрелок и параметров алертов.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм, на котором рассчитываются значения индикатора |
| RsiPeriod | Период RSI — Период расчёта индикатора RSI |
| MaType | Тип скользящей средней — Тип скользящей средней (например, простая, экспоненциальная и т.д.) |
| MaPeriod | Период скользящей средней — Период скользящей средней, применяемой к значениям RSI |
| Interpolate | Интерполяция — Включает или отключает интерполяцию значений между барами старшего таймфрейма |
| arrowsIdentifier | Идентификатор стрелок — Идентификатор (префикс) объектов-стрелок на графике |
| arrowsUpColor | Цвет стрелки вверх — Цвет стрелки, отображаемой при восходящем пересечении |
| arrowsDnColor | Цвет стрелки вниз — Цвет стрелки, отображаемой при нисходящем пересечении |
| alertsOn | Уведомления включены — Включает или отключает всю систему уведомлений |
| alertsOnCurrent | Проверка текущего бара — Определяет, проверять ли условия алерта на текущем незавершённом баре или на предыдущем |
| alertsMessage | Алерты в виде сообщений — Включает или отключает отображение текстовых сообщений-алертов на графике |
| alertsSound | Звуковые уведомления — Включает или отключает звуковое уведомление |
| alertsEmail | Email-уведомления — Включает или отключает отправку уведомлений по электронной почте |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Orange
#property indicator_width1 2
extern string TimeFrame = "H4";
extern int RsiPeriod = 10;
extern int MaType = MODE_SMA;
extern int MaPeriod = 2;
extern bool Interpolate = true;
extern string arrowsIdentifier = "Signal";
extern color arrowsUpColor = Aqua;
extern color arrowsDnColor = Red;
extern bool alertsOn = true;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = true;
extern bool alertsSound = true;
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;
deleteArrow(Time[i]);
if (trend[i]!=trend[i+1])
{
if (trend[i] == 1) drawArrow(i,arrowsUpColor,221,false);
if (trend[i] ==-1) drawArrow(i,arrowsDnColor,222,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] + (1.0-k*factor)*rsi[i];
Показано первые 50% кода (символов: 4628)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.