// ÇèãÇàã.mq4
// Èíäèêàòîð ÇèãÇàã â ñòèëå Ðåíêî è Êðåñòèêè-Íîëèêè
#property copyright "mandorr@gmail.com"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Violet
#property indicator_width1 1
#property indicator_style1 0
extern int BoxSize=50; // Ðàçìåð êèðïè÷à â ïèïñàõ
double buffer0[];
int MySize;
double size;
void init() {
int MinStop;
MinStop=MarketInfo(Symbol(),MODE_STOPLEVEL);
MySize=BoxSize; if (MySize<MinStop && MinStop>0) {MySize=MinStop;}
size=MySize*Point;
SetIndexStyle (0,DRAW_SECTION);
SetIndexBuffer(0,buffer0);
SetIndexLabel (0,"Çíà÷åíèå");
SetIndexDrawBegin(0,0);
IndicatorShortName("ÇèãÇàã ("+MySize+" ïèïñîâ)");
}
void deinit() {
}
void start() {
int count, d, d1, i, h_shift, l_shift;
double h, l, H, L;
count=Bars-1;
d=0;
h=(High[count]+Low[count]+size)/2;
l=(High[count]+Low[count]-size)/2;
h_shift=count;
l_shift=count;
buffer0[count]=EMPTY_VALUE;
for (i=count-1; i>=0; i--) {
d1=d;
H=High[i];
L=Low [i];
if (H-L>size) {
if (H-h>=l-L) {d= 1; h=H; l=h-size; h_shift=i;}
else {d=-1; l=L; h=l+size; l_shift=i;}
}
else {
if (H>h && L>=l) {d= 1; h=H; l=h-size; h_shift=i;}
if (L<l && H<=h) {d=-1; l=L; h=l+size; l_shift=i;}
}
H=High[h_shift];
L=Low [l_shift];
if (d>0 && d1<0) {buffer0[l_shift]=L;}
if (d<0 && d1>0) {buffer0[h_shift]=H;}
}
H=High[h_shift];
L=Low [l_shift];
if (d>0) {buffer0[h_shift]=H;}
if (d<0) {buffer0[l_shift]=L;}
}
Comments