/*[[ Name := DMTrendLines&PricesUp Author := Copyright © 2003, Company Link := http://www.company.com/ Separate Window := No First Color := Blue First Draw Type := Line First Symbol := 217 Use Second Data := No Second Color := Red Second Draw Type := Line Second Symbol := 218 ]]*/ Variable : shift(0); Variable : KUp(0), BUp(0), n(0),MinPrice(0),TargetPriceUp(0); Array : TrendPriceUp[2,1](0); Arrays : Maximum[2,1](0), TimeofMaximum[2,1](0), shiftofMaximum[2,1](0); SetLoopCount(0); // loop from first bar to current bar (with shift=0) For shift = Bars-1 Downto 1 Begin { TrendPriceUp[1,1] = TrendPriceUp[2,1]; TrendPriceUp[2,1] = KUp*(shift) + BUp; SetIndexValue(shift, TrendPriceUp[2,1]); If High[shift] > High[shift - 1] AND High[shift] >= High[shift + 1] //Если точка - максимум, запоминаются Then {Maximum[1,1] = Maximum[2,1]; TimeofMaximum[1,1] = TimeofMaximum[2,1]; //его координаты shiftofMaximum[1,1] = shiftofMaximum[2,1]; shiftofMaximum[2,1] = shift; Maximum[2,1] = High[shift]; TimeofMaximum[2,1] = Time[shift]; KUp = (Maximum[2,1]-Maximum[1,1])/(shiftofMaximum[2,1]-shiftofMaximum[1,1]); //Вычисляется новый тренд BUp = Maximum[1,1] - KUp*shiftofMaximum[1,1]; TrendPriceUp[2,1] = KUp*(shift) + BUp; If Maximum[1,1] >= Maximum[2,1] //Если тренд вниз, Then {For n = shiftofMaximum[1,1] DownTo shiftofMaximum[2,1] Begin //вычисляется цена по новому тренду, { //начиная с его начала TrendPriceUp[2,1] = KUp*(n) + BUp; SetIndexValue(n, TrendPriceUp[2,1]); }; End; //Новый тренд вниз MoveObject("UpTrend", OBJ_TRENDLINE, TimeofMaximum[1,1], Maximum[1,1], TimeofMaximum[2,1], Maximum[2,1], Blue, 1, STYLE_SOLID); //прорисовывается }; }; If Close[shift] > TrendPriceUp[2,1] AND Close[shift+1] <= TrendPriceUp[1,1] //и тренд направлен вниз, AND TrendPriceUp[1,1] >= TrendPriceUp[2,1] //рассчитывается цена прорыва. Then {MinPrice = Low[Lowest(MODE_LOW, shiftofMaximum[1,1], shiftofMaximum[1,1] - shift)]; //Рассчитывается цена прорыва TargetPriceUp = (TrendPriceUp[2,1] - MinPrice) + TrendPriceUp[2,1]; MoveObject("TargetPriceUp"+Mod(shift,1), OBJ_HLINE, TimeofMaximum[1,1], TargetPriceUp, TimeofMaximum[2,1], TargetPriceUp, Blue, 1, STYLE_DOT); }; }; End;