Discussion de l'article "Comment créer des graphiques 3D avec DirectX dans MetaTrader 5" - page 4

 
Mahrukh Aleem:

J'ai une suggestion à vous faire si vous souhaitez promouvoir les jeux, les applications graphiques ou les applications à écran unique.


Passez à une application mt4/mt5 telle que

-singleappmode windowed templatename.tpl theea.ex4/ex5

-singleappmode fullscreen templatename.tpl theea.ex4/ex5


Lorsque quelqu'un exécute l'application avec le commutateur, Metatrader n'ouvrira qu'un seul graphique , appliquera le modèle et attachera l'EA. Tous les autres éléments seront cachés et ne seront affichés que si l'EA permet l'utilisation d'une propriété ou d'une fonction.

Comme afficher les contrôles, afficher la barre de menu, etc. Ou bien il pourrait s'agir de showdefaults.

De cette façon, MetaTrader peut devenir une application graphique sérieuse ou une application pour un seul utilisateur d'EA.


Je sais que cela peut être difficile à faire ou nécessiter des décisions au niveau de l'entreprise, c'est juste ma suggestion pour améliorer MetaTrader.

La 3D est une fonctionnalité intéressante, mais je préférerais que toutes les choses de base soient corrigées en priorité, et il y en a beaucoup, croyez-moi.

Développer un jeu à l'intérieur d'une plateforme de trading, vraiment ?

 
Alain Verleyen:

La 3D est une fonctionnalité intéressante, mais je préférerais de loin que toutes les choses de base soient corrigées en priorité, et il y en a beaucoup, croyez-moi.

Développer un jeu à l'intérieur d'une plateforme de trading, vraiment ?

Il pourrait s'agir d'un jeu ou d'un robot de trading très bien conçu avec une interface utilisateur entièrement personnalisée.

 
C'est bien
 
Wow, je ne savais pas qu'on pouvait faire ça dans mql5. J'ai déjà modélisé en 3D à d'autres fins, mais je ne savais pas qu'il était possible de le faire ici aussi.
 

12 heures de maîtrise et le résultat :



La 3D fonctionne bien, mais elle n'est pas facile à maîtriser.

 

Même question - et POURQUOI avons-nous besoin de graphiques 3D dans le terminal d'échange ?
Ou s'agit-il de "passe-droits des développeurs" = a la juste pour se moquer de nous ?! :)

Qui a vu le TOLK en 3D ? ??

 

Monsieur.

Le code de cet article ne s'exécute pas ! Merci de vérifier et de m'aider.

pour le code Canva.mql : j'ai ajouté du code Print(...) pour tracer l'erreur, voir ci-dessous.

ligne 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)
  {
//--- créer un canevas
       Print("At CCanvas Create BitmapLabel 1  ",width,"  ",name,"   ",height,"  ",clrfmt);   //J'ajoute
       bool xx= Create(name,width,height,clrfmt);     
       Print("CCanvas Create return  ",xx,"   ",GetLastError());   //J'ajoute
 // if(Create(name,width,height,clrfmt)) // Je change
   if (xx)
     {
       Print("CCanvas Create  2  ",chart_id,"  ",name,"   ",subwin);
..................

pour Canva.mql code : j'ai ajouté du code Print(....) pour tracer l'erreur, voir ci-dessous : ligne 328.

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

voir ci-dessous : ligne 328 : pour le code Canva.mql : ligne 250.

bool CCanvas::Create(const string name,const int width,const int height,ENUM_COLOR_FORMAT clrfmt)
  {
   Destroy();
//--- préparer le tableau de données
   if(width>0 && height>0 && ArrayResize(m_pixels,width*height)>0)
     {
      //--- générer le nom de la ressource
      m_rcname="::"+name+(string)ChartID()+(string)(GetTickCount()+MathRand());
      
      //--- initialiser les données avec des zéros
      ArrayInitialize(m_pixels,0);
      //--- créer une ressource dynamique
       Print("Before CCanvas ResourceCreate 0  ",m_rcname);         //J'ajoute
      if(ResourceCreate(m_rcname,m_pixels,width,height,0,0,0,clrfmt))
        {

         //--- créé avec succès
         //--- initialisation complète
         m_width =width;
         m_height=height;
         m_format=clrfmt;
         //--- réussir
       Print("then CCanvas ResourceCreate OK  ",m_rcname);     //J'ajoute
         return(true);
        }
     }
.............................


Pour l'exemple 3D-surface.mq5

ligne 40 : Exécuter 3D-Surface.mq5, reçu.

   //| Créer & nbsp ; &nbsp nbsp ; &nbsp ; &nbsp
   //+------------------------------------------------------------------+
   virtual bool      Create(const int width,const int height)
     {
      //--- sauvegarde des dimensions de la toile
      m_width=width;
      m_height=height;
      //--- Remise à zéro des données d'entrée
      m_mouse_x=m_mouse_y=-1;
      //--- Définir les paramètres par défaut de la caméra
      m_camera_distance=10.0 f;
      m_camera_angles.x=DX_PI_DIV6;
      m_camera_angles.y=DX_PI_DIV3;
      //--- créer un canevas pour rendre une scène 3D
      ResetLastError();
      if(!m_canvas.CreateBitmapLabel("3D Surface",0,0,m_width,m_height,COLOR_FORMAT_ARGB_NORMALIZE))
       { 
         Print("CreateBitmapLabel fail 3D surface ?");   // J'ajoute cette ligne
         Print("Error creating canvas: ",GetLastError());
         return(false);
         }
..........................


Exécuter 3D-Surface.mq5, reçu.

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'est-ce qui ne va pas ?

Qu'est-ce que 5151 ?

 

mon adaptateur d'écran est un Nivada FX 1700 ---- un vieux produit qui ne supporte que le niveau 10.0.


J'utilise donc DXcpl.exe pour définir Force WRAP pour MT, puis tout fonctionne correctement.

 

Pour démontrer les capacités du langage, ce n'est pas mal.

Mais il n'est guère utile pour le trading. Je me suis demandé où je pouvais l'utiliser pour le trading, mais rien ne m'est venu à l'esprit.

Pour la démonstration, il est préférable d'écrire un modèle de conseiller expert avec toutes les vérifications de l'ouverture correcte d'une pose, de l'établissement d'un ordre, de la modification, de la suppression, de la fermeture, etc.

Ce que je veux dire, c'est que j'ai écrit un Expert Advisor sur mt5, il négocie dans le terminal sans erreurs ni problèmes.

Je l'ai envoyé pour validation, il y a beaucoup d'erreurs, pour chaque action j'ai écrit environ 5 contrôles, en utilisant mes propres contrôles et ceux de la base de données.

Quelles sont les vérifications qu'un robot de trading doit passer avant d'être publié sur le marché ?

et ça n'a servi à rien, je me suis torturé pendant un mois, toujours beaucoup d'erreurs.

J'ai dû cracher, ce n'est pas pour rien qu'il est difficile de passer à mt5, je n'ai pas de tels problèmes avec mt4.

Le modèle sera certainement utile.

Ou alors donnez-moi un lien vers un modèle qui fonctionne, je n'en ai pas trouvé de bon.

Bonne chance à tous !

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

Donnez-moi un lien vers un modèle qui fonctionne, je n'en trouve pas de bon.

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