Discussão do artigo "Como criar gráficos 3D usando o DirectX no MetaTrader 5" - página 4

 
Mahrukh Aleem:

Tenho uma sugestão se você quiser promover jogos ou aplicativos gráficos ou aplicativos de uma tela.


Faça uma troca com aplicativos mt4/mt5, como

-singleappmode windowed templatename.tpl theea.ex4/ex5

-singleappmode fullscreen templatename.tpl theea.ex4/ex5


Quando alguém executar o aplicativo com o switch, o Metatrader abrirá apenas um gráfico, aplicará o modelo e anexará o EA. Todas as outras coisas ficarão ocultas e só serão exibidas se o EA permitir o uso de uma propriedade ou função.

Como mostrar controles, mostrar a barra de menus etc. Ou pode ser showdefaults.

Dessa forma, o MetaTrader pode se tornar um aplicativo gráfico sério ou um aplicativo de usuário único.


Sei que isso pode ser difícil de fazer ou exigir algumas decisões em nível de empresa, apenas minha sugestão para melhorar o MetaTrader.

O 3d é um bom recurso, mas eu preferiria que todos os itens básicos fossem corrigidos com prioridade, e há muitos, acredite em mim.

Desenvolver um jogo dentro de uma plataforma de negociação, sério?

 
Alain Verleyen:

O 3d é um recurso interessante, mas eu preferiria muito que todos os itens básicos fossem corrigidos com prioridade, e há muitos, acredite em mim.

Desenvolver um jogo dentro de uma plataforma de negociação, sério?

Poderia ser um jogo ou um robô de negociação muito bem estilizado com uma interface totalmente personalizada.

 
É bom
 
Uau, eu não sabia que era possível fazer isso no mql5. Já fiz modelagem em 3D para outros fins, mas não sabia que era possível fazer isso aqui também.
 

12 horas de domínio e o resultado:



O 3D funciona bem, mas não é fácil de dominar.

 

A mesma pergunta - e POR QUE precisamos de gráficos 3D no terminal de negociação??
Ou esses "truques dos desenvolvedores" = a la apenas para tirar sarro de nós?! :)

Quem viu o TOLK em gráficos 3D???

 

Senhor.

O código deste artigo não pode ser executado! Por favor, verifique e me ajude.

Para o código do Canva.mql: adicionei um código Print(...) para rastrear o erro, veja abaixo.

linha 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)
  {
//--- criar tela
       Print("At CCanvas Create BitmapLabel 1  ",width,"  ",name,"   ",height,"  ",clrfmt);   //Eu adiciono
       bool xx= Create(name,width,height,clrfmt);     
       Print("CCanvas Create return  ",xx,"   ",GetLastError());   //Eu adiciono
 // if(Create(name,width,height,clrfmt)) // Eu mudo
   if (xx)
     {
       Print("CCanvas Create  2  ",chart_id,"  ",name,"   ",subwin);
..................

para o código do Canva.mql: adicionei algum código Print(....) para rastrear o erro, veja abaixo: linha 328.

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

veja abaixo: linha 328: para o código do Canva.mql: linha 250.

bool CCanvas::Create(const string name,const int width,const int height,ENUM_COLOR_FORMAT clrfmt)
  {
   Destroy();
//--- preparar a matriz de dados
   if(width>0 && height>0 && ArrayResize(m_pixels,width*height)>0)
     {
      //--- gerar nome do recurso
      m_rcname="::"+name+(string)ChartID()+(string)(GetTickCount()+MathRand());
      
      //--- inicializar os dados com zeros
      ArrayInitialize(m_pixels,0);
      //--- criar recurso dinâmico
       Print("Before CCanvas ResourceCreate 0  ",m_rcname);         //Eu adiciono
      if(ResourceCreate(m_rcname,m_pixels,width,height,0,0,0,clrfmt))
        {

         //--- criado com sucesso
         //--- inicialização completa
         m_width =width;
         m_height=height;
         m_format=clrfmt;
         //--- bem-sucedido
       Print("then CCanvas ResourceCreate OK  ",m_rcname);     //Eu adiciono
         return(true);
        }
     }
.............................


Para o exemplo 3D-surface.mq5

linha 40: Execute 3D-Surface.mq5, recebido.

   //| Criar & nbsp; &nbsp nbsp;   &nbsp
   //+------------------------------------------------------------------+
   virtual bool      Create(const int width,const int height)
     {
      //--- salvar as dimensões da tela
      m_width=width;
      m_height=height;
      //--- Redefinir dados de entrada
      m_mouse_x=m_mouse_y=-1;
      //--- Definir parâmetros padrão para a câmera
      m_camera_distance=10.0 f;
      m_camera_angles.x=DX_PI_DIV6;
      m_camera_angles.y=DX_PI_DIV3;
      //--- criar uma tela para renderizar uma cena 3D
      ResetLastError();
      if(!m_canvas.CreateBitmapLabel("3D Surface",0,0,m_width,m_height,COLOR_FORMAT_ARGB_NORMALIZE))
       { 
         Print("CreateBitmapLabel fail 3D surface ?");   // Eu adiciono esta linha
         Print("Error creating canvas: ",GetLastError());
         return(false);
         }
..........................


Executar 3D-Surface.mq5, recebido.

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

O que há de errado?

O que é 5151?

 

Meu adaptador de tela é o Nivada FX 1700, um produto antigo, que suporta apenas o nível de fibra 10.0.


Portanto, use o DXcpl.exe para definir Force WRAP para MT e, em seguida, tudo funcionará bem.

 

Para demonstrar os recursos da linguagem, nada mal.

Mas dificilmente é útil para negociação, pois pensei em onde poderia usá-la para negociação, mas nada me veio à mente.

Para demonstração, é melhor escrever um modelo de Expert Advisor com todas as verificações de abertura correta de uma posição, definição de uma ordem, modificação, exclusão, fechamento, etc., para envio posterior para validação, sem erros.

O que quero dizer é que escrevi um Expert Advisor no MT5 e ele é negociado no terminal sem erros e problemas.

Enviei-o para validação e há muitos erros. Para cada ação, escrevi cerca de 5 verificações, usando as minhas próprias verificações e as do site

Quais verificações um robô de negociação deve passar antes de ser publicado no mercado?

e foi inútil, eu me torturei por um mês, ainda com muitos erros.

Tive que cuspir, não é à toa que é difícil mudar para o mt5, não tenho esses problemas com o mt4.

O modelo será definitivamente útil.

Ou me dê um link para um modelo que funcione, pois não encontrei um bom.

Boa sorte a todos!

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

me dê um link para um modelo funcional, pois não consigo encontrar um bom modelo.

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