RSI-TL
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsi-tl.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
RSI-TL — это пользовательский индикатор для MetaTrader 4, рассчитывающий значение Relative Strength Index (RSI) и автоматически строящий трендовые линии на основе пиков и впадин индикатора. Расчёт RSI выполняется с использованием метода начального накопления и последующего сглаженного скользящего среднего. Дополнительные буферы (PosBuffer и NegBuffer) используются для промежуточного подсчёта положительных и отрицательных изменений цен.
Настройки программы
| Настройка | Описание |
|---|---|
| RSIPeriod | Период RSI — Период расчёта индикатора RSI — целочисленный параметр, задающий количество баров, используемых для вычисления значений RSI. |
| 1 or 2 (TL_bars) | Бары для трендовой линии — Количество баров для подтверждения трендовой точки (1 или 2). Определяет, сколько соседних баров проверяется для выявления пиков и впадин индикатора при построении трендовых линий. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
extern int RSIPeriod=14;
extern int TL_bars=2; // 1 or 2
double RSIBuffer[];
double PosBuffer[];
double NegBuffer[];
string short_name;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectDelete("RSI-TL_S"+DoubleToStr(TL_bars,0));
ObjectDelete("RSI-TL_R"+DoubleToStr(TL_bars,0));
}
int start()
{
// код доступен только после оплаты
}
int i,counted_bars=IndicatorCounted();
double rel,negative,positive;
if(Bars<=RSIPeriod) return(0);
if(counted_bars<1)
for(i=1;i<=RSIPeriod;i++) RSIBuffer[Bars-i]=0.0;
i=Bars-RSIPeriod-1;
if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double sumn=0.0,sump=0.0;
if(i==Bars-RSIPeriod-1)
{
int k=Bars-2;
while(k>=i)
{
rel=Close[k]-Close[k+1];
if(rel>0) sump+=rel;
else sumn-=rel;
k--;
}
positive=sump/RSIPeriod;
negative=sumn/RSIPeriod;
}
else
{
rel=Close[i]-Close[i+1];
if(rel>0) sump=rel;
else sumn=-rel;
positive=(PosBuffer[i+1]*(RSIPeriod-1)+sump)/RSIPeriod;
negative=(NegBuffer[i+1]*(RSIPeriod-1)+sumn)/RSIPeriod;
}
PosBuffer[i]=positive;
NegBuffer[i]=negative;
if(negative==0.0) RSIBuffer[i]=0.0;
else RSIBuffer[i]=100.0-100.0/(1+positive/negative);
i--;
}
int h1=0, h2=0, l1=0, l2=0;
for(i=TL_bars+1;i<Bars;i++)
{
if (h1==0)
{
if (TL_bars==1)
{
if ((RSIBuffer[i-1]<RSIBuffer[i]) && (RSIBuffer[i+1]<RSIBuffer[i])) { h1=i; }
}
if (TL_bars==2)
{
if ( (RSIBuffer[i-1]<RSIBuffer[i]) && (RSIBuffer[i+1]<RSIBuffer[i]) && (RSIBuffer[i-2]<RSIBuffer[i]) && (RSIBuffer[i+2]<RSIBuffПоказано первые 50% кода (символов: 3411)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.