ARRZZX2
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mt4 arrzzx2.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
ARRZZX2 — пользовательский индикатор для MetaTrader 4, отображаемый в окне графика с восемью буферами данных. Индикатор выполняет расчёт сглаженных скользящих средних на основе различных ценовых типов и выявляет развороты ценовых структур, отрисовывая их в виде линий зигзага и стрелок на графике.
Индикатор содержит несколько последовательных этапов обработки: вычисление вспомогательной скользящей, расчёт модифицированного значения на основе экстремумов, определение крупных и мелких разворотов зигзага, а также финальную обработку массивов для отрисовки. Результаты визуализируются с помощью стрелок и линий разных цветов.
Параметры индикатора позволяют настроить периоды сглаживания, глубину поиска разворотов, тип цены для расчётов и режим отображения. Индикатор также реагирует на изменение масштаба графика, пересчитывая отображение при изменении ChartScale.
Настройки программы
| Настройка | Описание |
|---|---|
| SR | Период сглаживания — Период сглаживания вспомогательной скользящей средней, используемой в расчётах |
| DrawZZ | Рисовать зигзаг — Переключатель отображения линии зигзага на графике |
| Indicator_On | Индикатор включён — Переключатель активности индикатора; при выключении индикатор деинициализируется |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 8
extern int SR=3,SRZZ=12,MainRZZ=34,FP=21,SMF=3,PriceConst=0;
extern bool DrawZZ=FALSE;
double Lmt[],LZZ[],SA[],SM[],Up[],Dn[],pUp[],pDn[];
int LTF[6]= {0,0,0,0,0,0},STF[5]= {0,0,0,0,0};
int MaxBar,nSBZZ,nLBZZ,SBZZ,LBZZ,prevBars=0;
bool First=true;
extern bool Indicator_On=true;
bool Deinitialized;
int ChartScale,Width;
int init()
{
// код доступен только после оплаты
}
int deinit() {return(0);}
int start()
{
// код доступен только после оплаты
}
void MainCalculation(int Pos)
{
if((Bars-Pos)>(SR+1))
SACalc(Pos);
else
SA[Pos]=0;
if((Bars-Pos)>(FP+SR+2))
SMCalc(Pos);
else
SM[Pos]=0;
return;
}
void SACalc(int Pos)
{
int sw,i,w,ww,Shift;
double sum;
switch(PriceConst)
{
case 0:
SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_CLOSE,Pos);
break;
case 1:
SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_OPEN,Pos);
break;
/* case 2: SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_HIGH,Pos); break;
case 3: SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_LOW,Pos); break;*/
case 4:
SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_MEDIAN,Pos);
break;
case 5:
SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_TYPICAL,Pos);
break;
case 6:
SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_WEIGHTED,Pos);
break;
default:
SA[Pos]=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_OPEN,Pos);
break;
}
for(Shift=Pos+SR+2; Shift>Pos; Shift--)
{
sum=0.0;
sw=0;
i=0;
w=Shift+SR;
ww=Shift-SR;
if(ww<Pos)
ww=Pos;
while(w>=Shift)
{
i++;
sum=sum+i*SnakePrice(w);
sw=sw+i;
w--;
}
while(w>=ww)
{
i--;
sum=sum+i*SnakePrice(w);
sw=sw+i;
w--;
}
SA[Shift]=sum/sw;
}
return;
}
double SnakePrice(int Shift)
{
switch(PriceConst)
{
case 0:
return(Close[Shift]);
case 1:
return(Open[Shift]);
/* case 2: return(High[Shift]);
case 3: return(Low[Shift]);*/
case 4:
return((High[Shift]+Low[Shift])/2);
case 5:
return((Close[Shift]+High[Shift]+Low[Shift])/3);
case 6:
return((2*Close[Shift]+High[Shift]+Low[Shift])/4);
default:
return(Open[Shift]);
}
}
void SMCalc(int i)
{
double t,b;
for(int Shift=i+SR+2; Shift>=i; Shift--)
{
t=SA[ArrayMaximum(SA,FP,Shift)];
b=SA[ArrayMinimum(SA,FP,Shift)];
SM[Shift]=(2*(2+SMF)*SA[Shift]-(t+b))/2/(1+SMF);
}
return;
}
void LZZCalc(int Pos)
{
int i,RBar,LBar,ZZ,NZZ,NZig,NZag;
i=Pos-1;
NZig=0;
NZag=0;
while(i<MaxBar && ZZ==0)
{
i++;
LZZ[i]=0;
RBar=i-MainRZZ;
if(RBar<Pos)
RBar=Pos;
LBar=i+MainRZZ;
if(i==ArrayMinimum(SM,LBar-RBar+1,RBar))
{
ZZ=-1;
NZig=i;
}
if(i==ArrayMaximum(SM,LBar-RBar+1,RBar))
{
ZZ=1;
NZag=i;
}
}
if(ZZ==0)
return;
NZZ=0;
if(i>Pos)
{
if(SM[i]>SM[Pos])
{
Показано первые 50% кода (символов: 6488)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.