gann_sq9_2.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «gann_sq9_2.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, который строит ZigZag-линии по экстремумам цены и отображает уровни Ганна (квадрат 9) в виде линий тренда под заданными углами. Вспомогательные функции рисуют горизонтальные и вертикальные линии, а также текстовые подписи с углами и значениями уровней. Все графические объекты удаляются при перерисовке или деинициализации индикатора.
Настройки программы
| Настройка | Описание |
|---|---|
| angle_up | Угол вверх — Угол наклона линий уровней для восходящих уровней Ганна |
| angle_dn | Угол вниз — Угол наклона линий уровней для нисходящих уровней Ганна |
| Width | Толщина линий — Толщина линий уровней Ганна |
| Style | Стиль линий — Стиль линий уровней Ганна |
| kol_lev | Количество уровней — Количество уровней, отображаемых от каждой точки поворота |
| ResistanceColor | Цвет сопротивления — Цвет линий сопротивления |
| SupportColor | Цель поддержки — Цвет линий поддержки |
| Level_0 | Цель базового уровня — Цвет базового горизонтального уровня |
| lev_V | Вертикальные линии — Включает или отключает отображение вертикальных линий от точек поворота |
| Level_V | Цель вертикальных линий — Цвет вертикальных линий |
| Complect | Номер комплекта — Номер группы уровней для разделения наборов |
| ExtDepth | Глубина поиска — Глубина поиска экстремумов при построении ZigZag |
| ExtDeviation | Отклонение — Минимальное отклонение цены для признания точки экстремумом |
| ExtBackstep | Шаг отката — Шаг проверки при отборе экстремумов ZigZag |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 WhiteSmoke
#property indicator_width1 0
#property indicator_style1 2
extern double angle_up = 22.5;
extern double angle_dn = 22.5;
extern int Width = 0;
extern int Style = 2;
extern int kol_lev = 8;
extern color ResistanceColor = Brown;
extern color SupportColor = Green;
extern color Level_0 = Gray;
extern bool lev_V = true;
extern color Level_V = Gray;
extern int Complect = 0;
color ????_??????;
extern int ExtDepth=21;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
double ZigZagBuffer[];
int timeFirstBar=0;
int flag;
bool work=true;
double vel_prev;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjDel();
Comment("");
return(0);
}
int start()
{
// код доступен только после оплаты
}
if (Bars-1<ExtDepth)return(0);
static int time2,time3,time4;
static double ZigZag2,ZigZag3,ZigZag4;
int MaxBar,limit,supr2_bar,supr3_bar,supr4_bar,counted_bars=IndicatorCounted();
if (counted_bars<0)return(-1);
if (counted_bars>0) counted_bars--;
int index, shift, back,lasthighpos,lastlowpos;
double val,res,TempBuffer[1];
double curlow,curhigh,lasthigh,lastlow;
int metka=0; // =0 - ?? ??????? ???????? ZZ. =1 - ???? ????? ??????????. =2 - ???? ????? ?????????.
MaxBar=Bars-ExtDepth;
if (counted_bars==0 || Bars-counted_bars>2)
{
limit=MaxBar;
}
else
{
supr2_bar=iBarShift(NULL,0,time2,TRUE);
supr3_bar=iBarShift(NULL,0,time3,TRUE);
supr4_bar=iBarShift(NULL,0,time4,TRUE);
limit=supr3_bar;
if ((supr2_bar<0)||(supr3_bar<0)||(supr4_bar<0))
{
limit=MaxBar;
}
}
if (limit>=MaxBar || timeFirstBar!=Time[Bars-1])
{
timeFirstBar=Time[Bars-1];
limit=MaxBar;
}
if (limit==MaxBar) ArrayResize(TempBuffer,Bars); else ArrayResize(TempBuffer,limit+ExtBackstep+1);
for(shift=limit; shift>=0; shift--)
{
val=Low[Lowest(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=ZigZagBuffer[shift+back];
if((res!=0)&&(res>val)) ZigZagBuffer[shift+back]=0.0;
}
}
}
if (Low[shift]==val)
{
ZigZagBuffer[shift]=val;
}
else ZigZagBuffer[shift]=0.0;
val=High[Highest(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=TempBuffer[shift+back];
if((res!=0)&&(res<val)) TempBuffer[shift+back]=0.0;
}
}
}
if (High[shift]==val)
{
TempBuffer[shift]=val;
}
else TempBuffer[shift]=0.0;
}
lasthigh=-1; lasthighpos=-1;
lastlow= -1; lastlowpos= -1;
for(shift=limit; shift>=0; shift--)
{
curlow=ZigZagBuffer[shift];
curhigh=TempBuffer[shift];
if((curlow==0)&&(curhigh==0)) continue;
if(curhigh!=0)
{
if(lasthigh>0)
{
if(lasthigh<curhigh) TempBuffer[lasthighpos]=0;
else TempBuffer[shift]=0;
}
if(lasthigh<curhigh || lasthigh<0)
{
lasthigh=curhigh;
lasthighpos=shift;
}
lastlow=-1;
}
if(curlow!=0)
{
if(lastlow>0)
{
if(lastlow>curlow) ZigZagBuffer[lastlowpos]=0;
else ZigZagBuffer[shift]=0;
}
if((curlow<lastlow)||(lastlow<0))
{
lastlow=curlow;
lastlowpos=shift;
}
lasthigh=-1;
}
}
for(shift=limit; shift>=0; shift--)
{
res=TempBuffer[shift];
if(res!=0.0) ZigZagBuffer[shift]=res;
}
int i=0,j=0;
res=0;
for (shift=0;i<3;shift++)
{
if (ZigZagBuffer[shift]>0)
{
i++;
if (i==1 && ZigZagBuffer[shift]==High[shift])
{
j=shift;
res=ZigZagBuffer[shift];
}
if (i==2 && res>0 && ZigZagBuffer[shift]==High[shift])
{
if (ZigZagBuffer[shift]>=ZigZagBuffer[j]) ZigZagBuffer[j]=0; else ZigZagBuffer[shift]=0;
res=0;
i=0;
j=0;
shift=0;
}
}
}
if (limit<MaxBПоказано первые 50% кода (символов: 7282)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.