ocn ndx jurik smoothed histo mtf.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ocn ndx jurik smoothed histo mtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Это пользовательский индикатор для MetaTrader 4, отображающий аналитический осциллятор в отдельном окне с гистограммами. Индикатор рассчитывает значения на основе скользящей средней цены закрытия и относительного изменения за заданный период, применяя многоуровневое сглаживание. Результирующие значения отображаются в виде цветных гистограмм, разделённых по направлению тренда и наклону.
Поддерживается работа на разных таймфреймах с возможностью интерполяции данных. Индикатор имеет настраиваемые уровни верхней и нижней зоны, а также параметры сглаживания и фазы. Гистограммы рисуются четырьмя цветами в зависимости от комбинации направления тренда и изменения наклона.
Индикатор не содержит торговой логики и не отправляет ордера. Он предназначен исключительно для визуального анализа ценовых данных и технических сигналов на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Выбор таймфрейма для расчёта индикатора (например, текущий, M1, H4, D1 и т.д.) |
| NDX_Period | NDX_Period — Период расчёта основного аналитического значения |
| NDX_Price | NDX_Price — Тип цены, используемой для расчёта (например, закрытие) |
| SmoothLength | SmoothLength — Длина сглаживания основного сигнала |
| SmoothPhase | SmoothPhase — Фазовый параметр сглаживания |
| SmoothDouble | SmoothDouble — Включение или отключение двойного сглаживания |
| Interpolate | Interpolate — Включение или отключение интерполяции значений между барами |
| HistoOnSlope | HistoOnSlope — Переключение отображения гистограмм по направлению наклона |
| levelOb | levelOb — Верхний уровень осциллятора |
| levelOs | levelOs — Нижний уровень осциллятора |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 LimeGreen
#property indicator_color2 Maroon
#property indicator_color3 Red
#property indicator_color4 DarkGreen
#property indicator_color5 DarkSlateGray
#property indicator_width1 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
#property indicator_width5 3
#property indicator_levelcolor DimGray
extern string TimeFrame = "Current time frame";
extern int NDX_Period = 40;
extern int NDX_Price = PRICE_CLOSE;
extern double SmoothLength = 10;
extern double SmoothPhase = 0;
extern bool SmoothDouble = false;
extern bool Interpolate = true;
extern bool HistoOnSlope = true;
extern int levelOb = 50;
extern int levelOs = -50;
double ndx[];
double ndxhuu[];
double ndxhud[];
double ndxhdd[];
double ndxhdu[];
double trend[];
double slope[];
double tBuffer[][4];
string indicatorFileName;
bool calculateValue;
bool returnBars;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
#define iPrc 3
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int i,r,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = MathMin(Bars-counted_bars,Bars-NDX_Period-1);
if (returnBars) { ndxhuu[0] = limit+1; return(0); }
if (calculateValue || timeFrame==Period())
{
if (ArrayRange(tBuffer,0) != Bars) ArrayResize(tBuffer,Bars);
for(i=limit, r=Bars-i-1; i >= 0; i--,r++)
{
double currPrice = iMA(NULL,0,1,0,MODE_SMA,NDX_Price,i);
if (currPrice > 0)
tBuffer[r][iPrc] = MathLog(currPrice);
else tBuffer[r][iPrc] = 0.00;
double sumMom = 0;
double sumDen = 0;
double sumDif = 0;
for (int k=1; k < NDX_Period; k++)
{
sumDif += MathAbs(tBuffer[r-k+1][iPrc]-tBuffer[r-k][iPrc]);
if (sumDif !=0)
double stoch = (tBuffer[r][iPrc]-tBuffer[r-k][iPrc])/sumDif;
else stoch = 0;
double coeff = 1.0/MathSqrt(k);
sumMom += coeff*stoch;
sumDen += coeff;
}
ndx[i] = iDSmooth(100.0*(sumMom/sumDen),SmoothLength,SmoothPhase,SmoothDouble,i);
if (ndx[i] > 90) ndx[i] = 90+( ndx[i]-90)/2.0;
if (ndx[i] <-90) ndx[i] = -90-(-ndx[i]-90)/2.0;
ndxhuu[i] = EMPTY_VALUE;
ndxhud[i] = EMPTY_VALUE;
ndxhdd[i] = EMPTY_VALUE;
ndxhdu[i] = EMPTY_VALUE;
trend[i] = trend[i+1];
slope[i] = slope[i+1];
if (ndx[i] > 0) trend[i] = 1;
if (ndx[i] < 0) trend[i] = -1;
if (ndx[i] > ndx[i+1]) slope[i] = 1;
if (ndx[i] < ndx[i+1]) slope[i] = -1;
if (HistoOnSlope)
{
if (trend[i] == 1 && slope[i] == 1) ndxhuu[i] = ndx[i];
if (trend[i] == 1 && slope[i] == -1) ndxhud[i] = ndx[i];
if (trend[i] == -1 && slope[i] == -1) ndxhdd[i] = ndx[i];
if (trend[i] == -1 && slope[i] == 1) ndxhdu[i] = ndx[i];
}
else
{
if (trend[i] == 1) ndxhuu[i] = ndx[i];
if (trend[i] == -1) ndxhdd[i] = ndx[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]);
ndx[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",NDX_Period,NDX_Price,SmoothLengthПоказано первые 50% кода (символов: 7108)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.