adxm nrp 2.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «adxm nrp 2.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 5, отображаемый в отдельном окне. Он рассчитывает значения направленного индекса (DI) и усредненного направленного индекса (ADX) с применением сглаживания ценовых данных, а также отрисовывает уровни и стрелки в точках изменения направления ADX.
Индикатор использует настраиваемый период и параметр сглаживания для формирования основных вычислительных линий. Вспомогательные уровни задаются параметром Level и отображаются на графике.
Стрелки-метки рисуются при обнаружении разворотов индикаторной линии, что позволяет визуально оценивать изменение тренда. Все элементы графика можно настраивать через параметры цвета, размера и префикса имен объектов.
Настройки программы
| Настройка | Описание |
|---|---|
| period | Период — Период расчёта индикатора, определяющий глубину анализируемых баров. |
| Level | Уровень — Значение горизонтальных уровней, отображаемых на графике индикатора. |
| Smooth | Сглаживание — Параметр сглаживания, используемый при расчёте индикаторных значений. |
| Prefix | Префикс — Префикс имён графических объектов, создаваемых индикатором на графике. |
| arrowsUpColor | Цвет стрелки вверх — Цвет стрелки, рисуемой вверх при развороте индикатора. |
| arrowsDnColor | Цвет стрелки вниз — Цвет стрелки, рисуемой вниз при развороте индикатора. |
| arrowsUpCode | Код стрелки вверх — Код стрелки, рисуемой вверх при развороте индикатора. |
| arrowsDnCode | Код стрелки вниз — Код стрелки, рисуемой вниз при развороте индикатора. |
| arrowsUpSize | Размер стрелки вверх — Размер стрелки, рисуемой вверх при развороте индикатора. |
| arrowsDnSize | Размер стрелки вниз — Размер стрелки, рисуемой вниз при развороте индикатора. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color3 LightSlateGray
#property indicator_color4 DodgerBlue
#property indicator_color5 SandyBrown
#property indicator_color6 SandyBrown
#property indicator_style3 STYLE_DOT
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width6 2
extern int period = 14;
extern int Level = 25;
extern double Smooth = 15;
extern string Prefix = "ADXm nrp 2";
extern color arrowsUpColor = clrDodgerBlue; //
extern color arrowsDnColor = clrSandyBrown; //
extern int arrowsUpCode = 233; //
extern int arrowsDnCode = 234; //
extern int arrowsUpSize = 3; //
extern int arrowsDnSize = 3; //
double ADX[],ADXLa[],ADXLb[],DI[],UP[],DN[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectDelete(Prefix);
deleteArrows();
return(0);
}
double work[][4];
#define zdh 0
#define zdl 1
#define zdx 2
#define slope 3
int start()
{
// код доступен только после оплаты
}
int i,r,counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
double alpha = 2.0/(period+1);
int limit = MathMin(Bars-counted_bars,Bars-1);
if (ArrayRange(work,0)!=Bars) ArrayResize(work,Bars);
if (work[limit][slope]==-1) CleanPoint(limit,ADXLa,ADXLb);
for (i=limit,r=Bars-i-1; i>=0; i--,r++)
{
ObjectDelete(Prefix+":1:"+TimeToStr(Time[i]));
string lookFor = Prefix+":"+TimeToStr(Time[i]); ObjectDelete(lookFor);
if (i==Bars-1) { work[r][zdh] = 0; work[r][zdl] = 0; work[r][zdx] = 0; continue; }
double hc = iSsm(High[i] ,Smooth,i,0);
double lc = iSsm(Low[i] ,Smooth,i,1);
double cp = iSsm(Close[i+1],Smooth,i,2);
double hp = iSsm(High[i+1] ,Smooth,i,3);
double lp = iSsm(Low[i+1] ,Smooth,i,4);
double dh = MathMax(hc-hp,0);
double dl = MathMax(lp-lc,0);
if(dh==dl) {dh=0; dl=0;} else if(dh<dl) dh=0; else if(dl<dh) dl=0;
double num1 = MathAbs(hc-lc);
double num2 = MathAbs(hc-cp);
double num3 = MathAbs(lc-cp);
double tr = MathMax(MathMax(num1,num2),num3);
double dhk = 0;
double dlk = 0;
if(tr!=0) { dhk = 100.0*dh/tr; dlk = 100.0*dl/tr; }
work[r][zdh] = work[r-1][zdh] + alpha*(dhk-work[r-1][zdh]);
work[r][zdl] = work[r-1][zdl] + alpha*(dlk-work[r-1][zdl]);
DI[i] = work[r][zdh] - work[r][zdl];
double div = MathAbs(work[r][zdh] + work[r][zdl]);
double temp = 0; if( div != 0.0) temp = 100*(MathAbs(DI[i])/div);
if (work[r][zdh]<work[r][zdl]) temp = -temp;
work[r][zdx] = work[r-1][zdx] + alpha*(temp-work[r-1][zdx]);
ADX[i] = work[r][zdx];
ADXLa[i] = EMPTY_VALUE;
ADXLb[i] = EMPTY_VALUE;
work[r][slope] = work[r-1][slope];
if (ADX[i]>ADX[i+1]) work[r][slope] = 1;
if (ADX[i]<ADX[i+1]) work[r][slope] = -1;
if (work[r][slope]==-1) PlotPoint(i,ADXLa,ADXLb,ADX);
if (ADX[i]>ADX[i+1] && ADX[i+1]<ADX[i+2])
{
UP[i]=1;
drawArrowUP("1",1,i,arrowsUpColor,arrowsUpCode,arrowsUpSize);
}
else UP[i]=EMPTY_VALUE;
if (ADX[i]<ADX[i+1] && ADX[i+1]>ADX[i+Показано первые 50% кода (символов: 5617)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.