gann_sq9_2vbt.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «gann_sq9_2vbt.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для платформы MetaTrader 4, отображающий на графике уровни, рассчитанные на основе алгоритма ZigZag и квадрата Ганна. Используются стандартные параметры ZigZag — глубина, отклонение и шаг возврата — для определения ключевых точек разворота цены.
На основе найденных разворотов строятся восходящие и нисходящие линии уровней с заданными углами, а также базовая горизонтальная линия. Линии поддержки и сопротивления отрисовываются разными цветами, к каждому уровню привязана текстовая метка с числовым значением.
Встроенная кнопка на графике позволяет включать и выключать отображение всех уровней без перезагрузки индикатора. При выключении все объекты уровней удаляются с графика.
Дополнительно доступны настройки цвета, толщины и стиля линий, а также возможность отображения вертикальных линий в точках разворота.
Настройки программы
| Настройка | Описание |
|---|---|
| angle_up | Угол восходящих линий — Угол восходящих линий уровней |
| angle_dn | Угол нисходящих линий — Угол нисходящих линий уровней |
| Width | Толщина линий — Толщина линий уровней |
| Style | Стиль линий — Стиль линий уровней |
| kol_lev | Количество уровней — Количество отображаемых уровней от каждой точки разворота |
| ResistanceColor | Цвет сопротивления — Цвет линий сопротивления |
| SupportColor | Цвет поддержки — Цвет линий поддержки |
| Level_0 | Цвет базового уровня — Цвет базовой горизонтальной линии уровня |
| lev_V | Вертикальные линии — Включает или отключает отображение вертикальных линий в точках разворота |
| Level_V | Цвет вертикальных линий — Цвет вертикальных линий в точках разворота |
| Complect | Комплекс уровней — Номер комплекса уровней для визуализации |
| ExtDepth | Глубина ZigZag — Глубина поиска разворотов в ZigZag |
| ExtDeviation | Отклонение ZigZag — Допуск отклонения в алгоритме ZigZag |
| ExtBackstep | Шаг возврата ZigZag — Шаг возврата в алгоритме ZigZag |
| Button_Settings | Текст кнопки — Текстовая метка кнопки на графике |
| Button Left (X1) | Позиция кнопки X — Положение кнопки по горизонтали на графике |
| Button Top (Y1) | Позиция кнопки Y — Положение кнопки по вертикали на графике |
| ButtonBackColor | Цвет фона кнопки — Цвет фона кнопки управления отображением уровней |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 WhiteSmoke
#property indicator_width1 0
#property indicator_style1 2
extern double angle_up = 11.5;
extern double angle_dn = 11.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=10;
extern int ExtDeviation=3;
extern int ExtBackstep=1;
double ZigZagBuffer[];
int timeFirstBar=0;
int flag;
bool work=true;
double vel_prev;
#include <Controls/Button.mqh>
CButton B_Gann;
extern string Button_Settings= "==============";
extern int X1= 220; //Button Left
extern int Y1=0; //Button Top
int X0,X2,Y2,Gann=0;
extern color ButtonBackColor=clrGreenYellow;
string mMesage=" ";
void ReloadButton(color ccolor)
{
ObjectDelete(0,"B_Gann");
X2=X1+30;
Y2=Y1+30;
B_Gann.Create(0,"B_Gann",0,X1,Y1,X2,Y2);
B_Gann.Text("GNN");
B_Gann.ColorBackground(ButtonBackColor);
B_Gann.ColorBorder(ccolor);
B_Gann.Color(ccolor);
ObjectSetString(0,"B_Gann",OBJPROP_TOOLTIP, "Gann SQ9 2");
}
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjDel();
Comment("");
return(0);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(id==CHARTEVENT_OBJECT_CLICK){
if(sparam=="B_Gann")
{
if(Gann==0){
SetIndexStyle(0,DRAW_SECTION,2);
Gann=1;
sStart();
B_Gann.ColorBorder(clrSeaGreen);
B_Gann.Color(clrSeaGreen);
}
else{
ObjDel();
SetIndexStyle(0,DRAW_NONE);
Gann=0;
B_Gann.ColorBorder(clrDimGray);
B_Gann.Color(clrDimGray);
ChartRedraw();
}
}
}
}
int index, shift, back,lasthighpos,lastlowpos;
double val,res,TempBuffer[1];
double curlow,curhigh,lasthigh,lastlow;
void sStart(){
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 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Показано первые 50% кода (символов: 8245)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.