Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 803

 
prom18:

Может примеры есть. Визуально было бы доходчивей. Спасибо.

Если я правильно понял, что нужны бары в определенном временном интервале, то можно их выбрать используя iTime 
 
prom18:

Здравствуйте. Читаю учебник. Там есть примеры написания индикаторов. Возник вопрос по поводу индикатора separatewindow.mq4 Там можно задать количество расчетных баров. А если необходимо задать расчет от цены открытия дня (либо от нуля) и до цены закрытия дня? Как это сделать? Поиском пытался найти решение, не нашел.

вот нарисовал цену открытия дня на текущем ТФ

//+------------------------------------------------------------------+
//|                                                      DayOpen.mq4 |
//|                                            Copyright 2018, IgorM |
//|                              https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 i,limit;
   static double dayopen=0.0;
   static int lastday=0;
   if(prev_calculated==0)
     {
      limit=rates_total-1;
      dayopen=0.0;
      lastday=0;
     }
   else limit=rates_total-prev_calculated;
   for(i=limit; i>=0; i--)
     {
      if(TimeDay(time[i])!=lastday)
        {
         dayopen=open[i];
         lastday= TimeDay(time[i]);
        }
      Label1Buffer[i]=dayopen;
     }
   return(rates_total);
  }
 

Здравствуйте! Можно ли по условию найти нужный бар на истории ВПРАВО от заданного бара? Спасибо.

 
Sfinks35:

Здравствуйте! Можно ли по условию найти нужный бар на истории ВПРАВО от заданного бара? Спасибо.

Можно.

 
Artyom Trishkin:

Можно.

А как это сделать? Расскажите, пожалуйста.
 
Sfinks35:
А как это сделать? Расскажите, пожалуйста.

А как вы находите заданный бар?

 
Artyom Trishkin:

А как вы находите заданный бар?


Долго мучился, но написал вот такую функцию:

double GetPatt5barsDN()
      {  
       double low3 = 0;
       int index = 0;
       for(int i=1; i<20; i++)
          {
            if
            ((Close[i] > Open[i]) && 
            (Close[i+1] > Open[i+1]) &&
            (Close[i+2] > Open[i+2]) && //На этой свече нужен Low[i+2]
            (Close[i+3] < Open[i+3]) && 
            (Close[i+4] < Open[i+4]))
            
            low3 = Low[i+2];
            index = i+2;
          }
          
     return(low3);
      }

 
Igor Makanu:

вот нарисовал цену открытия дня на текущем ТФ

Спасибо, Igor. Только я не правильно сформулировал что нужно. Индикатор из учебника расчитывается и отрисовывается на заданное количество баров (в данном случае 50) и в separate window. Нужно не от цены открытия, а от первого бара дня чтобы рисовал МА-шку. Но все равно, спасибо.

 
Igor Makanu:

вот нарисовал цену открытия дня на текущем ТФ

Не подскажете ли, что обозначают в записи 

int i,limit=prev_calculated==0 ? rates_total-1 : rates_total-prev_calculated; 

"=="  ,   "?"  ,  ": "   

 
Sfinks35:


Долго мучился, но написал вот такую функцию:

Верните ещё и index в параметре функции, переданном по ссылке