Помогите дополнить код индикатора

 

Индикатор рисует уровни за "hPeriod", в данном случае 24 бара

//+------------------------------------------------------------------+
//|                                                 !HighLowLine.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Gold
#property indicator_color2 Lime
#property indicator_width1 1
#property indicator_width2 1
//---- input parameters
extern int Shift=2;
extern int hPeriod=24;
//---- buffers
double HighLine_Buf[];
double LowLine_Buf[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//----
   SetIndexStyle(0,DRAW_ARROW,0); 
   SetIndexArrow(0,159);
   SetIndexBuffer(0,HighLine_Buf);
   SetIndexDrawBegin(0,hPeriod-1);
   SetIndexShift(0,Shift);
   SetIndexLabel(0,"Line High");
//----
   SetIndexStyle(1,DRAW_ARROW,0); 
   SetIndexArrow(1,159);
   SetIndexBuffer(1,LowLine_Buf);
   SetIndexDrawBegin(1,hPeriod-1);
   SetIndexShift(1,Shift);
   SetIndexLabel(1,"Line Low");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i,k;
   int    counted_bars=IndicatorCounted();
   double high,low,price;
//----
   if(Bars<=hPeriod) return(0);
   if(counted_bars<1)
     {
      for(i=1;i<=hPeriod;i++)  { HighLine_Buf[Bars-i]=0; LowLine_Buf[Bars-i]=0; }
     }
//---- 
   i=Bars-hPeriod;
   if(counted_bars>hPeriod) i=Bars-counted_bars-1;
   while(i>=0)
     {
      high=High[i]; low=Low[i]; k=i-1+hPeriod;
      while(k>=i)
        {
         price=High[k];
         if(high<price) high=price;
         price=Low[k];
         if(low>price)  low=price;
         k--;
        }
      HighLine_Buf[i]=high;
      LowLine_Buf[i]=low;
    i--;
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+

Я не силен в MQL4, поэтому прошу знающих помочь.

Мне надо, что индикатор показывал эти уровни вперед на 8-10 баров, уменьшая "hPeriod",

т.е. один бар вперед "hPeriod=23 бара", два бара вперед "hPeriod=22 бара" и так далее.

Ниже картинка, где я эти уровни нарисовал(красные крестики)


 
Надо в индикаторе логику разбить. Одна считает как есть по истории, вторая как хочешь на нужном количестве баров
 
Vinin >>:
Надо в индикаторе логику разбить. Одна считает как есть по истории, вторая как хочешь на нужном количестве баров

Я это понимаю,но..

Я не силен в MQL4, поэтому прошу знающих помочь.

 
MakarFX писал(а) >>

Я это понимаю,но..

Я не силен в MQL4, поэтому прошу знающих помочь.

А зачем это делать? Точнее что это может дать?

Сделать не трудно, но в любой работе должен быть хоть какой-то смысл. Пока я его не вижу.

 

Я наверно немного не правильно выразил мысль...

Мне надо, чтоб индикатор показывал уровни вперед на 8-10 баров, не уменьшая "hPeriod",

а добавлял в расчет виртуальный бар вперед, равный предыдущему, т.е. счита бары с (22,21...1,0,-1).

 
Vinin >>:

А зачем это делать? Точнее что это может дать?

Сделать не трудно, но в любой работе должен быть хоть какой-то смысл. Пока я его не вижу.

Это может дать "моральное удовлетворение", Вы можете просто помочь.

Если Вам сложно, я подожду других, мир не без добрых людей.

 
MakarFX писал(а) >>

Я наверно немного не правильно выразил мысль...

Мне надо, чтоб индикатор показывал уровни вперед на 8-10 баров, не уменьшая "hPeriod",

а добавлял в расчет виртуальный бар вперед, равный предыдущему, т.е. счита бары с (22,21...1,0,-1).

То есть. Нужно заглядывание в будущее (по виртуальным барам). А откуда эти бары брать?

 
Vinin >>:

То есть. Нужно заглядывание в будущее (по виртуальным барам). А откуда эти бары брать?

Я написал,"виртуальный бар вперед, равный предыдущему" либо текущей цене.

 
MakarFX писал(а) >>

Я написал,"виртуальный бар вперед, равный предыдущему"

Самый простой вариант - использование объектов. Тогда логика индикатора не изменится, а добавится только функция по работе с объектами. Расчет и отрисовка. В советниках будет довольно проблематично это использовать.

Можно сделать два индикатора. Один рисует историю, второй только дополнительную часть.

Но пока все еще не могу понять зачем это нужно и соответсвенно морального удовольствия, боюсь, тоже не получу.

Надо же хоть как-то объяснить нужность затеи.

 
Простым языком, если SМА с периодом 1 и сдвигом 24 по High будет рисовать зигзаг впереди графика, то мне надо рисовать точки.
 
Vinin >>:

Надо же хоть как-то объяснить нужность затеи.

Нужность затеи в том, чтоб знать когда надо вернуться к компьютеру и где ставить стоп.

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