rsi_t3_slope_mtf.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsi_t3_slope_mtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, рассчитывающий осциллятор на основе RSI с сглаживанием T3 и определяющий направление его изменения (наклон). Отображает результат в отдельном окне в виде гистограмм, раскрашенных по направлению и знаку значения. Поддерживает многопериодный анализ: может работать на указанном таймфрейме и интерполировать данные при необходимости. Имеет режимы для внутреннего использования другими индикаторами (расчёт значения и возврат номера бара).
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Задаёт таймфрейм для расчёта индикатора. Может быть указан текстовым именем (например, H1) или числом минут. Режимы «calculateValue» и «returnBars» используются для внутренней работы мультитаймфреймовой логики. |
| RsiPeriod | Период RSI — Определяет количество баров, используемых для расчёта RSI. |
| RsiPrice | Цена RSI — Выбирает тип цены (или другую величину), на основе которой вычисляется RSI. |
| Hot | Коэффициент сглаживания — Параметр, влияющий на степень сглаживания в расчёте T3. |
| OriginalT3 | Исходный T3 — Переключатель между двумя вариантами формулы сглаживания T3. |
| LevelUp | Уровень вверх — Горизонтальная линия-уровень, отображаемая в окне индикатора сверху от нуля. |
| LevelDown | Уровень вниз — Горизонтальная линия-уровень, отображаемая в окне индикатора снизу от нуля. |
| Interpolate | Интерполяция — Включает или отключает интерполяцию значений между барами при работе на другом таймфрейме. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 LimeGreen
#property indicator_color2 LimeGreen
#property indicator_color3 PaleVioletRed
#property indicator_color4 PaleVioletRed
#property indicator_color5 DarkGray
#property indicator_width1 2
#property indicator_width3 2
#property indicator_width5 2
#property indicator_minimum -50
#property indicator_maximum +50
#property indicator_levelcolor DarkGray
extern string TimeFrame = "Current time frame";
extern double RsiPeriod = 25;
extern int RsiPrice = PRICE_CLOSE;
extern double Hot = 0.7;
extern bool OriginalT3 = false;
extern double LevelUp = 30;
extern double LevelDown = -30;
extern bool Interpolate = true;
double rsi[];
double rsihuu[];
double rsihud[];
double rsihdu[];
double rsihdd[];
double slope[];
int timeFrame;
string indicatorFileName;
bool returnBars;
bool calculateValue;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
int start()
{
// код доступен только после оплаты
}
int count,counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { rsihuu[0] = limit+1; return(0); }
if (calculateValue || timeFrame == Period())
{
for(int i = limit; i >= 0; i--)
{
rsi[i] = iRsi(iMA(NULL,0,1,0,MODE_SMA,RsiPrice,i),RsiPeriod,Hot,OriginalT3,i);
rsihuu[i] = EMPTY_VALUE;
rsihud[i] = EMPTY_VALUE;
rsihdd[i] = EMPTY_VALUE;
rsihdu[i] = EMPTY_VALUE;
slope[i] = slope[i+1];
if (rsi[i] > rsi[i+1]) slope[i] = 1;
if (rsi[i] < rsi[i+1]) slope[i] = -1;
if (rsi[i]>0)
if (slope[i]==1)
rsihuu[i] = rsi[i];
else rsihud[i] = rsi[i];
if (rsi[i]<0)
if (slope[i]==1)
rsihdu[i] = rsi[i];
else rsihdd[i] = rsi[i];
}
return(0);
}
limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
for(i=limit; i>=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time[i]);
rsihuu[i] = EMPTY_VALUE;
rsihud[i] = EMPTY_VALUE;
rsihdd[i] = EMPTY_VALUE;
rsihdu[i] = EMPTY_VALUE;
rsi[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RsiPeriod,RsiPrice,Hot,OriginalT3,4,y);
slope[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RsiPeriod,RsiPrice,Hot,OriginalT3,5,y);
if (rsi[i]>0)
if (slope[i]==1)
rsihuu[i] = rsi[i];
else rsihud[i] = rsi[i];
if (rsi[i]<0)
if (slope[i]==1)
rsihdu[i] = rsi[i];
else rsihdd[i] = rsi[i];
if (!Interpolate || y==iBarShift(NULL,timeFrame,Time[i-1])) continue;
datetime time = iTime(NULL,timeFrame,y);
for(int n = 1; i+n < Bars && Time[i+n] >= time; n++) continue;
for(int k = 1; k < n; k++)
{
rsi[i+k] = rsi[i] + (rsi[i+n]-rsi[i])*k/n;
if (rsihuu[i]!=EMPTY_VALUE) rsihuu[i+k]= rsi[i+k];
if (rsihud[i]!=EMPTY_VAПоказано первые 50% кода (символов: 6205)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.