Dynamic zone ab RSI of MACD
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dynamic_zone_ab_rsi_of_macd_nmc.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, рассчитывающий RSI на основе линии MACD и отображающий динамические зоны в отдельном окне. Использует сглаживание Уилдерса для построения RSI от изменений главной линии MACD, а затем определяет верхнюю, среднюю и нижнюю границы зоны на основе заданного периода отката и процентного уровня. Поддерживает работу на разных таймфреймах с интерполяцией значений между барами.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Задаёт таймфрейм для расчёта индикатора; может быть указан текстовым именем или числом, а также специальными значениями для внутренних режимов расчёта. |
| MacdFastPeriod | Период быстрой MACD — Период быстрой экспоненциальной скользящей средней, используемой в расчёте MACD. |
| MacdSlowPeriod | Период медленной MACD — Период медленной экспоненциальной скользящей средней, используемой в расчёте MACD. |
| MacdPrice | Цена MACD — Тип цены, используемый для расчёта линии MACD. |
| RsiPeriod | Период RSI — Период сглаживания, применяемый при расчёте RSI на основе значений MACD. |
| LookBack | Период отката — Количество баров назад, используемое для определения диапазона значений при построении динамических зон. |
| Percent | Процент диапазона — Процент от диапазона значений за период отката, определяющий ширину динамических зон. |
| OBLevel | Уровень перекупленности — Пороговое значение RSI, выше которого индикатор считает зону перекупленности и отображает соответствующую маркировку. |
| OSLevel | Уровень перепроданности — Пороговое значение RSI, ниже которого индикатор считает зону перепроданности и отображает соответствующую маркировку. |
| 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]);
RПоказано первые 50% кода (символов: 4771)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.