ZigZag SG
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «zigzag sg.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
ZigZag SG — это пользовательский индикатор для платформы MetaTrader 4, рассчитывающий аналитическую ZigZag-линию на графике цены. Индикатор использует три внешних параметра для управления расчётом, что позволяет настраивать детализацию отображаемых значений.
Результаты расчёта визуализируются в виде линий на графике, а также информационных текстовых меток, отображающих величину в пунктах. Индикатор перерисовывает ключевые уровни при каждом обновлении данных, обеспечивая актуальное представление о движении цены.
Индикатор работает в окне графика и поддерживает пересчёт при получении новых данных. При деинициализации удаляются созданные графические объекты, предотвращая остаточные элементы на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| ExtDepth | ExtDepth — Задаёт глубину анализа в барах для определения ключевых точек при расчёте индикатора. |
| ExtDeviation | ExtDeviation — Устанавливает минимальное отклонение в пунктах, при превышении которого точка считается незначимой. |
| ExtBackstep | ExtBackstep — Определяет количество баров для пересмотра ранее рассчитанных значений при построении линии индикатора. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
#property indicator_width1 1
extern int ExtDepth = 13;
extern int ExtDeviation = 5;
extern int ExtBackstep = 5;
double ZigzagBuffer[];
double HighMapBuffer[];
double LowMapBuffer[];
int level=3; // recounting's depth
bool downloadhistory=false;
double acehigh[];
double high;
double acelow[];
double low;
void PrintText (string text, string objName, double textColor, double row, double column)
{
int rowHeight = 15;
ObjectCreate( objName, OBJ_LABEL, 0, 0, 0 );
ObjectSet( objName, OBJPROP_COLOR, textColor );
ObjectSet( objName, OBJPROP_CORNER, 3 );
ObjectSet( objName, OBJPROP_XDISTANCE, column );
ObjectSet( objName, OBJPROP_YDISTANCE, row*rowHeight);
ObjectSetText( objName, text, 10, "Terminal" );
}
int init()
{
// код доступен только после оплаты
}
int deinit()
{
int i;
for (i=1;i<=3;i++)
{
ObjectDelete("item"+i);
}
}
int start()
{
// код доступен только после оплаты
}
double vertices[10];
double vertexPos[10];
int vertexIndex;
ObjectDelete("high");
ObjectDelete("low");
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) // history was downloaded
{
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; back++)
{
res=HighMapBuffer[shift+back];
if((res!=0)&&(res<val)) HighMapBuffer[shift+back]=0.0;
}
}
}
if (High[shift]==val) HighMapBuffer[shift]=val; else HighMapBuffer[shift]=0.0;
}
if (whatlookfor==0)
{
lastlow=0;
lasthigh=0Показано первые 50% кода (символов: 4737)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.