Как вычислить крайние ценовые значения и календарные периоды?

 
Такой вопрос:
Можно ли в MQL5 узнать крайние точки отсчета(текущего масштаба и таймфрейма + размера графика), как относительно ценовых диапазонов так и относительно календарных дат?
(с точностью до минут или секунд возможно.)
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д.  Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов...
 
  1. Левый верхний угол: CHART_FIRST_VISIBLE_BAR и CHART_PRICE_MAX.
  2. Левый нижний угол: CHART_FIRST_VISIBLE_BAR и CHART_PRICE_MIN.
  3. Правый верхний угол: CHART_FIRST_VISIBLE_BAR - CHART_WIDTH_IN_BARS (учесть, что может быть выход за нулевой бар вправо) и CHART_PRICE_MAX.
  4. Правый нижний угол: CHART_FIRST_VISIBLE_BAR - CHART_WIDTH_IN_BARS (учесть, что может быть выход за нулевой бар вправо) и CHART_PRICE_MIN.
В соседней теме уже давали ссылку на эти константы.
 
Ihor Herasko:
  1. Левый верхний угол: CHART_FIRST_VISIBLE_BAR и CHART_PRICE_MAX.

***


\

А почему не корреткно берется максимальная цена в данном случае кто-нибудь в курсе?

 
Mike Kharkov:


А почему не корреткно берется максимальная цена в данном случае кто-нибудь в курсе?

Потому, что в данный момент активно другое окно графика, а все остальные считаются свёрнутыми. И это никак не решается. Во всяком случае я не читал какого либо положительного решения.

 

воспользуйтесь этой функцией

https://www.mql5.com/ru/docs/chart_operations/chartgetdouble

и необходимо правильно определить идентификатор окна (ChartID() вместо нуля подставьте)

тогда все будет работать как надо

Документация по MQL5: Операции с графиками / ChartGetDouble
Документация по MQL5: Операции с графиками / ChartGetDouble
  • www.mql5.com
ChartGetDouble - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mike Kharkov:


А почему не корреткно берется максимальная цена в данном случае кто-нибудь в курсе?

Потому что выведено значение константы, а не значение цены. Для определения значения цены нужно использовать функцию ChartgetDouble(), в которую передать эту константу.

 
Alexey Viktorov:

Потому, что в данный момент активно другое окно графика, а все остальные считаются свёрнутыми. И это никак не решается. Во всяком случае я не читал какого либо положительного решения.

Все там нормально, никаких проблем нет:

void OnStart()
{
   long chartID = ChartFirst();
   while (chartID > 0)
   {
      Print(ChartSymbol(chartID), ". Max: ", ChartGetDouble(chartID, CHART_PRICE_MAX), ", Min: ", ChartGetDouble(chartID, CHART_PRICE_MIN));      
      chartID = ChartNext(chartID);
   }
}

Результат:

2021.01.17 12:39:57.986 Test (USDCHF,H1)        EURUSD. Max: 1.2361, Min: 1.2069
2021.01.17 12:39:57.986 Test (USDCHF,H1)        USDCHF. Max: 0.8927, Min: 0.8754
2021.01.17 12:39:57.986 Test (USDCHF,H1)        USDJPY. Max: 104.48, Min: 102.55
2021.01.17 12:39:57.986 Test (USDCHF,H1)        GBPUSD. Max: 1.3722, Min: 1.3445
 
Ihor Herasko:

Потому что выведено значение константы, а не значение цены.

Ну да. Я и не глянул вообще…

Ihor Herasko:

Все там нормально, никаких проблем нет:

Результат:

Когда поменяли поведение? Помню читал о такой проблеме и разработчики объясняли такое поведение именно тем, что не активное окно вроде как свёрнуто.
 
Alexey Viktorov:

Ну да. Я и не глянул вообще…

Когда поменяли поведение? Помню читал о такой проблеме и разработчики объясняли такое поведение именно тем, что не активное окно вроде как свёрнуто.

Не следил. Да, когда-то была такая ошибка, но в двух или трех билдах подряд, т. е. исправили довольно быстро )) Поэтому у меня даже не успела сформироваться какая-либо реакция в виде костыльного кода на сей счет.

 
Ihor Herasko:

Не следил. Да, когда-то была такая ошибка, но в двух или трех билдах подряд, т. е. исправили довольно быстро )) Поэтому у меня даже не успела сформироваться какая-либо реакция в виде костыльного кода на сей счет.

Возможно я путаю с переводом координат в пикселях — в координаты цены и времени.

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

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