Dynamic zone ab RSI of MACD
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dynamic zone ab rsi of macd.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для MetaTrader 4, который отображает в отдельном окне несколько графических буферов: линию RSI, рассчитанную на основе значений MACD, а также динамические верхнюю и нижнюю зоны и среднюю линию. Индикатор использует стандартные средства платформы для расчёта MACD и сглаживания по методу Вилдса, формируя аналитические уровни на основе диапазона значений за заданный период наблюдения.
Продукт поддерживает работу на различных таймфреймах, включая возможность пересчёта данных с более высоких таймфреймов с интерполяцией промежуточных баров. Два специальных режима активируются через параметр TimeFrame: возврат количества баров и передача расчёта RSI внешнему вызову, что обеспечивает корректную работу при мультитаймфреймовом анализе.
Средняя линия индикатора может ограничиваться пользователем заданными верхним и нижним пороговыми уровнями, при достижении которых она фиксируется на граничных значениях. Все расчёты выполняются на каждом тике в рамках обработчика start(), что обеспечивает актуальность отображаемых данных.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм, на котором выполняется расчёт индикатора; поддерживает специальные значения для внутреннего переключения режимов |
| MacdFastPeriod | Быстрый период MACD — Быстрый период для расчёта MACD |
| MacdSlowPeriod | Медленный период MACD — Медленный период для расчёта MACD |
| MacdPrice | Цена MACD — Тип цены, используемой для расчёта MACD (например, PRICE_CLOSE) |
| RsiPeriod | Период RSI — Период сглаживания для расчёта RSI на основе дельт MACD |
| LookBack | Период наблюдения — Количество баров, используемых для определения диапазона значений при построении динамических зон |
| Percent | Процент диапазона — Процент диапазона, определяющий ширину динамических зон относительно размаха значений за период наблюдения |
| OBLevel | Верхний уровень OB — Верхний пороговый уровень, при превышении которого средняя линия фиксируется на значении 100 |
| OSLevel | Нижний уровень OS — Нижний пороговый уровень, при достижении которого средняя линия фиксируется на значении 0 |
| Interpolate | Интерполяция — Включает или отключает интерполяцию значений при пересчёте с более высоких таймфреймов |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 DeepSkyBlue
#property indicator_color2 LimeGreen
#property indicator_color3 DimGray
#property indicator_color4 Red
#property indicator_style3 STYLE_DOT
#property indicator_width1 2
#property indicator_minimum 0
#property indicator_maximum 100
extern string TimeFrame = "current time frame";
extern int MacdFastPeriod = 12;
extern int MacdSlowPeriod = 26;
extern int MacdPrice = PRICE_CLOSE;
extern int RsiPeriod = 14;
extern int LookBack = 60;
extern double Percent = 95;
extern double OBLevel = 90;
extern double OSLevel = 10;
extern bool Interpolate = true;
double Rsi[];
double upBuffer[];
double miBuffer[];
double dnBuffer[];
double macd[];
int timeFrame;
string IndicatorFileName;
bool CalculatingRsi;
bool ReturningBars;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
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 (CalculatingRsi || timeFrame==Period())
{
for(i=limit; i>=0; i--)
{
macd[i] = iMACD(NULL,0,MacdFastPeriod,MacdSlowPeriod,1,MacdPrice,MODE_MAIN,i);
double macdU = 0;
double macdD = 0;
if (macd[i]>macd[i+1]) macdU = macd[i]-macd[i+1];
if (macd[i]<macd[i+1]) macdD = macd[i+1]-macd[i];
double up = Wilders(macdU,0,RsiPeriod,i);
double dn = Wilders(macdD,2,RsiPeriod,i);
if ((up+dn)!=0)
Rsi[i] = 100.0*up/(dn+up);
else Rsi[i] = 50.0;
double max = Rsi[ArrayMaximum(Rsi,LookBack,i)];
double min = Rsi[ArrayMinimum(Rsi,LookBack,i)];
double rng = (max-min)*Percent/100.0;
upBuffer[i] = min+rng;
dnBuffer[i] = max-rng;
miBuffer[i] = (max+min)/2.0;
if (Rsi[i]>OBLevel) miBuffer[i] = 100;
if (Rsi[i]<OSLevel) miBuffer[i] = 0;
}
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]);
Показано первые 50% кода (символов: 4762)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.