Опережающий индикатор

 
Поподробне напишите. Что значит сметить канал в будущее?
 
В общем функция старт представляет такую вот шапку. При этом нулевое значение индекса i соответствует настоящему времени. В связи с этим, линии будут отображаться не правее текущего графика котировок. А мне нужно расположить линии правее, т.к. их показания будут являться прогнозными на ближайшее будущее. Что нужно для этого сделать? Может ли индекс i быть отрицательным?
 
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
 
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
 
   for(int i=0; i<limit; i++)
   {
 
   Buffer1[i]=.......;
   Buffer2[i]=.......;
   Buffer3[i]=.......;
   .........
   }
   return;
  }
 

Индекс отрицательным быть не может. Но решение есть.

Единственно, что будет плохо, - это невозможность учета "пропавших" баров - выходных, праздничных и т.д.

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

Как вычислить будущее время. Имеем нулевой бар с известным временем, выраженным в количестве секунд = n.

-1 бар - то есть бар, которого еще нет, в будущем будет иметь время n + period()*60

Произвольный бар в будущем = -m будет иметь время n + m*period()*60

И это все.

 
Спасибо за уделённое время, но как практически рисуется в индикаторе линия, которая будет изображаться правее графика?
 
coaster:
Спасибо за уделённое время, но как практически рисуется в индикаторе линия, которая будет изображаться правее графика?

Посмотри https://docs.mql4.com/ru/customind/SetIndexShift
 
Vinin:
coaster:

Спасибо за уделённое время, но как практически рисуется в индикаторе линия, которая будет изображаться правее графика?


Посмотри https://docs.mql4.com/ru/customind/SetIndexShift

О. В точку. Благодарю безмерно.
 
coaster:
Спасибо за уделённое время, но как практически рисуется в индикаторе линия, которая будет изображаться правее графика?


Время точки привязки линии определили по вышеприведенной формуле. Цена вычислена по Вашему алгоритму. Подставляете время и цену в

функцию создания объекта:


bool ObjectCreate(string name, int type, int window, datetime time1, double price1, datetime time2=0, double price2=0, datetime time3=0, double price3=0)

И все. Так практически и делается. По крайней мере, у меня так.