xigxag.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «xigxag.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4 на языке MQL4. Он рассчитывает и отображает на графике линию ZigZag, выделяя значимые пики и впадины цены за определённый период. Индикатор использует три буфера данных: один для отрисовки линии разрывов и два вспомогательных для хранения промежуточных результатов расчёта максимумов и минимумов. Обработка данных выполняется в основной функции индикатора при каждом обновлении тика и при первичной загрузке истории.
Настройки программы
| Настройка | Описание |
|---|---|
| ExtDepth | Глубина поиска — Определяет максимальное количество баров, в пределах которых ищется экстремум цены для построения точки ZigZag. |
| ExtDeviation | Отклонение — Задаёт минимальное отклонение цены в пунктах, необходимое для того, чтобы новый экстремум считался значимым и был принят во внимание. |
| ExtBackstep | Шаг возврата — Определяет количество баров назад, в пределах которых проверяется и при необходимости отменяется ранее найденный экстремум при обнаружении более подходящего. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
double ZigzagBuffer[];
double HighMapBuffer[];
double LowMapBuffer[];
int level=3;
bool downloadhistory=false;
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
int i,counted_bars=IndicatorCounted();
int limit,counterZ,whatlookfor;
int shift,back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow;
if(counted_bars==0 && downloadhistory)
{
ArrayInitialize(ZigzagBuffer,0.0);
ArrayInitialize(HighMapBuffer,0.0);
ArrayInitialize(LowMapBuffer,0.0);
}
if(counted_bars==0)
{
limit=Bars-ExtDepth;
downloadhistory=true;
}
if(counted_bars>0)
{
while(counterZ<level && i<100)
{
res=ZigzagBuffer[i];
if(res!=0) counterZ++;
i++;
}
i--;
limit=i;
if(LowMapBuffer[i]!=0)
{
curlow=LowMapBuffer[i];
whatlookfor=1;
}
else
{
curhigh=HighMapBuffer[i];
whatlookfor=-1;
}
for(i=limit-1;i>=0;i--)
{
ZigzagBuffer[i]=0.0;
LowMapBuffer[i]=0.0;
HighMapBuffer[i]=0.0;
}
}
for(shift=limit; shift>=0; shift--)
{
val=Low[iLowest(NULL,0,MODE_LOW,ExtDepth,shift)];
if(val==lastlow) val=0.0;
else
{
lastlow=val;
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=LowMapBuffer[shift+back];
if((res!=0) && (res>val)) LowMapBuffer[shift+back]=0.0;
}
}
}
if(Low[shift]==val) LowMapBuffer[shift]=val; else LowMapBuffer[shift]=0.0;
val=High[iHighest(NULL,0,MODE_HIGH,ExtDepth,shift)];
if(val==lasthigh) val=0.0;
else
{
lasthigh=val;
if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; bacПоказано первые 50% кода (символов: 3070)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.