/*[[ Name := Silver sen Author := Copyright © 2003, VIAC.RU AlexSilver Link := http://viac.ru/ Separate Window := No First Color := SlateBlue First Draw Type := Symbol First Symbol := 131 Use Second Data := No ]]*/ Inputs : CCIP(14), limit(90), delta(25), KBars(500);//, yyyy(0), mm(0), dd(0), hh(0), mn(0) // limit - границы в которых находится зигзаг // delta - расстояние между "хвостами" и "серединой" Variables : shift(0), cnt(0), sh(0), loopbegin(0), firstTime(True); Variables : val(0),cciU(0),cciD(0),pmn1(0),pmn2(0),pmx1(0),pmx2(0); Variables : tmn1(0),tmn2(0),tmx1(0),tmx2(0),kmn(0),kmx(0),line(0); Array: tt[20](0); SetLoopCount(0); //var1 = StrToTime(NumberToStr(yyyy)+"."+NumberToStr(mm+"."+NumberToStr(dd)+" "+NumberToStr(hh)+":"+NumberToStr(mn)); // current time // moving average If firstTime Then { if KBars==0 then { loopbegin = Bars-1; } else { loopbegin = KBars-1; } }; For shift = loopbegin Downto 0 Begin val=0; cciU=0; cciD=0; For sh = 0 to 17 { // Заполнение массива точек. tt[sh]=iCCIEx(CCIP,PRICE_TYPICAL,shift+sh); // Определение наличия тренда. if sh<=8 then { if tt[sh]>=0 then { cciU++; } else { cciD++; } } } pmx1=0; pmx2=0; kmx=0; // Определение точек максимума. if cciD>=6 then { For sh = 0 to 17 { if tt[sh]<=tt[sh+1] and tt[sh+1]>=tt[sh+2] then { if pmx1!=0 and pmx2==0 then { pmx2=tt[sh+1]; tmx2=t[sh+1+shift]; kmx=100*(pmx2-pmx1)/(tmx2-tmx1); } if pmx1==0 then { pmx1=tt[sh+1]; tmx1=t[sh+1+shift]; } } } } pmn1=0; pmn2=0; kmn=0; // Определение точек минимума. if cciU>=6 then { For sh = 0 to 17 { if tt[sh]>=tt[sh+1] and tt[sh+1]<=tt[sh+2] then { if pmn1!=0 and pmn2==0 then { pmn2=tt[sh+1]; tmn2=t[sh+1+shift]; kmn=100*(pmn2-pmn1)/(tmn2-tmn1); } if pmn1==0 then { pmn1=tt[sh+1]; tmn1=t[sh+1+shift]; } } } } /*Comment("Kmn ", NumberToStr(kmn,5) ,"\n","Kmx ", NumberToStr(kmx,5) ,"\n","pmn1 ", NumberToStr(pmn1,5) ,"\n","pmn2 ", NumberToStr(pmn2,5) ,"\n","pmx1 ", NumberToStr(pmx1,5) ,"\n","pmx2 ", NumberToStr(pmx2,5));*/ // TLB ctr в нисходящем тренде if kmx!=0 and cciD>=6 and (pmx1<-limit or pmx2<-limit) then { line=(t[shift]-(tmx1+0))*kmx/100+pmx1; if tt[1]=line then { val=L[shift]-5*Point; //val=-1; } } // TLB ctr в восходящем тренде if kmn!=0 and cciU >=6 and (pmn1>limit or pmn2>limit) then { line=(t[shift]-(tmn1+0))*kmn/100+pmn1; if tt[1]>line and tt[0]<=line then { val=H[shift]+5*Point; //val=1; } } /*Comment("Kmn ", NumberToStr(kmn,5) ,"\n","Kmx ", NumberToStr(kmx,5) ,"\n","pmn1 ", NumberToStr(pmn1,5) ,"\n","pmn2 ", NumberToStr(pmn2,5) ,"\n","pmx1 ", NumberToStr(pmx1,5) ,"\n","pmx2 ", NumberToStr(pmx2,5) ,"\n","tmn1 ", NumberToStr(tmn1,5) ,"\n","tmn2 ", NumberToStr(tmn2,5) ,"\n","tmx1 ", NumberToStr(tmx1,5) ,"\n","tmx2 ", NumberToStr(tmx2,5) ,"\n","line ", NumberToStr(line,5)); */ SetIndexValue(shift,val); loopbegin = loopbegin-1; End;