Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 26

 
atztek:

Индикаторные буферы, т.к. в дальнейшем решение будет использоваться не только для прямых, но и для линий типа скользящая средняя и других.


Может уточните что Вы в конечном итоге хотите получить
 
Здравствуйте! Если множите покажите как измерить угол наклона тренда и вывести на индикацию величину угла
 
я хочу замерить наклон средней и вывести на экран типа -35 градусов
 
igor2013:
я хочу замерить наклон средней и вывести на экран типа -35 градусов

Что такое -35° на графике? А если масштаб поменяется?
 
Vinin:

Может уточните что Вы в конечном итоге хотите получить

В приведенном примере линия рисуется при помощи индикаторного буфера по всей длине истории.
Необходимо ограничить ее только последними 20-ю барами. Т.е. чтобы по мере появления нового бара линия дорисовывалась справа и укорачивалась слева, так что ее длина всегда будет равна 20 барам.
 

я доконца не понимаю что пишу в коде, но на экране у меня всё время одно и тоже число. хотя подводя курсор к линии я вижу как меняются градусы.

             ObjectDelete("TremdLineAverage");         
             ObjectCreate("TremdLineAverage", OBJ_TRENDBYANGLE,0,0,0,0,0,0,0); // ------------------------- Трендовая линия 2 координаты
             ObjectSet   ("TremdLineAverage", OBJPROP_WIDTH, HirinaUgolAverage); // ---------------------------------------- Ширина
             ObjectSet   ("TremdLineAverage", OBJPROP_COLOR, colUgolAverage); // --------------------------------------------- Цвет
             ObjectSet   ("TremdLineAverage", OBJPROP_TIME1 ,Time[1]); // -------------------------------  1 координату времени
             ObjectSet   ("TremdLineAverage", OBJPROP_TIME2 ,Time[0]); // -------------------------------  1 координату времени
             ObjectSet   ("TremdLineAverage", OBJPROP_PRICE1,UgolAverage1_1); // -----------------------------  1 координату цены
             ObjectSet   ("TremdLineAverage", OBJPROP_PRICE2,UgolAverage1_0); // -----------------------------  2 координату цены
             ObjectSet   ("TremdLineAverage", OBJPROP_RAY, 15); Ugol=15;

 
кодда вверх то 15, а вниз то -15.
 
             ObjectDelete("TremdLineAverage");         
             ObjectCreate("TremdLineAverage", OBJ_TRENDBYANGLE,0,0,0,0,0,0,0); // ------------------------- Трендовая линия 2 координаты
             ObjectSet   ("TremdLineAverage", OBJPROP_WIDTH, HirinaUgolAverage); // ---------------------------------------- Ширина
             ObjectSet   ("TremdLineAverage", OBJPROP_COLOR, colUgolAverage); // --------------------------------------------- Цвет
             ObjectSet   ("TremdLineAverage", OBJPROP_TIME1 ,Time[1]); // -------------------------------  1 координату времени
             ObjectSet   ("TremdLineAverage", OBJPROP_TIME2 ,Time[0]); // -------------------------------  1 координату времени
             ObjectSet   ("TremdLineAverage", OBJPROP_PRICE1,UgolAverage1_1); // -----------------------------  1 координату цены
             ObjectSet   ("TremdLineAverage", OBJPROP_PRICE2,UgolAverage1_0); // -----------------------------  2 координату цены
             ObjectSet   ("TremdLineAverage", OBJPROP_ANGLE, 15); Ugol=15;
 
спасибо досведание.
 
igor2013:
спасибо досведание.

Готовая функция , пробуйте.

Функция SetTLineByAngle().

Эта функция выполняет установку объекта OBJ_TRENDBYANGLE трендовая линия по углу наклона на текущем графике.
cl - Цвет объекта ТРЕНДОВАЯ ЛИНИЯ. Обязательный параметр.
nm - Наименование объекта. При передаче умолчательного значения - "" в качестве имени используется время открытия текущего бара.
t1 - Первая координата времени установки объекта. Значение по умолчанию - 0 - время открытия десятого бара.
p1 - Первая координата цены установки объекта. Значение по умолчанию - 0 - минимум десятого бара.
t2 - Вторая координата времени установки объекта. Значение по умолчанию - 0 - время открытия текущего бара.
p2 - Вторая координата цены установки объекта. Этот параметр является своего рода переключателем. Его ненулевое значение приравняет данную функции к функции SetTLine(), то есть трендовая линия будет построена по паре координат время/цена, а значение угла наклона трендовой будет проигнорировано. Значение по умолчанию - 0 - построение трендовой линии по углу наклона.
an - Угол наклона в градусах. Значение по умолчанию - 0 - горизонтальная линия.
ry - Флаг свойства ЛУЧ. Значение по умолчанию False.
st - Стиль линии. Допустимые значения STYLE_SOLID (по умолчанию), STYLE_DASH, STYLE_DOT, STYLE_DASHDOT, STYLE_DASHDOTDOT.
wd - Толщина линии. Значение по умолчанию - 1.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка объекта OBJ_TRENDBYANGLE трендовая линия по углу     |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               (  ""  - время открытия текущего бара)  |
//|    t1 - время открытия бара        (  0   - Time[10]                       |
//|    p1 - ценовой уровень            (  0   - Low[10])                       |
//|    t2 - время открытия бара        (  0   - время открытия текущего бара)  |
//|    p2 - ценовой уровень            (  0   - по углу)                       |
//|    an - угол                       (  0   - по умолчанию)                  |
//|    ry - луч                        (False - не луч)                        |
//|    st - стиль линии                (  0   - простая линия)                 |
//|    wd - ширина линии               (  1   - по умолчанию)                  |
//+----------------------------------------------------------------------------+
void SetTLineByAngle(color cl, string nm="",
              datetime t1=0, double p1=0, datetime t2=0, double p2=0,
              double an=0, bool ry=False, int st=0, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[10];
  if (p1<=0) p1=Low[10];
  if (t2<=0) t2=Time[0];
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TRENDBYANGLE, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1 , t1);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_TIME2 , t2);
  if (p2>0) ObjectSet(nm, OBJPROP_PRICE2, p2);
  else ObjectSet(nm, OBJPROP_ANGLE, an);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_RAY  , ry);
  ObjectSet(nm, OBJPROP_STYLE, st);
  ObjectSet(nm, OBJPROP_WIDTH, wd);
}
Причина обращения: