Как рисовать на меньших периодах по расчётам старших

 

Вот код, не пойму что именно нужно сделать чтобы на 5-и минутках вырисовывались линии по расчётным данным 15-и мин

Подскажите плиз

//+------------------------------------------------------------------+
//|                                                        Bears.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Bears Power"
#property indicator_chart_window
#property indicator_buffers 3
input int число_элементов=40;
input int starts=10;
input int постЦена=2;
input int текЦена=1;//тек_цена 0=cl 1=op 2=hig 3=low
input int maa=1;
input int maa1=1;
double ExtBearsBuffer[];
double ExtTempBuffer[];
double RedBuffer[];
double BlueBuffer[];
double Buffer[];
int i,copyMax,copyMin;
double ma, ma1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
   string short_name;
//--- 1 additional buffer used for counting.
   IndicatorBuffers(5);
   IndicatorDigits(Digits);
//--- indicator line
   SetIndexBuffer(4,ExtTempBuffer); 
   SetIndexBuffer(3,ExtBearsBuffer);
   SetIndexBuffer(2,Buffer); 
   SetIndexBuffer(1,RedBuffer);
   SetIndexBuffer(0,BlueBuffer);
//--- name for DataWindow and indicator subwindow label
   SetIndexStyle(0,DRAW_ARROW,0,0,clrBlue);
   SetIndexArrow(0,159);
   SetIndexStyle(1,DRAW_ARROW,0,0,clrRed);
   SetIndexArrow(1,159);
   SetIndexStyle(2,DRAW_ARROW,0,0,clrFuchsia);
   SetIndexArrow(2,159);
  }
//+------------------------------------------------------------------+
//| Bears Power                                                      |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int limit=rates_total-prev_calculated,oo, o2=iBarShift(NULL,PERIOD_M15,iTime(NULL,PERIOD_M15,i));
   double tr;
   datetime d1, d2;
   
 for(i=0; i<limit; i++) {
 ExtTempBuffer[i]= iMA(NULL,PERIOD_M15,maa1,0,0,постЦена,i); }
      
      for(i=0; i<limit; i++){
      oo=iBarShift(NULL,PERIOD_M15,Time[i+starts]); 
      tr=ExtTempBuffer[ArrayMinimum(ExtTempBuffer,число_элементов,oo)];   
      ma = iMA(NULL,PERIOD_M15,maa,0,0,текЦена,i);
      ExtBearsBuffer[i]=(ma-tr);    }
      
 for(i=0; i<limit; i++){
 if(ExtBearsBuffer[i]>0)  {BlueBuffer[i]= Low[i]-10*Point*10; /*d1=iTime(NULL,PERIOD_M15,i);*/ }
 if(ExtBearsBuffer[i]<0)   {RedBuffer[i]= Low[i]-10*Point*10; /*d2=iTime(NULL,PERIOD_M15,i); */} 
 }
      
   return(rates_total);
  }
//+------------------------------------------------------------------+

  Заранее благодарен

 
sdf3733:

Вот код, не пойму что именно нужно сделать чтобы на 5-и минутках вырисовывались линии по расчётным данным 15-и мин

Подскажите плиз

  Заранее благодарен

Просто запустите индикатор на 5-минутном графике чего-нибудь. 
 

так не получается

 
sdf3733:

так не получается

 

У меня получается

 

Ваши - точечки, остальное - мое.  

 

Да вот что-то не получается как хочется, к примеру на 15 мин евро ена, с 18.00 сегодняшнего дня показывает синие точки

ставлю вертикальную линию на это время

переключаю на 5 мин, и с 18.00 идут и синие и красные точки

а нужно только синие как на 15 мин, вот что нужо

 
sdf3733:

Да вот что-то не получается как хочется, к примеру на 15 мин евро ена, с 18.00 сегодняшнего дня показывает синие точки

ставлю вертикальную линию на это время

переключаю на 5 мин, и с 18.00 идут и синие и красные точки

а нужно только синие как на 15 мин, вот что нужо

Я еще не волшебник, я только учусь... 
 

Я в ручную просматриваю данный индикатор, и очень не удобно с 15 мин потом смотреть на 5 мин

 хочется на чарте 5 мин смотреть данный по 15 мин, т.е что происходит внутри 15 мин, 

хочу облекчить работу, 

принцип работы индикатора яснее будет понятен, если его в отдельное окно поместить и в конце блока вместо Low прописать

 if(ExtBearsBuffer[i]>=0) {RedBuffer[i]= ExtBearsBuffer[i]; }

 if(ExtBearsBuffer[i]<0)  {BlueBuffer[i]= ExtBearsBuffer[i];  } 

 

Индикатор мне очень интересен, если желаете проработайте с ней, может как-то удасться с чем-то синхронизировать,

 либо улучшить работу,

поделитесь

 
tara:

У меня получается

 

Ваши - точечки, остальное - мое.  

а что у Вас за индикатор если не секрет? который на скрине рисует горизонтальные уровни?
 
kocunyc89:
а что у Вас за индикатор если не секрет? который на скрине рисует горизонтальные уровни?
iStumbles. Он еще не готов к работе. 
 
sdf3733:

Вот код, не пойму что именно нужно сделать чтобы на 5-и минутках вырисовывались линии по расчётным данным 15-и мин

Подскажите плиз

  Заранее благодарен

Вообще-то в таком (прямолинейном, как у Вас в коде) использовании данных со старшего периода есть неочевидная тонкость: если Вы используете со старшего периода для нулевого бара цену, отличную от цены открытия, то получаете индикатор, который заглядывает в будущее на период старшего графика. Ценность в таком варианте для реальной торговли = 0. Советник, работающий на основе этих сигналов, будет в реале работать совсем не так как ожидается, исходя из истории. Это же относится и к результатам ручной торговли, при построении стратегии, исходя из показаний по истории.
 
tara:
iStumbles. Он еще не готов к работе. 
скажите, будет ли он в доступе?)