ZARA  

Уважаемые форумчане. Я только начал программировать. Пожалуйста, помогите мне в этом вопросе.

Что делать, чтобы найти свечи в М5 в М1? Посмотрите на картинку, я объяснил более наглядно.

Как нарисовать эти вертикальные линии в начальных зонах свечи?

Файлы:
Screenshot_9.jpg  129 kb
Vladimir Karputov  
ZARA:

Уважаемые форумчане. Я только начал программировать. Пожалуйста, помогите мне в этом вопросе.

Что делать, чтобы найти свечи в М5 в М1? Посмотрите на картинку, я объяснил более наглядно.

Как нарисовать эти вертикальные линии в начальных зонах свечи?

Это нужно делать в индикаторе при помощи вертикальных линий. В индикаторе в OnCalculate у Вас есть массив time. Остаётся узнавать к какой свече M5 относится текущая свеча M1. После этого сравнивать время открытия M5 и M1 - если оно совпадает создавать вертикальную линию. 

Но это так сказать теория. Пытайтесь сделать хоть что-то самостоятельно, потом задайте вопрос.

Konstantin Erin  
ZARA:

Уважаемые форумчане. Я только начал программировать. Пожалуйста, помогите мне в этом вопросе.

Что делать, чтобы найти свечи в М5 в М1? Посмотрите на картинку, я объяснил более наглядно.

Как нарисовать эти вертикальные линии в начальных зонах свечи?

//+---------------------------------------------------------+
//| M5 на M1                                     Пример.mq5 |
//+---------------------------------------------------------+
int         UseBars=100; // Количество баров для расчета
datetime    Open[];      // Массив для времен открытия баров
MqlDateTime mmm;         // Структура времени

void OnStart()
{
   /* Определим таймфрейм графика, на который брошен скрипт
      Если это не M1 - то сообщение об ошибке и выход
   */
   if(_Period != PERIOD_M1)
   {
      Alert("Переключитесь на таймфрейм M1");
      return;
   }

   // На всякий случай удалим все объекты с графика M1
   ObjectsDeleteAll(0, 0);

   // Установим индексацию массива как в таймсерии с конца
   ArraySetAsSeries(Open,true);

   // Скопируем в массив времена открытия баров
   if(CopyTime(_Symbol, PERIOD_M1, 0, UseBars, Open)<UseBars)
   {
      Alert("Скопировалось мало времен открытия баров");
      return;
   }

   // Рассмотрим все бары
   for(int n=0; n<UseBars; n++)
   {
      TimeToStruct(Open[n], mmm);
      if(!(mmm.min % 5))    // Если минуты кратны 5
      {
         ObjectCreate(0, (string)n, OBJ_VLINE, 0, Open[n], 0);
         // Тут этим линиям свойства изменим
         ObjectSetInteger(0, (string)n, OBJPROP_COLOR, White); // Цвет
      }
   }

}
Вот!
Vladimir Karputov  
ZARA:

Уважаемые форумчане. Я только начал программировать. Пожалуйста, помогите мне в этом вопросе.

Что делать, чтобы найти свечи в М5 в М1? Посмотрите на картинку, я объяснил более наглядно.

Как нарисовать эти вертикальные линии в начальных зонах свечи?

Пожалуйста не создавайте дубли тем. Если Вы создали тему - хотя бы читайте ответы в теме.

Dmitry Fedoseev  

Если в индикаторе: 

if(time[i]/300!=time[i-1]/300) ...рисовать линию
Dmitry Fedoseev  
Konstantin Erin:
Вот!

На минутка часто бывают пропуски баров, ваш метод сработает не всегда полностью.

Vladimir Karputov  
Dmitry Fedoseev:

На минутка часто бывают пропуски баров, ваш метод сработает не всегда полностью.

Нужно найти пропуски на M1 и попробовать iBarShift. Не подскажите дату и символ где можно проверить?

Valeriy Yastremskiy  
Dmitry Fedoseev:

На минутка часто бывают пропуски баров, ваш метод сработает не всегда полностью.

Не встречал пропусков в живую. А что терминал рисует? вроде при отсутствии тиков в течении минуты новый следующий бар он должен нарисовать на правильном времени? А на месте пропуска тиков не должно быть бара.

Vladimir Karputov  
Valeriy Yastremskiy:

Не встречал пропусков в живую. А что терминал рисует? вроде при отсутствии тиков в течении минуты новый следующий бар он должен нарисовать на правильном времени? А на месте пропуска тиков не должно быть бара.

Немного не про пропуски, а про символы, которые торгуются только определенное время.

Вот пример, акции Microsoft. Дневной бар - 00:00

 

а если посмотреть боле мелкий таймфрейм, то видно, что торговля реально началась с 15:30


Dmitry Fedoseev  
Vladimir Karputov:

Нужно найти пропуски на M1 и попробовать iBarShift. Не подскажите дату и символ где можно проверить?

GBPUSD 2021.08.02 00.00.00

А зачем пробовать IBarShift(), известно - если бара с указанным временем не существует, возвращается индекс предшествующего бара или -1 (в зависимости от 4-го параметра).

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