ObjectGetValueByShift - на какую же точку он (луч) проектируется?

 

Подскажите, пожалуйста... Функция ObjectGetValueByShift проектируется на заданный бар. Если этот бар - нулевой, какое значение возвращается - для текущего времени или для времени, когда этот бар должен сформироваться?


P.S. Искал, не нашел.

 
Я написал простой индикатор, который может дать ответ на этот вопрос.

//+------------------------------------------------------------------+
//|                                   CheckObjectGetValueByShift.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net/ru/"
 
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters
extern string    LineName="Sample";
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int i,limit,firstBar=WindowFirstVisibleBar()-WindowBarsPerChart();
//----
   if (ObjectFind(LineName)==0 && ObjectType(LineName)==OBJ_TREND)
      {
      if (counted_bars==0) limit=Bars;
      if (counted_bars>0) limit=Bars-counted_bars;
      limit--;
      Print("limit=",limit,"   firstBar=",firstBar);
      for (i=limit;i>=firstBar;i--) 
         {
         ExtMapBuffer1[i]=ObjectGetValueByShift(LineName,i);
         if (i<0 && i>-10) Print("ObjectGetValueByShift(LineName,",i,")=",ObjectGetValueByShift(LineName,i));
         }
      }
   else ArrayInitialize(ExtMapBuffer1,0);
            
//----
   return(0);
  }
//+------------------------------------------------------------------+
И сделал видеоинструкцию по его использованию :)




 
Rosh:
Я написал простой индикатор, который может дать ответ на этот вопрос.

И сделал видеоинструкцию по его использованию :)

Спасибо, Rosh. Это все понятно, хотя видео я почему-то не увидел. И это не совсем то, что мне хотелось бы понять. Если проиллюстрировать, что имелось ввиду: Time[1]-Time[2] - это практически таймфрейм. Time[0] - постоянно растет.

Какое значение цены возвращается при расчете ObjectGetValueByShift(Name,0):

а) соответствующее Time[0], которое постоянно ползет и при этом меньше или равно Time[1]-Time[2]?

б) соответствующее Time[1] плюс таймфрейм, то есть по достижении промежутка Time[1]-Time[2], добавленного к Time[1], когда нулевой бар ДОЛЖЕН ПОЛНОСТьЮ сформироваться?


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

 
Нет понятия времени, есть понятие индекса бара (свечи). Все время, пока свеча не закрыта, индекс его равен нулю, время начала бара тоже не меняется. А уже через этот индекс (смещение) бара мы получаем все необходимые данные для текущего тайм-фрейма:
цена открытия, объем (который меняется), High и Low (которые могут меняться) и Close (который обязательно менятся , пока свеча не сформирована).
 
Спасибо за помощь, теперь все ясно ;)
 

сами бы и написали не так уж это и сложно..

Причина обращения: