Fibodrawer
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «zz_fibo_generator.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, предназначенный для автоматического построения уровней Фибоначчи на графике цены. Он определяет ключевые точки разворота и рисует три набора линий Фибоначчи между ними, каждый с настраиваемыми цветами. Третий набор отрисовывается только при наличии трёх подтверждённых точек разворота.
Настройки программы
| Настройка | Описание |
|---|---|
| ExtDepth | Глубина поиска — Определяет максимальный диапазон баров для поиска локальных экстремумов при построении уровней Фибоначчи. |
| ExtDeviation | Отклонение цены — Задаёт минимальное ценовое отклонение в пунктах, необходимое для того, чтобы точка считалась значимым экстремумом. |
| ExtBackstep | Шаг возврата — Определяет количество баров назад, в пределах которых проверяются и фильтруются дублирующиеся сигналы экстремумов. |
| FibColor1 | Цвет первого Фибоначчи — Задаёт цвет уровней первого объекта Фибоначчи, отображаемого на графике. |
| FibColor2 | Цвет второго Фибоначчи — Задаёт цвет уровней второго объекта Фибоначчи, отображаемого на графике. |
| FibColor3 | Цвет третьего Фибоначчи — Задаёт цвет уровней третьего объекта Фибоначчи, отображаемого на графике при наличии трёх точек разворота. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int ExtDepth=21;
extern int ExtDeviation=13;
extern int ExtBackstep=34;
extern color FibColor1= Green;
extern color FibColor2= RoyalBlue;
extern color FibColor3= Gold;
double ExtMapBuffer[];
double ExtMapBuffer2[];
double posA,posB,posC,posD,posX;
double topA,botA,topB,botB,topC,botC,topD,botD,topX,botX;
double XA,AB,BC,CD;
double XAAB,ABBC,BCCD;
datetime TimeX,TimeA,TimeB,TimeC,TimeD,TS1,TS2,TS3,TT1,TT2,TT3;
double PS1,PT1,PS2,PT2,PS3,PT3;
double Fib1High,Fib1Low,Fib2High,Fib2Low,Fib3High,Fib3Low;
double level_array[13]={0,0.236,0.386,0.5,0.618,0.786,1,1.276,1.618,2.058,2.618,3.33,4.236};
string leveldesc_array[13]={"0","23.6%","38.6%","50%","61.8%","78.6%","100%","127.6%","161.8%","205.8%","261.80%","333%","423.6%"};
int level_count;
string level_name;
double text_y;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectDelete("Fibo1");
ObjectDelete("Fibo2");
ObjectDelete("Fibo3");
ObjectDelete("X");
ObjectDelete("B");
ObjectDelete("A");
ObjectDelete("C");
ObjectDelete("D");
}
int start()
{
// код доступен только после оплаты
}
double Points = MarketInfo (Symbol(), MODE_POINT);
int shift, back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow;
for(shift=Bars-ExtDepth; 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=ExtMapBuffer[shift+back];
if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;
}
}
}
ExtMapBuffer[shift]=val;
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=ExtMapBuffer2[shift+back];
if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0;
}
}
}
ExtMapBuffer2[shift]=val;
}
lasthigh=-1; lasthighpos=-1;
lastlow=-1; lastlowpos=-1;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
curlow=ExtMapBuffer[shift];
curhigh=ExtMapBuffer2[shift];
if((curlow==0)&&(curhigh==0)) continue;
if(curhigh!=0)
{
if(lasthigh>0)
{
if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;
else ExtMapBuffer2[shift]=0;
}
if(lasthigh<curhigh || lasthigh<0)
{
lasthigh=curhigh;
lasthighpos=shift;
}
lastlow=-1;
}
if(curlow!=0)
{
if(lastlow>0)
{
if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;
else ExtMapBuffer[shift]=0;
}
if((curlow<lastlow)||(lastlow<0))
{
lastlow=curlow;
lastlowpos=shift;
}
lasthigh=-1;
}
}
for(shift=Bars-1; shift>=0; shift--)
{
if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0;
else
{
res=ExtMapBuffer2[shift];
if(res!=0.0) ExtMapBuffer[shift]=res;
}
}
int i=0;
int LastZigZag, PreviousZigZag,PreviousZigZag2,PreviousZigZag3,PreviousZigZag4;
int h=0;
while ( ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0)
{h++;}
LastZigZag=h;
h++;
while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0)
{h++;}
PreviousZigZag=h;
h++;
while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0)
{h++;}
PreviousZigZag2=h;
h++;
while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0)
{h++;}
PreviousZigZag3=h;
h++;
while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0)
{h++;}
PreviousZigZag4=h;
topD=High[LastZigZag];
botD=Low[LastZigZag];
topC=High[PreviousZigZag];
botC=Low[PreviousZigZag];
topB=High[PreviousZigZag2];
botB=Low[PreviousZigZag2];
topA=High[PreviousZigZag3];
botA=Low[PreviousZigZag3];
topX=High[PreviousZigZag4];
botX=Low[PreviousZigZag4];
TimeD=Time[LastZigZag];
TimeC=Time[PreviousZigZag];
TimeB=Time[PreviousZigZag2];
TimeA=Time[PreviousZigZag3];
TimeX=Time[PreviousZigZag4];
if(topD>topC)// D IS A PEAK
{//defining fib1 as CD retracement
TS1=TimeC;
PS1=botC;
TT1=TimeD;
PT1=topD;
if (topB<topD)
{//defining fib2 as BC retracement
TS2=TimeB;
PS2=topB;
TT2=TimeC;
PT2=botC;
}
if (topB>=topD)
{//defining fib2 as BC extension
TS2=TimeC;
PS2=botC;
TT2=TimeB;
PT2=topB;
}
if (botA<=botC)
{//defining fib3 as AB retracement
TS3=TimeA;
PS3=botA;
Показано первые 50% кода (символов: 8209)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.