Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Переходите от теории к практике. Code Base поможет!
Sergey Maksiutenko
185
Sergey Maksiutenko 2014.05.30 14:28 

Уважаемые знатоки, подскажите как на графике поставить точку (или маленький отрезок) с привязкой к текущему значению индикатора.

Смысл в том, что бы построить график того же индикатора (например ТМА) и сравнить его "путь".

Ибо сам индикатор изменяет свои исторические значения пересчитываясь по текущей цене.


Спасибо. 

Artyom Trishkin
69078
Artyom Trishkin 2014.05.30 15:56  

Вот, Витя (Vinin) как-то давно делал неперерисовывающийся. Если я правильно его конечно нашёл у себя в хламе... :)

//+------------------------------------------------------------------+
//|                                                    Vinin_TMA.mq4 |
//|                                            Copyright 2013, Vinin |
//|                                                    vinin@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Vinin"
#property link      "vinin@mail.ru"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 Blue
#property indicator_color3 Red
//--- input parameters
extern int    HalfLength      = 56;
extern int    Price           = PRICE_OPEN;
extern int    mode            = MODE_LWMA;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(4);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE,2);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE,2);
   SetIndexBuffer(2,ExtMapBuffer3);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int i, limit=Bars-counted_bars-1;
   for (i=limit;i>=0;i--) {
      ExtMapBuffer1[i]=iMA(NULL, 0, HalfLength, 0, mode, Price, i);
      double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier;
      ExtMapBuffer2[i] = ExtMapBuffer1[i]+range;
      ExtMapBuffer3[i] = ExtMapBuffer1[i]-range;   
   }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

Поглядите - текущие данные совпадают с TMA, а историю не должен перерисовывать. Если не то - поищу у себя в кладовочке другое...

Sergey Maksiutenko
185
Sergey Maksiutenko 2014.05.30 16:05  
artmedia70:

Вот, Витя (Vinin) как-то давно делал неперерисовывающийся. Если я правильно его конечно нашёл у себя в хламе... :)

Поглядите - текущие данные совпадают с TMA, а историю не должен перерисовывать. Если не то - поищу у себя в кладовочке другое...


Спасибо. Протестирую - отзовусь.
Sergey Maksiutenko
185
Sergey Maksiutenko 2014.05.30 16:13  
artmedia70:

Вот, Витя (Vinin) как-то давно делал неперерисовывающийся. Если я правильно его конечно нашёл у себя в хламе... :)

Поглядите - текущие данные совпадают с TMA, а историю не должен перерисовывать. Если не то - поищу у себя в кладовочке другое...


Хотя я предполагал код попроще.

По сути имея текущие значения ТМА (мин, мах, сигнал) достаточно при открытии (закрытии) текущего бара

в этом месте на графике поставить произвольную отметку (точку).

Но в графических объектах точки нет. Поставить точку текстовую нельзя - нет привязки к цене и времени.

Отсюда и возник вопрос. Может кто-то придумал что-нить подобное.

Artyom Trishkin
69078
Artyom Trishkin 2014.05.30 16:17  
snmax:

Хотя я предполагал код попроще.

По сути имея текущие значения ТМА (мин, мах, сигнал) достаточно при открытии (закрытии) текущего бара

в этом месте на графике поставить произвольную отметку (точку).

Но в графических объектах точки нет. Поставить точку текстовую нельзя - нет привязки к цене и времени.

Отсюда и возник вопрос. Может кто-то придумал что-нить подобное.


Так это же индикатор ... такой же, как и ваш TMA, но неперерисовывающийся. Его и используйте вместо своего. Зачем городить гору точек?

Впрочем - нет ничего проще, чем поставить точку на график.

Sergey Maksiutenko
185
Sergey Maksiutenko 2014.05.30 16:19  
artmedia70:

Так есть же индикатор такой же, но неперерисовывающийся. Зачем городить гору точек?

Впрочем - нет ничего проще, чем поставить точку на график.



В этом же и вопрос )) подскажите как ? Я вот не знаю ((
Artyom Trishkin
69078
Artyom Trishkin 2014.05.30 16:24  
snmax:

В этом же и вопрос )) подскажите как ? Я вот не знаю ((
Графический объект OBJ_TREND с одинаковыми координатами времени и цены. Толщина точки == ширина линии.
Sergey Maksiutenko
185
Sergey Maksiutenko 2014.05.30 16:27  
artmedia70:
Графический объект OBJ_TREND с одинаковыми координатами времени и цены. Толщина точки == ширина линии.


Как всё просто )) Спасибо.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий