Обсуждение статьи "Как создать 3D графику на DirectX в MetaTrader 5" - страница 4

 
Mahrukh Aleem:

У меня есть предложение, если вы хотите продвигать игровые или графические приложения или приложения для одного экрана.


Переключитесь на приложения mt4/mt5, такие как

-singleappmode windowed templatename.tpl theea.ex4/ex5

-singleappmode fullscreen templatename.tpl theea.ex4/ex5


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

Например, показать элементы управления, показать меню и т. д. Или это может быть showdefaults.

Таким образом, MetaTrader может стать серьезным графическим приложением или приложением для одного пользователя ea.


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

3d - это хорошая функция, но я бы предпочел, чтобы все основные вещи были исправлены в приоритетном порядке, а их, поверьте, очень много.

Разработка игры внутри торговой платформы, правда?

 
Alain Verleyen:

3d - хорошая функция, но я бы предпочел, чтобы все основные вещи были исправлены в приоритетном порядке, а их, поверьте, очень много.

Разработка игры внутри торговой платформы, серьезно?

Это может быть игра или очень хорошо стилизованный торговый робот с полностью настроенным интерфейсом.

 
Приятно
 
Вау, я не знал, что это можно сделать в mql5. Я моделировал в 3d для других целей, но не знал, что это можно делать и здесь.
 

12 часов освоения и результат:



3D работает хорошо, но освоить его непросто.

 

Тот же вопрос - а ДЛЯ ЧЕГО нужна 3Д-графика в терминале торговли ??
Или это "пасхалки от разрабов" = а-ля просто поржать над нами ?! :)

Кто увидел ТОЛК в 3Д-графике ??

 

Сэр.

Код в этой статье не запускается! Пожалуйста, проверьте и помогите мне.

для кода Canva.mql: я добавил несколько Print(...) код для отслеживания ошибки, см. ниже.

строка 328.

bool CCanvas::CreateBitmapLabel(const long chart_id,const int subwin,const string name,
                                const int x,const int y,const int width,const int height,
                                ENUM_COLOR_FORMAT clrfmt)
  {
//--- создайте холст
       Print("At CCanvas Create BitmapLabel 1  ",width,"  ",name,"   ",height,"  ",clrfmt);   //Я добавляю
       bool xx= Create(name,width,height,clrfmt);     
       Print("CCanvas Create return  ",xx,"   ",GetLastError());   //Я добавляю
 // if(Create(name,width,height,clrfmt)) // I change
   if (xx)
     {
       Print("CCanvas Create  2  ",chart_id,"  ",name,"   ",subwin);
..................

для кода Canva.mql: я добавляю некоторый код Print(....) для отслеживания ошибки, см. ниже: строка 328.

xx= Create(name,width,height,clrfmt);    will call function bellow:

см. bellow: строка 328: для кода Canva.mql: строка 250.

bool CCanvas::Create(const string name,const int width,const int height,ENUM_COLOR_FORMAT clrfmt)
  {
   Destroy();
//--- подготовьте массив данных
   if(width>0 && height>0 && ArrayResize(m_pixels,width*height)>0)
     {
      //--- создайте имя ресурса
      m_rcname="::"+name+(string)ChartID()+(string)(GetTickCount()+MathRand());
      
      //--- инициализируйте данные нулями
      ArrayInitialize(m_pixels,0);
      //--- создайте динамический ресурс
       Print("Before CCanvas ResourceCreate 0  ",m_rcname);         //Я добавляю
      if(ResourceCreate(m_rcname,m_pixels,width,height,0,0,0,clrfmt))
        {

         //--- успешно создан
         //--- завершите инициализацию
         m_width =width;
         m_height=height;
         m_format=clrfmt;
         //--- успех
       Print("then CCanvas ResourceCreate OK  ",m_rcname);     //Я добавляю
         return(true);
        }
     }
.............................


Для примера 3D-surface.mq5

строка 40: Запустить 3D-Surface.mq5, получено.

   //| Создайте & nbsp; &nbsp nbsp;     &nbsp
   //+------------------------------------------------------------------+
   virtual bool      Create(const int width,const int height)
     {
      //--- сохраните размеры холста
      m_width=width;
      m_height=height;
      //--- Сброс входных данных
      m_mouse_x=m_mouse_y=-1;
      //--- Установите параметры по умолчанию для камеры
      m_camera_distance=10.0 f;
      m_camera_angles.x=DX_PI_DIV6;
      m_camera_angles.y=DX_PI_DIV3;
      //--- создайте холст для визуализации 3D-сцены
      ResetLastError();
      if(!m_canvas.CreateBitmapLabel("3D Surface",0,0,m_width,m_height,COLOR_FORMAT_ARGB_NORMALIZE))
       { 
         Print("CreateBitmapLabel fail 3D surface ?");   // Я добавляю эту строку
         Print("Error creating canvas: ",GetLastError());
         return(false);
         }
..........................


Запустите 3D-Surface.mq5, получено.

2023.05.05 11:32:46.180 3 D_Surface (EURUSD,M1)  At CCanvas Create BitmapLabel 1  604  3 D Surface   392  2
2023.05.05 11:32:46.180 3 D_Surface (EURUSD,M1)  Before CCanvas ResourceCreate 0  ::3 D Surface1332772457869319469285704
2023.05.05 11:32:46.180 3 D_Surface (EURUSD,M1)  then CCanvas ResourceCreate OK  ::3 D Surface1332772457869319469285704
2023.05.05 11:32:46.185 3 D_Surface (EURUSD,M1)   CCanvas Create return  false   5151
2023.05.05 11:32:46.185 3 D_Surface (EURUSD,M1)  CreateBitmapLabel fail 3 D surface ?
2023.05.05 11:32:46.185 3 D_Surface (EURUSD,M1)  Error creating canvas: 5151
then CCanvas ResourceCreate OK 
BUR BUT But....

    
CCanvas Create return  false   5151

Что не так?

Что такое 5151?

 

Мой дисплейный адаптер - Nivada FX 1700 - старый продукт. Поддерживает только feture-level 10.0.


Поэтому используйте DXcpl.exe для установки Force WRAP для MT, тогда все будет работать нормально.

 

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

Но для торговли вряд ли пригодиться, подумав где мне может пригодиться мне для торгов, но в голову не чего не пришло.

Для демонстрации лучше напишите Шаблон эксперта со всем проверками корректной открытии позы, установки ордера, модификации, удаления, закрытия и т.п, для последующей отправки на валидацию, без ошибок.

Я к чему., написал эксперт на мт5, в терминале торгует без ошибок и проблем.

Отправил на валидацию, ошибок гора, на каждое действие дописал примерно аж по 5 проверок, используя свои и с 

Какие проверки должен пройти торговый робот перед публикацией в Маркете

и бесполезняк, мучался месяц, ошибок все равно куча.

Пришлось плюнуть, не зря на мт5 тяжело переходят, с мт4 у меня таких проблем нет.

В шаблоне точно толк будет.

Или дайте ссылку на рабочий шаблон, я путний не нашел.

Всем Удачи!

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку для обеспечения единого стандарта качества. В этой статье мы расскажем о наиболее частых ошибках, которые допускают разработчики в своих технических индикаторах и торговых роботах. А также покажем как самостоятельно проверить свой продукт перед отправкой в Маркет.
 
Anatoliy Lukanin #:

дайте ссылку на рабочий шаблон, я путний не нашел.

https://www.mql5.com/ru/forum/93352/page78#comment_48296338