//+------------------------------------------------------------------+ //| Popular prices .mq4 | //| Copyright 2015, Yuri_Evseenkov.| //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Yuri_Evseenkov." #property link "http://www.mql5.com" extern double bar;//число последних баров По умолчанию (bar=0) обрабатываются бары(свечи) расположенные в окне текущего графика int BIC[25000],BICS[25000],BIT[25000]; int n,m,z,mp,g,tx,zm,pr,d,bm,b,ba,t; double BR[2,25000],Z[4,25000]; long t0; //+------------------------------------------------------------------+ //| Determination of the number of processed bars | //+------------------------------------------------------------------+ void baf() { ba=WindowFirstVisibleBar(); Comment("Обрабатываются бары(свечи) расположенные в окне текущего графика ",ba," баров(свечей)"); if(bar>0) {ba=bar;Comment("Обрабатываются ",ba," баров(свечей)");} if(bar<50 && bar>0) { ba=50;Comment(" Минимальное число баров 50 Обрабатываются ",ba," баров(свечей)");} if(bar>Bars || bar==1) {ba=Bars;Comment(" Обрабатывается максимальное число баров в истории на этом таймфрейме ",ba," баров(свечей)");} } //+------------------------------------------------------------------+ //| Calculation of the coefficient d | //+------------------------------------------------------------------+ void df() { if(Bid<2){d=10000;} else { d=1;if(Bid<20 && Bid>=2){d=1000;} if(Bid<200 && Bid>=20){d=100;} if(Bid<2000 && Bid>=200){d=10;} if(Bid>24000){Alert(" Инструмент не может быть обработан/nПрисоедините советник к графику другого инструмента");} } } //+------------------------------------------------------------------+ //| The calculation function arrays. | //+------------------------------------------------------------------+ void of() { int BI[25000],ZS[25000]; n=0;while(n(WindowFirstVisibleBar()*2)){ymax=WindowPriceMax();ymin=WindowPriceMin();} double c=MathRound((ymax-ymin)/10*d)+1; ArrayCopy(BIC,BI);ArrayCopy(BICS,BI);ArraySort(BICS); bm=ArrayBsearch(BICS,!0,WHOLE_ARRAY,0,MODE_ASCEND); ZeroMemory(BR);ZeroMemory(Z); m=bm;while(m<25000) { BR[1,m]=BICS[m];m++; } n=bm;while(n<25000) { if(BR[1,n]==0){n++;continue;} m=0;while(m<25000) { if(BIC[m]==0){m++;continue;} if(BR[1,n]==BIC[m]) { BR[0,n]=m;BIC[m]=0;break; } m++; } n++; } int vg=maxd;int ng=vg-c+1; n=0;m=ng; while(n<=24999) { if(vg200){ks=2400;};int ks1=300;if (ba>200){ks1=1;}; while(g<25000) { if(Z[0,g]==0){break;} if(!ObjectCreate(0,g,OBJ_HLINE,0,0,(Z[0,g]/d))){ Print("Ошибка создания объекта 1: code #",GetLastError());} if(!ObjectSetInteger(0,g,OBJPROP_COLOR,clrBlue)){Print("Ошибка изменения объекта 2: code #",GetLastError());} if(!ObjectCreate(0,tx,OBJ_TEXT,0,(Time[0]+Period()*ks1),(Z[0,g]/d))){Print("Ошибка создания объекта 3: code #",GetLastError());} if(!ObjectSetText(tx,NormalizeDouble(Z[1,g]/ba/4*100,2),15,NULL,clrRed)) {Print("Ошибка изменения объекта 4: code #",GetLastError());} if(!ObjectCreate(0,pr,OBJ_TEXT,0,(Time[0]+Period()*ks),(Z[0,g]/d))){Print("Ошибка создания объекта 5: code #",GetLastError());} if(!ObjectSetText(pr,"%",15,NULL,clrRed)) {Print("Ошибка изменения объекта 6: code #",GetLastError());} g++;tx++;pr++; } int vl=333; ObjectDelete(vl); if(!ObjectCreate(0,vl,OBJ_VLINE,0,Time[ba],0)){ Print("Ошибка создания объекта 7: code #",GetLastError());} if(!ObjectSetInteger(0,vl,OBJPROP_COLOR,clrWhite)){Print("Ошибка изменения объекта 8: code #",GetLastError());} double coor,coor1,coor2;int com=332,com1=331,com2=330;int vis=WindowFirstVisibleBar(); ObjectDelete(com);ObjectDelete(com1);ObjectDelete(com2); double ser=WindowPriceMin()+(WindowPriceMax()-WindowPriceMin())/2; double ra=WindowPriceMax()-WindowPriceMin(); if(Close[vis]