color_rsi_v1.02_nmc.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «color_rsi_v1.02_nmc.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, рассчитывающий RSI и отображающий его в отдельном окне графика. Линия индикатора окрашивается в зависимости от положения относительно заданных уровней перекупленности и перепроданности. При пересечении этих уровней на графике отображаются стрелки-маркеры, а также могут срабатывать уведомления в терминале.
Настройки программы
| Настройка | Описание |
|---|---|
| RSIPeriod | Период RSI — Количество баров, используемых для расчёта RSI. |
| PriceType | Тип цены — Тип ценового значения, используемого при расчёте RSI (Close, Open, High, Low, Median, Typical или Weighted). |
| timeFrame | Таймфрейм — Таймфрейм, на котором выполняется расчёт RSI. |
| overBought | Уровень перекупленности — Верхний порог, при превышении которого линия RSI считается в зоне перекупленности. |
| overSold | Уровень перепроданности — Нижний порог, при снижении ниже которого линия RSI считается в зоне перепроданности. |
| showArrows | Показывать стрелки — Включает или отключает отображение стрелок-маркеров на графике при пересечении уровней. |
| alertsOn | Уведомления — Включает или отключает общую систему уведомлений о событиях индикатора. |
| alertsMessage | Сообщение — Выводит текстовое уведомление в окно терминала при срабатывании. |
| alertsSound | Звук — Воспроизводит звуковой сигнал при срабатывании уведомления. |
| alertsEmail | Email — Отправляет email-уведомление при срабатывании. |
| repaintSignalStep | Шаг перерисовки сигнала — Минимальное ценовое смещение, при котором предыдущий сигнал может быть перерисован. |
| repaintSignalPrice | Тип цены сигнала — Тип цены, используемый для размещения сигнальных стрелок на графике. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_color1 DimGray
#property indicator_color2 Red
#property indicator_color3 LimeGreen
#property indicator_width2 2
#property indicator_width3 2
#define SignalName "RSISignal"
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 bool alertsOn = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern int repaintSignalStep = 0;
extern int repaintSignalPrice = 0;
double RSIBuffer[];
double Upper[];
double Lower[];
double Prices[300];
bool doTheRepaint;
int TimeFrame;
datetime TimeArray[];
int maxArrows;
int SignalGap;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
DeleteArrows();
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int limit;
int i,y,k;
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)
{
SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);
limit = MathMin(Bars,300);
for (i=limit; i>=0 ;i--)
{
Prices[i] = EMPTY_VALUE;
if (RSIBuffer[i]>overBought) Prices[i] = iMA(NULL,0,1,0,MODE_SMA,repaintSignalPrice,i);
if (RSIBuffer[i]<overSold ) Prices[i] = -iMA(NULL,0,1,0,MODE_SMA,repaintSignalPrice,i);
}
if (doTheRepaint)
for (i=limit; i>=0 ;i--)
if ((Prices[i] != EMPTY_VALUE) && (Prices[i+1] != EMPTY_VALUE))
{
if (Prices[i] > 0)
if ((Prices[i]-Prices[i+1])/Point >= repaintSignalStep)
Prices[i+1] = EMPTY_VALUE;
else
for (k=i-1; k>=0; k--)
if(Prices[k]>0 && Prices[k] != EMPTY_VALUE) Prices[k]= EMPTY_VALUE;
else break;
if (Prices[i] < 0)
if ((Prices[i+1]-Prices[i])/Point >= repaintSignalStep)
Prices[i+1] = EMPПоказано первые 50% кода (символов: 5583)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.