Discusión sobre el artículo "Cómo crear gráficos 3D en DirectX en MetaTrader 5" - página 4

 
Mahrukh Aleem:

Tengo una sugerencia si quieres promocionar juegos o aplicaciones gráficas o aplicaciones de una pantalla.


Hacer un cambio con mt4/mt5 aplicación como

-singleappmode windowed templatename.tpl theea.ex4/ex5

-singleappmode fullscreen templatename.tpl theea.ex4/ex5


Cuando alguien ejecuta la aplicación con el interruptor metatrader sólo se abrirá un gráfico de aplicar la plantilla y adjuntar la EA. Todas las demás cosas se ocultará sólo se muestra si EA permite el uso de una propiedad o función.

Como mostrar controles, mostrar menubar etc. O podría ser showdefaults.

De esta manera MetaTrader puede convertirse en una aplicación gráfica seria o en una aplicación de usuario de un solo EA.


Sé que podría ser difícil de hacer o requerir algunas decisiones a nivel de empresa , sólo mi sugerencia para mejorar meta trader.

3d es una buena característica, pero yo preferiría mucho tener todas las cosas básicas que se fija en la prioridad, y hay un montón créeme.

Desarrollar un juego dentro de una plataforma de comercio, ¿en serio?

 
Alain Verleyen:

3d es buena característica, pero preferiría mucho que se arreglaran todas las cosas básicas con prioridad, y hay muchas créeme.

Desarrollar un juego dentro de una plataforma de comercio, ¿en serio?

Podría ser un juego o un robot de comercio muy bien diseñado con una interfaz gráfica totalmente personalizada.

 
Es bonito.
 
Wow! No sabía que se podía lograr eso en mql5. Yo he modelado en 3d con otros fines pero no sabía que aquí se podía también. 
 

12 horas de dominio y el resultado:



El 3D funciona bien, pero no es fácil de dominar.

 

¡La misma pregunta - ¿y POR QUÉ necesitamos gráficos en 3D en el terminal de comercio??
¿O son estos "pass-hacks de los desarrolladores" = a la sólo para burlarse de nosotros?! :)

¿Quién vio el TOLK en gráficos 3D?

 

Señor.

¡el código en este artículo cnn no se ejecuta! Por favor, compruebe y me ayude .

para Canva.mql código: he añadido algunos Print(...) para rastrear el error, ver abajo.

línea 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)
  {
//--- crear lienzo
       Print("At CCanvas Create BitmapLabel 1  ",width,"  ",name,"   ",height,"  ",clrfmt);   //Añado
       bool xx= Create(name,width,height,clrfmt);     
       Print("CCanvas Create return  ",xx,"   ",GetLastError());   //Añado
 // if(Create(name,width,height,clrfmt)) // cambio
   if (xx)
     {
       Print("CCanvas Create  2  ",chart_id,"  ",name,"   ",subwin);
..................

en el código de Canva.mql: he añadido un código Print(....) para rastrear el error, véase más abajo: línea 328.

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

ver abajo: línea 328: para el código Canva.mql: línea 250.

bool CCanvas::Create(const string name,const int width,const int height,ENUM_COLOR_FORMAT clrfmt)
  {
   Destroy();
//--- preparar matriz de datos
   if(width>0 && height>0 && ArrayResize(m_pixels,width*height)>0)
     {
      //--- generar nombre de recurso
      m_rcname="::"+name+(string)ChartID()+(string)(GetTickCount()+MathRand());
      
      //--- inicializar los datos con ceros
      ArrayInitialize(m_pixels,0);
      //--- crear recurso dinámico
       Print("Before CCanvas ResourceCreate 0  ",m_rcname);         //Añado
      if(ResourceCreate(m_rcname,m_pixels,width,height,0,0,0,clrfmt))
        {

         //--- creado con éxito
         //--- inicialización completa
         m_width =width;
         m_height=height;
         m_format=clrfmt;
         //--- tener éxito
       Print("then CCanvas ResourceCreate OK  ",m_rcname);     //Añado
         return(true);
        }
     }
.............................


Para el ejemplo 3D-surface.mq5

línea 40: Ejecutar 3D-Surface.mq5, recibido.

   //| Crear & nbsp; &nbsp nbsp;   &nbsp
   //+------------------------------------------------------------------+
   virtual bool      Create(const int width,const int height)
     {
      //--- guardar las dimensiones del lienzo
      m_width=width;
      m_height=height;
      //--- Restablecer datos de entrada
      m_mouse_x=m_mouse_y=-1;
      //--- Establecer parámetros por defecto para la cámara
      m_camera_distance=10.0 f;
      m_camera_angles.x=DX_PI_DIV6;
      m_camera_angles.y=DX_PI_DIV3;
      //--- crear un lienzo para renderizar una escena 3D
      ResetLastError();
      if(!m_canvas.CreateBitmapLabel("3D Surface",0,0,m_width,m_height,COLOR_FORMAT_ARGB_NORMALIZE))
       { 
         Print("CreateBitmapLabel fail 3D surface ?");   // Añado esta línea
         Print("Error creating canvas: ",GetLastError());
         return(false);
         }
..........................


Ejecutar 3D-Surface.mq5, recibido.

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

¿Qué ocurre?

¿Qué es 5151?

 

mi adaptador de pantalla es Nivada FX 1700--- un producto antiguo. solo soporta feture-level 10.0


Así que utilice DXcpl.exe para establecer Force WRAP para MT , entonces todo funcionará bien.

 

Para demostrar las capacidades del lenguaje, no está mal.

Pero es poco útil para el trading, habiendo pensado donde puedo usarlo para el trading, pero no se me ocurrió nada.

Para demostración es mejor escribir una plantilla de Asesor Experto con todas las comprobaciones de apertura correcta de una postura, establecimiento de una orden, modificación, borrado, cierre, etc, para su posterior envío para validación, sin errores.

Mi punto es, escribí un Asesor Experto en mt5, opera en la terminal sin errores y problemas.

Lo envié a validación, hay muchos errores, para cada acción escribí unas 5 comprobaciones, usando las mías propias y las del

¿Qué comprobaciones debe pasar un robot de trading antes de publicar en el Market?

y fue inútil, me torturé durante un mes, todavía un montón de errores.

Tuve que escupir, no en vano me cuesta cambiar a mt5, con mt4 no tengo esos problemas.

La plantilla sin duda será útil.

O dame un enlace a una plantilla de trabajo, no he encontrado una buena.

¡Buena suerte a todos!

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

dame un enlace a una plantilla que funcione, no encuentro una buena.

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