Визуализация данных - Графики

 

Приветы,

Вопрос : как вы обычно визуализируете данные, более конкретно - есть ЦВР (вообще любой ряд), применяем к нему опр. фильтр (изменяем) и хотим отобразить измененную версию - как это сделать?

Варианты, которые точно возможны, но не очень удобны :

- писать измененные значения в файл в формате CSV и открывать в Excel

- писать свою DLL с графикой

Но интересней всего - можно ли это сделать стандартными средствами МТ5, т.е. открыть окно, в котором ничего не рисуется, есть только ось Х - время, ось У - цена и, передав этому окну свои значения, получить график измененного ЦВР?

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5
 
RStudio
 
Документация по MQL5: Стандартная библиотека / Класс для создания пользовательской графики
Документация по MQL5: Стандартная библиотека / Класс для создания пользовательской графики
  • www.mql5.com
Стандартная библиотека / Класс для создания пользовательской графики - Документация по MQL5
 

Ребят, вы чего?

Это же обычный индикатор.

В подокне (и растянуть его повыше) или на основном графике, скрыв свечи (но тогда с той же шкалой). 

 
komposter:

Ребят, вы чего?

Это же обычный индикатор.

В подокне (и растянуть его повыше) или на основном графике, скрыв свечи (но тогда с той же шкалой). 

Если на канве, то тогда нет зависимости от горизонтальной шкалы графика и можно уместить все данные по ширине окна/подокна.

P.S. Правда там есть один неприятный моментик, который пока придётся исправлять самостоятельно (в стандартной библиотеке), но кто говорил, что будет легко. ) 

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
tol64:

Если на канве, то тогда нет зависимости от горизонтальной шкалы графика и можно уместить все данные по ширине окна/подокна.

P.S. Правда там есть один неприятный моментик, который пока придётся исправлять самостоятельно (в стандартной библиотеке), но кто говорил, что будет легко. ) 

Так человеку не надо чего-то сверх-сложного, он же написал:

 есть ЦВР (вообще любой ряд), применяем к нему опр. фильтр (изменяем) и хотим отобразить измененную версию 

 

 Это HeikenAshi. В более сложном случае (со своей шкалой) - в отдельном подокне.

 
tol64:

P.S. Правда там есть один неприятный моментик, который пока придётся исправлять самостоятельно (в стандартной библиотеке), но кто говорил, что будет легко. ) 

что за моментик, ты о чём ?  подробнее можно ?
 
MetaDriver:
что за моментик, ты о чём ?  подробнее можно ?

Я об использовании графиков из стандартной библиотеки. Легко обнаружить в динамике при поступлении новых данных. Постоянно происходит смещение серий от правой части графика построенного на канве. Частично удалось решить (победил пока только смещение, которое доходит до полного исчезновения серий), но нужно ещё корректировать алгоритм сжатия, так как при поступлении большего количества данных или при уменьшении ширины графика-канвы, серии становятся "пушистыми". 

То есть, вот так нормально:

//---

...а вот так уже нет:

 

//---

Пока занят другими задачами, но потом нужно решить. )

 
MetaDriver:

В Сервисдеске всё это уже подробно осветил и даже есть одобрение. Выложу здесь тоже список предложений, см. ниже. Просто разработчики сейчас видимо более важные задачи выполняют, так что мы наедине со своими запросами. :)

 

Предложения и замечания по построению диаграмм:

1. При увеличении массива данных происходит смещение от правого края графика.

2. В какой-то момент (зависит от ширины графика), если данных становится довольно много, то они просто не отображаются. Данных может понадобиться отобразить очень много. Пусть будет ограничение, как в Excel. То есть, насколько хватит оперативной памяти.

3. Предлагаю добавить метод ScaleDigits() в класс CChartCanvas:

//+------------------------------------------------------------------+ //| Set scale digits | //+------------------------------------------------------------------+ void CChartCanvas::ScaleDigits(int value) { m_scale_digits=value; }


4. Предлагаю дать выбор пользователю, какой метод для отрисовки серий использовать. 

На текущий момент используется метод LineAA(), но кому-то может понадобиться Line(). Line() более чёткий. Что-то вроде этого по смыслу: chart.ModeDrawLine(LINE_AA); или chart.ModeDrawLine(LINE);

5. То же самое и со стилем линии для сетки в методе DrawGrid(). Нужно примерно так:

  • chart.DrawGridStyle(STYLE_DOT);
  • chart.DrawGridStyle(STYLE_DASH);
  • chart.DrawGridStyle(STYLE_SOLID);

6. Нужно добавить горизонтальную шкалу, а также возможность показывать вертикальные полосы сетки. Значения для шкалы желательно тоже настраивать. То есть, устанавливать их либо около оси, либо внизу области построения.

7. Непонятно, что должен делать метод DataOffset(). При изменении значения ничего не меняется.

8. Нужен метод для изменения толщины линии.

9. Сейчас есть возможность задавать цвет фона для области диаграммы. Нужно ещё отдельно задавать цвет для области построения.

10. Нужна заливка градиентом. Для начала линейный для прямоугольников. Это очень преобразит внешний вид диаграмм. Также для диаграмм типа гистограмма тоже желательно сделать метод заливки градиентом для столбиков гистограммы.

11. Нужны более гибкие настройки для легенды. Сейчас это довольно большие квадраты. Нужна возможность настраивать размер, а может даже и форму (кружки, линии, треугольники).

12. Сейчас есть возможность установить рамку для области диаграммы. Нужно отдельно ещё настраивать рамку для области построения. Сейчас цвет для рамки области построения общий с цветом текста вертикальной шкалы и самой оси. В общем, нужно вот так:

  • Цвет для текста шкалы настраивается отдельно.
  • Цвет для рамки области построения тоже отдельно. Сейчас рамка устанавливается для каждой стороны отдельно методами ShowScaleTop(), ShowScaleBottom(). Это неудобно.  Нужно устанавливать сразу все по всем сторонам, а отображение шкалы уже устанавливается сверху методами ShowScaleRight() и ShowScaleLeft().
  • Цвет шкалы тоже нужно настраивать отдельно.

13. Максимум и минимум области построения конечно желательно, чтобы подстраивался автоматом в зависимости от максимального и минимального значения в сериях.

14. Для каждого значения отображать маркер, как в Excel. Это может быть фигура на выбор (кружок, квадрат, треугольник). 

 


 

Предлагайте свои идеи по этой теме. 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5