Индикаторы: 3D график - страница 2

 
ROMAN KIVERIN:

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

Сама система такого представления мне очень понравилась. Пока не видел чтобы кто-то рисовал 3Д графики. Решил поделиться. 

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

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

Многие баловались. В том числе, и я.
https://www.mql5.com/en/code/27733

https://www.mql5.com/en/code/27662

Но, конечно, для таких вещей лучше использовать MT5. 

А еще лучше DirectX:

https://www.mql5.com/ru/articles/7708

А еще лучше OpenCL:
https://www.mql5.com/ru/forum/162864
https://www.mql5.com/ru/forum/227736/page64#comment_20414078

А вообще похвально!

3D Moving Average
3D Moving Average
  • www.mql5.com
The first really 3D indicator "Moving Average".
 
Nikolai Semko:

Многие баловались. В том числе, и я.
https://www.mql5.com/en/code/27733

https://www.mql5.com/en/code/27662

Но, конечно, для таких вещей лучше использовать MT5. 

А еще лучше DirectX:

https://www.mql5.com/ru/articles/7708

А еще лучше OpenCL:
https://www.mql5.com/ru/forum/162864
https://www.mql5.com/ru/forum/227736/page64#comment_20414078

А вообще похвально!

Николай, но это же петёрышные проекты. В моем случае нужно было на четвёрку.

Что касается меня, то мне ближе поверхность из статьи https://www.mql5.com/ru/articles/7708 Для себя буду рисовать только по этому алгоритму. Но если честно, то чем дальше я погружаюсь в тему подбора параметров, тем больше я прихожу к выводу что для подбора параметров достаточно просто плоских графиков. Пока не окончательно пришёл к такому убеждению и думаю что поверхности ещё будут востребованы.

Вообще собираюсь статью написать на эту тему. Тема для меня живая и в этом направлении активно веду исследования.

Одно могу сказать точно. OpenCL из рассмотрения отпал. У меня слабая карта, и как я не старался из карточки выжать вразумительные результаты, ничего кроме потери времени не вышло. Очень печально. Так хотелось задействовать GPU. По факту 8 ядер в разы решают задачи быстрей чем мой старенький GPU. Это очень печально. Хотел совершенствоваться в OpenCL. Но пока прийдётся довольствоваться процессором.

Спасибо что написали комментарий.

Мне было очень приятно услышать Ваше мнение.

Спасибо.

Как создать 3D-графику на DirectX в MetaTrader 5
Как создать 3D-графику на DirectX в MetaTrader 5
  • www.mql5.com
Компьютерная 3D-графика хорошо подходит для анализа больших объемов данных, так как позволяет визуализировать скрытые закономерности. Такие задачи можно решать и напрямую в MQL5 — функции для работы с DireсtX позволяют при желании написать свою трехмерную игру для MetaTrader 5. Начните изучение с рисования простых объемных фигур.
 
ROMAN KIVERIN:

Николай, но это же петёрышные проекты. В моем случае нужно было на четвёрку.

Что касается меня, то мне ближе поверхность из статьи https://www.mql5.com/ru/articles/7708 Для себя буду рисовать только по этому алгоритму. Но если честно, то чем дальше я погружаюсь в тему подбора параметров, тем больше я прихожу к выводу что для подбора параметров достаточно просто плоских графиков. Пока не окончательно пришёл к такому убеждению и думаю что поверхности ещё будут востребованы.

Вообще собираюсь статью написать на эту тему. Тема для меня живая и в этом направлении активно веду исследования.

Одно могу сказать точно. OpenCL из рассмотрения отпал. У меня слабая карта, и как я не старался из карточки выжать вразумительные результаты, ничего кроме потери времени не вышло. Очень печально. Так хотелось задействовать GPU. По факту 8 ядер в разы решают задачи быстрей чем мой старенький GPU. Это очень печально. Хотел совершенствоваться в OpenCL. Но пока прийдётся довольствоваться процессором.

Спасибо что написали комментарий.

Мне было очень приятно услышать Ваше мнение.

Спасибо.

У Вас все норм. Ничего менять не надо. Работаете на BitMap. Значит все ОК. Алгоритмы близки к оптимальным. Разницы в Вашем подходе и моем практически никакой. 

 
Nikolai Semko:

У Вас все норм. Ничего менять не надо. Работаете на BitMap. Значит все ОК. Алгоритмы близки к оптимальным. Разницы в Вашем подходе и моем практически никакой. 

Честно сказать я работал лет двадцать назад в институте, где приходилось строить много таких рафиков. Но уже не помню что там было. Сейчас начал строить и у меня проблема поворачивать графики. Уже не помню как там считались углы поворота. Помню что поворот выполнялся мышкой по отслеживанию x,y. Сейчас смотрел в инете и нашёл поворот по трём координатам и какой-то он мягко говоря кривой.

У меня есть стандартный вектор X, Y, Z. Как пересчитать вектор x, y, z, чтобы менялись всего два значения, но поворот был полноценный как например у Вас в работе, или Автокаде?

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

Спасибо.

 
ROMAN KIVERIN:

Честно сказать я работал лет двадцать назад в институте, где приходилось строить много таких рафиков. Но уже не помню что там было. Сейчас начал строить и у меня проблема поворачивать графики. Уже не помню как там считались углы поворота. Помню что поворот выполнялся мышкой по отслеживанию x,y. Сейчас смотрел в инете и нашёл поворот по трём координатам и какой-то он мягко говоря кривой.

У меня есть стандартный вектор X, Y, Z. Как пересчитать вектор x, y, z, чтобы менялись всего два значения, но поворот был полноценный как например у Вас в работе, или Автокаде?

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

Спасибо.

ой, я даже не знаю что сказать. Никогда не изучал как надо. Делал всегда как сам понимаю.
Здесь знаний то нужно -  теорема Пифагора, теорема синусов, теорема косинусов и пространственное воображение.

Есть массив точек в пространстве(x,y,z), есть плоский экран и есть двигающийся глаз наблюдателя.
Загляните ко мне в код. У меня там всего -то 200 строк кода. 
И вроде бы, насколько я помню, за перерасчет 3D координат на 2D экран у меня отвечает только одна маленькая функция. Вот и вся математика:

void _3D(double x, double y, int z) {
   if (_a <0 || _b<0 || _a>=per || _b>=per) return;
   double x1=x*COS[_a]+z*SIN[_a];
   double z1=-x*SIN[_a]+z*COS[_a];
   double y1=y*COS[_b]+z1*SIN[_b];
   double z2=-y*SIN[_b]+z1*COS[_b];
   z2=z2+_r;
   _x=Round(X+K*x1/(z2+K));
   _y=Round(Y+K*y1/(z2+K));
}

x, y, z - на входе 
_x, _y - на выходе
есть еще два угла _a, _b ( по-видимому углы по горизонтали и по вертикали глаза в 3D)
sin и cos загнал в массивы для увеличения скорости расчета.

 
ROMAN KIVERIN:

Честно сказать я работал лет двадцать назад в институте, где приходилось строить много таких рафиков. Но уже не помню что там было. Сейчас начал строить и у меня проблема поворачивать графики. Уже не помню как там считались углы поворота. Помню что поворот выполнялся мышкой по отслеживанию x,y. Сейчас смотрел в инете и нашёл поворот по трём координатам и какой-то он мягко говоря кривой.

У меня есть стандартный вектор X, Y, Z. Как пересчитать вектор x, y, z, чтобы менялись всего два значения, но поворот был полноценный как например у Вас в работе, или Автокаде?

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

Спасибо.


https://www.codeproject.com/Articles/42086/Space-and-Matrix-Transformations-Building-a-3D-Eng

https://www.programmersought.com/article/85545548260/

https://stackoverflow.com/questions/4798206/console-3d-cube-rotating

https://github.com/RiSearcher/GeometRi.CSharp

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