ZigZag
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «zigzag.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
ZigZag — пользовательский индикатор для MetaTrader 4, предназначенный для построения линий между значительными максимумами и минимумами цены на графике. Индикатор анализирует исторические ценовые данные и выделяет ключевые точки разворота, соединяя их линиями для наглядного отображения структуры цены. Работа индикатора управляется тремя настраиваемыми параметрами, которые определяют глубину поиска экстремумов, допустимое отклонение и фильтрацию повторных сигналов.
Настройки программы
| Настройка | Описание |
|---|---|
| Depth (InpDepth) | Глубина — Определяет количество баров, в пределах которых ищется экстремум цены. |
| Deviation (InpDeviation) | Отклонение — Задаёт допустимое отклонение цены от найденного экстремума в пунктах. |
| Backstep (InpBackstep) | Шаг возврата — Определяет количество баров назад, в которых проверяются и при необходимости очищаются предыдущие экстремумы. |
Поиск по коду файла
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
input int InpDepth=12; // Depth
input int InpDeviation=5; // Deviation
input int InpBackstep=3; // Backstep
double ExtZigzagBuffer[];
double ExtHighBuffer[];
double ExtLowBuffer[];
int ExtLevel=3; // recounting's depth of extremums
int OnInit()
{
// код доступен только после оплаты
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long& tick_volume[],
const long& volume[],
const int& spread[])
{
// код доступен только после оплаты
}
int i,limit,counterZ,whatlookfor=0;
int back,pos,lasthighpos=0,lastlowpos=0;
double extremum;
double curlow=0.0,curhigh=0.0,lasthigh=0.0,lastlow=0.0;
if(rates_total<InpDepth || InpBackstep>=InpDepth)
return(0);
if(prev_calculated==0)
limit=InitializeAll();
else
{
i=counterZ=0;
while(counterZ<ExtLevel && i<100)
{
if(ExtZigzagBuffer[i]!=0.0)
counterZ++;
i++;
}
if(counterZ==0)
limit=InitializeAll();
else
{
limit=i-1;
if(ExtLowBuffer[i]!=0.0)
{
curlow=ExtLowBuffer[i];
whatlookfor=1;
}
else
{
curhigh=ExtHighBuffer[i];
whatlookfor=-1;
}
for(i=limit-1; i>=0; i--)
{
ExtZigzagBuffer[i]=0.0;
ExtLowBuffer[i]=0.0;
ExtHighBuffer[i]=0.0;
}
}
}
for(i=limit; i>=0; i--)
{
extremum=low[iLowest(NULL,0,MODE_LOW,InpDepth,i)];
if(extremum==lastlow)
extremum=0.0;
else
{
lastlow=extremum;
if(low[i]-extremum>InpDeviation*Point)
extremum=0.0;
else
{
for(back=1; back<=InpBackstep; back++)
{
pos=i+back;
if(ExtLowBuffer[pos]!=0 && ExtLowBuffer[pos]>extremum)
ExtLowBuffer[pos]=0.0;
}
}
}
if(low[i]==extremum)
ExtLowBuffer[i]=extremum;
else
ExtLowBuПоказано первые 50% кода (символов: 3474)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.