rsi_color_rsi_v1.02_maxim.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsi_color_rsi_v1.02_maxim.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор для MetaTrader 4 рассчитывает значение RSI и отображает его в отдельном окне с тремя буферами: линия RSI, зоны перекупленности и перепроданности. При пересечении заданных уровней OverBought и OverSold на графике рисуются цветные стрелки сигналов, поддерживается работа с несколькими таймфреймами. Включена система уведомлений: всплывающие сообщения, звуковые сигналы и email-оповещения при пересечении настроенных уровней.
Индикатор предоставляет функцию повторной перерисовки предыдущих сигналов на основе изменения цены (repaintSignalStep), а также позволяет настраивать цвета, размеры стрелок и пороговые уровни. Расчёт RSI поддерживает различные типы цен (Close, Open, High, Low, Median, Typical, Weighted). Параметр Signal_Gap задаёт отступ стрелок от ценовых уровней.
Настройки программы
| Настройка | Описание |
|---|---|
| RSIPeriod | Период RSI — Период RSI |
| PriceType | Тип цены для расчёта RSI — Тип цены для расчёта RSI (0=Close, 1=Open, 2=High, 3=Low, 4=Median, 5=Typical, 6=Weighted) |
| timeFrame | Таймфрейм для расчёта RSI — Таймфрейм для расчёта RSI |
| OverBought | Уровень перекупленности — Уровень перекупленности |
| OverSold | Уровень перепроданности — Уровень перепроданности |
| showArrows | Отображение стрелок сигналов — Отображение стрелок сигналов |
| ArrowUpColor | Цвет стрелки вверх — Цвет стрелки вверх |
| ArrowDnColor | Цвет стрелки вниз — Цвет стрелки вниз |
| UpDnArrowSize | Размер стрелок вверх/вниз — Размер стрелок вверх/вниз |
| RevUpColor | Цвет стрелки разворота вверх — Цвет стрелки разворота вверх |
| RevDnColor | Цвет стрелки разворота вниз — Цвет стрелки разворота вниз |
| RevArrowSize | Размер стрелок разворота — Размер стрелок разворота |
| Signal_Gap | Отступ сигнала от цены — Отступ сигнала от цены |
| alertsOn | Включение уведомлений — Включение уведомлений |
| OBOS_Level_crossAlert | Уведомление при пересечении уровней перекупленности/перепроданности — Уведомление при пересечении уровней перекупленности/перепроданности |
| Level_50_crossAlert | Уведомление при пересечении уровня 50 — Уведомление при пересечении уровня 50 |
| alertsMessage | Уведомление в виде сообщения — Уведомление в виде сообщения |
| alertsSound | Звуковое уведомление — Звуковое уведомление |
| alertsEmail | Email-уведомление — Email-уведомление |
| repaintSignalStep | Шаг перерисовки сигнала — Шаг перерисовки сигнала |
| repaintSignalPrice | Тип цены для перерисовки сигнала — Тип цены для перерисовки сигнала |
| MaxArrowsScreensX | Максимальное количество стрелок на экране (множитель) — Максимальное количество стрелок на экране (множитель) |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_color1 DarkSlateGray
#property indicator_color2 LimeGreen
#property indicator_color3 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_level1 70
#property indicator_level2 50
#property indicator_level3 30
#property indicator_levelcolor DarkSlateGray
#property indicator_levelstyle 2
string SignalName;
extern int RSIPeriod = 14;
extern int PriceType = 5;
extern string timeFrame = "Current time frame";
extern int OverBought = 70;
extern int OverSold = 30;
extern bool showArrows = true;
extern color ArrowUpColor = LimeGreen;
extern color ArrowDnColor = Maroon;
extern int UpDnArrowSize = 0;
extern color RevUpColor = MediumSeaGreen;
extern color RevDnColor = Red;
extern int RevArrowSize = 1;
extern double Signal_Gap= 1.3;
extern bool alertsOn = false;
extern bool OBOS_Level_crossAlert = false;
extern bool Level_50_crossAlert = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern int repaintSignalStep = 0;
extern int repaintSignalPrice = 0;
extern int MaxArrowsScreensX = 3;
extern string TimeFrames = "M1;5,15,30,H160;H4240;D11440;W110080;MN43200|0-CurrentTF";
double RSIBuffer[];
double Upper[];
double Lower[];
double Prices[];
int TimeFrame;
datetime TimeArray[];
int maxArrows;
int SignalGap;
string prevSignal;
int prevBar;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
DeleteArrows();
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int limit;
int i,y;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=MathMax(Bars-counted_bars,TimeFrame/Period());
ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);
for(i=0,y=0; i<limit; i++)
{
if(Time[i]<TimeArray[y]) y++;
RSIBuffer[i] = iRSI(NULL,TimeFrame,RSIPeriod,PriceType,y);
}
for(i=limit; i>=0; i--)
{
if (RSIBuffer[i] > OverBought) { Upper[i] = RSIBuffer[i]; Upper[i+1] = RSIBuffer[i+1]; }
else { Upper[i] = EMPTY_VALUE;
if (Upper[i+2] == EMPTY_VALUE)
Upper[i+1] = EMPTY_VALUE; }
if (RSIBuffer[i] < OverSold) { Lower[i] = RSIBuffer[i]; Lower[i+1] = RSIBuffer[i+1]; }
else { Lower[i] = EMPTY_VALUE;
if (Lower[i+2] == EMPTY_VALUE)
Lower[i+1] = EMPTY_VALUE; }
}
DeleteArrows();
if (showArrows)
{
for (i=WindowBarsPerChart()*MaxArrowsScreensX; i>=0 ;i--)
{
SignalGap = MathCeil(iATR(NULL,0,9,i)/Point);
if (RSIBuffer[i]>OverBought && RSIBuffer[i+1]<OverBought) DrawArrow(i,"up");
if (RSIBuffer[i]<OverBought && RSIBuffer[i+1]>OverBought) DrawArrow(i,"ReversDn");
if (RSIBuffer[i]<OverSold && RSIBuffer[i+1]>OverSold) DrawArrow(i,"dn");
if (RSIBuffer[i]>OverSold && RSIBuffer[i+1]<OverSold) DrawArrow(i,"ReversUp");
if ((TimeFrame==Period()) && (repaintSignalStep>0))
if (prevBar==i+1)
{
double currPrice = iMA(NULL,0,1,0,MODE_SMA,repaintSignalPrice,i);
double prevPrice = iMA(NULL,0,1,0,MODE_SMA,repaintSignalPrice,i+1);
if (prevSignal == "dn")
if (RSIBuffer[i]<OverSold)
if ((prevPrice-currPrice)/Point >= repaintSignalStep)
{
ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_TIME1,Time[i]);
ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_PRICE1,Low[i] -(SignalGap*Point));
}
if (prevSignal == "up")
if (RSIBuffer[i]>OverBought)
if ((currPrice-prevPrice)/Point >= repaintSignalStep)
{
ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_TIME1,Time[i]);
ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_PRICE1,High[i]+(SignalGap*Point));
}
}
}
}
if (alertsOn)
{
Показано первые 50% кода (символов: 7690)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.