Обсуждение статьи "Визуализируй это! Графическая библиотека в MQL5 как аналог plot из R" - страница 2

 
-Aleks-:

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

Добавить новую разметку в контексте вашей задачи будет довольно легко используя метод MarksToAxisAdd:‌

#include <Graphics\Graphic.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double x[]={-11,-11,11,11};
   double y[]={-10,10,-10,10};
//--- graphic
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);
//--- Points  
   CCurve *curve=graph.CurveAdd(x,y,CURVE_LINES);
   graph.CurvePlot(0);
//--- add marks to X-axis
   graph.MarksToAxisAdd(x,8,MARK_INTERNAL,0);
   graph.Update();
   Sleep(1000);
  }‌

P.S. Нужно учитывать, что метод MarksToAxisAdd не создает новых объектов. Т.е. при перерисовке графика методом Redraw эта разметка пропадет.

P.P.S. Если нужно не просто добавить новые засечки, но еще и подписать их, то это задача посложнее. Нужно будет пописывать каждую засечку вручную используя метод TextAdd.

 
Roman Konopelko:

Добавить новую разметку в контексте вашей задачи будет довольно легко используя метод MarksToAxisAdd:‌

#include <Graphics\Graphic.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double x[]={-11,-11,11,11};
   double y[]={-10,10,-10,10};
//--- graphic
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);
//--- Points  
   CCurve *curve=graph.CurveAdd(x,y,CURVE_LINES);
   graph.CurvePlot(0);
//--- add marks to X-axis
   graph.MarksToAxisAdd(x,8,MARK_INTERNAL,0);
   graph.Update();
   Sleep(1000);
  }‌

P.S. Нужно учитывать, что метод MarksToAxisAdd не создает новых объектов. Т.е. при перерисовке графика методом Redraw эта разметка пропадет.

P.P.S. Если нужно не просто добавить новые засечки, но еще и подписать их, то это задача посложнее. Нужно будет пописывать каждую засечку вручную используя метод TextAdd.

 

Спасибо за ответ.

Надо, что б насечки были параллельны - цель видеть два значения одной точки - соответственно нужны подписи точек. Не планируется ли сделать работу с графиком, как с графиком чарта - т.е. при наведении в окне навигации получать значения графика по шкалам?‌

 
-Aleks-:

 

Спасибо за ответ.

Надо, что б насечки были параллельны - цель видеть два значения одной точки - соответственно нужны подписи точек. Не планируется ли сделать работу с графиком, как с графиком чарта - т.е. при наведении в окне навигации получать значения графика по шкалам?‌

Как часть библиотеки Graphics данный функционал пока не планировался. Но в той же теме о библиотеки Graphics я уже встречал пользовательскую реализацию функционала, о котором вы говорите().‌

 
Roman Konopelko:

Как часть библиотеки Graphics данный функционал пока не планировался. Но в той же теме о библиотеки Graphics я уже встречал пользовательскую реализацию функционала, о котором вы говорите().‌‌

Спасибо за ссылку. Жаль, что не планируется - мне кажется, что для реальной работы с графиком это крайне полезно.

Такой вопрос меня мучает, на который, вероятно, Вы знаете ответ, так как много времени уделили работе с графиками, а я боюсь что опять изобрел велосипед - есть ли такой метод построения графика,‌ как наложение многослойных пирогов данных в виде матрицы друг на друга? По человечески (в физическом исполнении) это выглядит так - берем стекло - разлиновываем его на ячейки, в каждой ячейки зависимый показатель x от y, делаем нормализацию показателей, и раскрашиваем в зависимости от показателя ячейки на стекле градиентом одного цвета, потом следующий показатель с такой же матрицей, но другими значениями, так же нормируем и закрашиваем, но уже другим ветом. Результатом анализа будет палитра, которая получилась - предполагается, что по оттенку цвета и его способности пропускать свет, можно выявить закономерности влияния одного показателя на другой. (если что, то это моё ноу-хау :)) Что-то подобное есть в терминале, но там график по экстремумам, что совсем не то, но возможно, это навеяло мне мою идею.

 
-Aleks-:

Спасибо за ссылку. Жаль, что не планируется - мне кажется, что для реальной работы с графиком это крайне полезно.

Такой вопрос меня мучает, на который, вероятно, Вы знаете ответ, так как много времени уделили работе с графиками, а я боюсь что опять изобрел велосипед - есть ли такой метод построения графика,‌ как наложение многослойных пирогов данных в виде матрицы друг на друга? По человечески (в физическом исполнении) это выглядит так - берем стекло - разлиновываем его на ячейки, в каждой ячейки зависимый показатель x от y, делаем нормализацию показателей, и раскрашиваем в зависимости от показателя ячейки на стекле градиентом одного цвета, потом следующий показатель с такой же матрицей, но другими значениями, так же нормируем и закрашиваем, но уже другим ветом. Результатом анализа будет палитра, которая получилась - предполагается, что по оттенку цвета и его способности пропускать свет, можно выявить закономерности влияния одного показателя на другой. (если что, то это моё ноу-хау :)) Что-то подобное есть в терминале, но там график по экстремумам, что совсем не то, но возможно, это навеяло мне мою идею.

Вероятнее всего, я вас не правильно понял, но то что вы описываете для меня больше всего ассоциируется с классическими метода кластеризации из машинного обучения. Особенно это похоже на что-то вроде карт Кохонена.
 
Roman Konopelko:
Вероятнее всего, я вас не правильно понял, но то что вы описываете для меня больше всего ассоциируется с классическими метода кластеризации из машинного обучения. Особенно это похоже на что-то вроде карт Кохонена.

 Карты Кохонена - не совсем то, там иной принцип... я как раз думал, что такой подход будет способствовать машинному обучению... в общем, либо я думаю в верном направлении, либо этого ещё нет и надо сделать, что б оценить. Спасибо.

 
небольшая просьба, если не сложно, можно добавить возможность отрисовки свечей или баров по OHLC? Очень приглянулись эти холсты, хотел бы иметь возможность строить на них полноценные графики
 
Maxim Dmitrievsky:
небольшая просьба, если не сложно, можно добавить возможность отрисовки свечей или баров по OHLC? Очень приглянулись эти холсты, хотел бы иметь возможность строить на них полноценные графики
Может вам просто нужен DRAW_COLOR_CANDLES?
 
Rashid Umarov:
Может вам просто нужен DRAW_COLOR_CANDLES?


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

 
Maxim Dmitrievsky:


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

Добрый день!

Для подобных целей в библиотеке реализован режим CustomPlotFunction, пример использования как раз реализует примерно то что вам интересно.

P.S. Более подробно о нем написано на форуме .

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