Gann_S9
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «gann_sq9_a2.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор Gann_S9 для MetaTrader 4 объединяет расчёт ZigZag-паттернов с построением уровней по квадрату Ганна на ценовом графике. Сначала вычисляются значимые точки разворота по заданной глубине, отклонению и количеству шагов возврата, затем из этих точек строятся угловые линии и горизонтальные уровни. Визуализация включает трендовые линии, текстовые метки ценовых уровней и опциональные вертикальные линии.
Настройки позволяют управлять количеством отображаемых уровней, углами линий, цветами поддержки и сопротивления, шириной и стилем отрисовки. Индикатор работает на текущем графике и перерисовывает объекты при каждом новом тике. Поддерживается отображение нескольких комплектов уровней с возможностью индексации.
Индикатор не использует внешние библиотеки и не выполняет торговых операций. Все расчёты и построения выполняются локально на клиентской стороне в среде MetaTrader 4.
Настройки программы
| Настройка | Описание |
|---|---|
| angle_up | Угол восходящих линий — Угол наклона линий для восходящих уровней |
| angle_dn | Угол нисходящих линий — Угол наклона линий для нисходящих уровней |
| Width | Толщина линий — Толщина линий уровней |
| Style | Стиль линий — Стиль линий уровней (значение стиля графического объекта) |
| kol_lev | Количество уровней — Количество отображаемых уровней в каждом комплекте |
| ResistanceColor | Цвет сопротивления — Цвет линий уровней сопротивления |
| SupportColor | Цвет поддержки — Цвет линий уровней поддержки |
| Level_0 | Цвет уровня 0 — Цвет горизонтального уровня нулевой линии |
| lev_V | Отображать вертикальные линии — Переключатель отображения вертикальных линий-меток |
| Level_V | Цвет вертикальных линий — Цвет вертикальных линий-меток времени |
| Complect | Комплект — Индекс текущего комплекта уровней для идентификации объектов на графике |
| ExtDepth | Глубина ZigZag — Глубина расчёта ZigZag — минимальное число баров между значимыми точками разворота |
| ExtDeviation | Отклонение ZigZag — Минимальное отклонение цены в пунктах для признания точки разворота значимой |
| ExtBackstep | Шаги возврата — Количество шагов возврата при расчёте ZigZag-паттернов |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 AliceBlue
#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 = Tomato;
extern color SupportColor = DodgerBlue;
extern color Level_0 = LightSteelBlue;
extern bool lev_V = true;
extern color Level_V = LightSteelBlue;
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Показано первые 50% кода (символов: 7307)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.