Вертикальные индикаторы в МТ4 - страница 2

 
Nikolai Semko:
Писать всегда нужно самому, если вы хотите полной свободы и независимости. Канвас даёт полную свободу и независимость. Создавайте хоть статические, хоть динамические, хоть вертикальные, хоть горизонтальные, хоть градиентные, хоть в крапинку, хоть в диагональную полосочку объекты и чарты.

Понятно, что это красиво и круто. Понятно, что у канваса большие возможности, но мне-то так много не нужно.

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

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

 
Dmitriy Voevodkin:

Понятно, что это красиво и круто. Понятно, что у канваса большие возможности, но мне-то так много не нужно.

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

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

Ну вот, скатились до уровня обсуждения: мне это очень тяжело и долго, а вот кому-то (кому это вообще не нужно) раз плюнуть. Зачем так вот оценивать чужое время и возможности?

 
Dmitriy Voevodkin:

Понятно, что это красиво и круто. Понятно, что у канваса большие возможности, но мне-то так много не нужно.

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

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

Скажите, это сложный код?

#property indicator_chart_window
#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164

input int ma_period = 20; // Период МА

int    handle; 
double values[];
int OnInit()
  {
   delete Canvas;
   Canvas= new iCanvas(0,0,0,"iCanvas",300,0);          // только левая полоса окна шириной 300 пикселей. Изменение размеров окна контролируется 
   handle=iMA(NULL,0,ma_period,0,MODE_SMA,PRICE_CLOSE); 
   DrawChart();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) {
   return(rates_total);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {
   if (id==CHARTEVENT_CHART_CHANGE || id == CHARTEVENT_MOUSE_MOVE) DrawChart();
}
//+------------------------------------------------------------------+
void DrawChart() {
   int size=(W.Left_bar-int(W.Right_bar))*W.dx_pix;
   size = CopyBuffer(handle,0,int(W.Right_bar),size,values);
   uint clr_bgrd = Canvas.Grad(double(W.MouseX)/W.Width);
   Canvas.Erase(clr_bgrd);
   Canvas.Rectangle(2,2,Canvas.m_width-3,Canvas.m_height-3,~W.Color);
   int start = size-1-(int)Canvas.Bar(W.MouseX)+int(W.Right_bar);
   for (int x=Canvas.m_width-5, i=start;x>3; x--, i--) if (i<(size-1) && i>=0) Canvas.LineD((double)x,_Y(values[i]), (double)x+1,_Y(values[i+1]),~clr_bgrd|0xFF000000);
   Canvas.Update();
}


 
Nikolai Semko:

Скажите, это сложный код?

Николай, ему радуга не нужна

код будет еще проще

 
Nikolai Semko:

Скажите, это сложный код?

Круто
 
Renat Akhtyamov:

Николай, ему радуга не нужна

код будет еще проще

для реализации радуги одна строчка ))

uint clr_bgrd = Canvas.Grad(double(W.MouseX)/W.Width);
 
Nikolai Semko:

для реализации радуги одна строчка ))

ааа

не вникал

 
Ihor Herasko:

Ну вот, скатились до уровня обсуждения: мне это очень тяжело и долго, а вот кому-то (кому это вообще не нужно) раз плюнуть. Зачем так вот оценивать чужое время и возможности?

Если вы не обратили внимание, то я не прошу "напишите мне", а делаю упор на "разработчикам это не сложно". Мне кажется этот функционал очевидным и полезным, и я искал ответ "есть ли он". Был разочарован, а также понимаю, что разрабам писать бессмысленно.

Кстати, я только сейчас понял. Ради "моего" функционала, люди покупают второй монитор и поворачивают его вертикально. Хотя можно было бы ограничиться обычным WFHD.


Nikolai Semko:

Скажите, это сложный код?


Не спорю - код простой. Но что для этого нужно знать?

1. Нужно знать препроцессор и как им управлять.

2. Нужно знать обработчики событий и их нюансы.

3. Нужно знать графическую подсистему МТ

4. Нужно знать библиотеку Canvas.

Также в коде я не вижу возможности менять ширину окна индикаторов, возможности разделять это окно на произвольное количество подокон и произвольно менять их содержимое. И всё это конечно же мышкой. Подозреваю, что код немного распухнет. =)

Скорее всего, вы такое написать можете и количество кода не будет исчисляться 1 млн. строк, но какой объём опыта, знаний и времени для изучения нужно, чтобы реализовать такую простую функцию? 

 
Dmitriy Voevodkin:

Если вы не обратили внимание, то я не прошу "напишите мне", а делаю упор на "разработчикам это не сложно". Мне кажется этот функционал очевидным и полезным, и я искал ответ "есть ли он". Был разочарован, а также понимаю, что разрабам писать бессмысленно.

Кстати, я только сейчас понял. Ради "моего" функционала, люди покупают второй монитор и поворачивают его вертикально. Хотя можно было бы ограничиться обычным WFHD.


Не спорю - код простой. Но что для этого нужно знать?

1. Нужно знать препроцессор и как им управлять.

2. Нужно знать обработчики событий и их нюансы.

3. Нужно знать графическую подсистему МТ

4. Нужно знать библиотеку Canvas.

Также в коде я не вижу возможности менять ширину окна индикаторов, возможности разделять это окно на произвольное количество подокон и произвольно менять их содержимое. И всё это конечно же мышкой. Подозреваю, что код немного распухнет. =)

Скорее всего, вы такое написать можете и количество кода не будет исчисляться 1 млн. строк, но какой объём опыта, знаний и времени для изучения нужно, чтобы реализовать такую простую функцию? 

улыбнуло...
Удачи в Ваших поисках.

 
Dmitriy Voevodkin:

Если вы не обратили внимание, то я не прошу "напишите мне", а делаю упор на "разработчикам это не сложно". Мне кажется этот функционал очевидным и полезным, и я искал ответ "есть ли он". Был разочарован, а также понимаю, что разрабам писать бессмысленно.

Кстати, я только сейчас понял. Ради "моего" функционала, люди покупают второй монитор и поворачивают его вертикально. Хотя можно было бы ограничиться обычным WFHD.


Не спорю - код простой. Но что для этого нужно знать?

1. Нужно знать препроцессор и как им управлять.

2. Нужно знать обработчики событий и их нюансы.

3. Нужно знать графическую подсистему МТ

4. Нужно знать библиотеку Canvas.

Также в коде я не вижу возможности менять ширину окна индикаторов, возможности разделять это окно на произвольное количество подокон и произвольно менять их содержимое. И всё это конечно же мышкой. Подозреваю, что код немного распухнет. =)

Скорее всего, вы такое написать можете и количество кода не будет исчисляться 1 млн. строк, но какой объём опыта, знаний и времени для изучения нужно, чтобы реализовать такую простую функцию? 

Тут нюансик. На сколько я в курсе  платформа дорабатывается не по чьей то единичной хотелке. 
Причина обращения: