Questions des débutants MQL5 MT5 MetaTrader 5 - page 47

 
Pouvez-vous me dire si la visualisation sur des agents distants est, je suppose, catégoriquement impossible ? Ou est-ce possible ?
 
Dimka-novitsek:
Dites-moi, la visualisation sur les agents distants, je suppose, n'est pas possible ? Ou est-ce possible ?

Impossible car ce n'est pas nécessaire, l'agent distant est en mode processus, il n'a pas de fenêtre (sauf la fenêtre des paramètres).

Il ne peut être vu que par le gestionnaire de tâches (mais seulement le processus, pas ce qu'il fait).

 
Voici les impressions que je lis directement et qui ne sortent pas... C'est dommage. En général, s'il n'y a même pas un petit point sur la ligne grise du parcours d'optimisation après une période suffisamment longue, cela signifie qu'il n'y a tout simplement pas de résultats positifs. Alors les impressions et la visualisation sont également nécessaires ! Mais pourquoi ne part-il pas ? Les chars vont, et les navires sont en guerre, et la mémoire comme 4 gig, et super carte vidéo, 1375 MHz quelque chose comme ça, et le tester complètement ne peut pas !!! Au moins lentement... L'ordinateur se met directement en mode knockdown avec un écran vide.
 
Urain:
Impossible car vous n'en avez pas besoin, l'agent distant est en mode processus, il n'a pas de fenêtre (autre que la fenêtre des paramètres).Merci ! Je l'ai eu ! En effet !
 
Vladon:
Pour l'horloge, j'aimerais utiliser une police non standard, s'il était possible de la stocker directement dans les ressources par exemple.
sergeev:
le texte signifie qu'il ne faut pas se trimballer un fichier ttf séparé, mais l'intégrer directement dans ex5 comme une ressource.

C'est-à-dire, exclusivement pour dessiner dans un bitmap/canvas graphique ?

Les polices ne seront certainement pas intégrées, mais nous pouvons autoriser l'utilisation des polices standard de Windows pour dessiner dans le kanvas.

 
Renat:

Vous voulez dire exclusivement pour dessiner dans un bitmap/canvas graphique ?

Non, pour un dessin d'étiquette efficace. La question est que le terminal soit capable de prendre une police dans les ressources et de la définir indépendamment.
 
TheXpert:
Non, pour un dessin d'étiquette efficace. Le problème est de permettre au terminal de prendre une police dans les ressources et de l'installer lui-même.
Malheureusement, non.
 
Renat:

Donc, exclusivement pour dessiner dans un bitmap/canvas graphique ?

Nous n'intégrerons certainement pas les polices, mais nous pouvons vous laisser utiliser les polices Windows ordinaires pour dessiner dans le canevas.

J'ai cru comprendre que vous alliez ouvrir des GDI pour Kanvas. C'est génial.

mais il y a un problème, je pense, qui se situe à un niveau idéologique dans les principes du dessin des cartes.

Laissez-moi vous expliquer à l'aide de deux exemples.

Pour utiliser la toile plus activement, il faut changer de cadre. Mais dans le terminal, aucun objet ne sera dessiné s'il n'est pas caché de toutes les échéances(OBJ_NO_PERIODS), ce qui fait que je ne peux pas préparer l'emplacement et la taille de l'objet s'il n'est pas encore dessiné.

J'ai abordé ce sujet à la fois pour la taille du texte statique de sortie et pour la taille du bmp de sortie - la réponse a été la suivante : dessinez avec width=-1, puis demandez la taille de l'objet lui-même et vous le saurez exactement. Et ajouter ici une pause minimale et la nécessité d'appeler ChartRedraw... Vous conviendrez que c'est une béquille.

Et nous devons plomber non pas un seul statique ou bmp, mais des dizaines d'entre eux. Et s'il y a beaucoup d'activité, il faut faire attention aux pauses dans le rendu.

--------------------

Quant à l'omniprésence des kanvas comme alternative aux objets existants, c'est une utopie // bien que ce soit agréable dans un monde idéal.

Aucune personne saine d'esprit ne dessinerait un bitmap de 10 mégaoctets et le ralentirait juste pour une ligne diagonale dans un graphique de 2096 par 1080 pixels.


Je soutiens pleinement le développement de kanvas // Je soutiens tout développement.

Mais les objets existants couvrent 95 % de tous les besoins commerciaux dans l'interface. Kanvas est un appendice aux structures commerciales compliquées // très bien démontré par Kohonen Maps. Mais ils ne veulent pas remplacer complètement les objets.

( -5% est l'effort des développeurs pour éviter d'introduire une ligne de coordonnées. :) // mais un dialogue a déjà commencé, nous espérons parvenir à un consensus)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 

2012.10.20 14:21:46 Le fichier expert du testeur C:\Users\Micha\\AppData\Roaming\MetaQuotes\Terminal\FF783873B20D7FA177754FFD85AFB6\MQL5\Experts\Final.ex5 a été alloué par erreur.

2012.10.20 14:21:31 Core 2 autorisé (agent build 695)

2012.10.20 14:21:16 Core 2 se connectant à 127.0.0.1:3001

2012.10.20 14:11:10 Périphérique Core 1 OpenCL : GPU NVIDIA Corporation GeForce 9600 GSO 1GB avec OpenCL 1.0 (12 unités, 1375 MHz, 2048MB, version 301.42)

Je suis désolé, qu'est-ce que ça dit ? Je comprends que l'erreur. Que lui manque-t-il ? ? ?

En général, le test se bloque presque complètement. Souvent, il s'éteint... Mais le même soir, il y a des jeux très vivants et très beaux, des tanks-monde, des stalker, etc. !


 
sergeev:

Mais il y a un problème, me semble-t-il, posé au niveau idéologique dans les principes de restitution d'un tableau.

Afin d'utiliser kanvas de manière plus active, vous devez changer de cadre. Et tout objet dans le terminal n'est pas dessiné tant qu'il n'est pas masqué de toutes les temporalités(OBJ_NO_PERIODS). Cela conduit au fait que je ne peux pas préparer l'emplacement de l' objet et connaître sa taille, s'il n'est pas encore dessiné.

Connaissez-vous le parfait soupçon de backbuffering dans nos toiles et le lien avec un objet à l'écran ?

Nous pouvons dessiner des cadres parfaitement, rapidement et sans artefacts. Jetez un coup d'œil à l'exemple vidéo basé sur la génération de séquences d'images dans OpenCL Test.

Utilisez une bonne tactique :

  1. Créer un objet graphique Étiquette Bitmap sur le graphique

       string objname ="OpenCL_"+IntegerToString(ChartID());
       string resname ="::Mandelbrot_"+IntegerToString(ChartID());
    //--- creating the object for graphics display
       ObjectCreate(0,objname,OBJ_BITMAP_LABEL,0,0,0);
       ObjectSetInteger(0,objname,OBJPROP_XDISTANCE,4);
       ObjectSetInteger(0,objname,OBJPROP_YDISTANCE,26);
    

  2. Créer une ressource graphique vide en mémoire et la lier à un objet précédemment créé :

    //--- create initial empty picture
       uint buf[];
    
       ArrayResize(buf,SIZE_X*SIZE_Y);
       ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
       ObjectSetString(0,objname,OBJPROP_BMPFILE,resname);
    
    C'est là que la magie opère. L'objet graphique reçoit une liaison directe avec la ressource graphique. Et cette liaison est intelligente avec la mise en cache, car elle a été spécifiquement créée pour une pagination rapide et la gestion du backbuffer.

  3. Vous pouvez maintenant dessiner facilement dans votre tampon sans vous soucier de vous lier à un objet à l'écran.

    //--- рисуем что хотим в buf
    ....
    
  4. Et maintenant il est temps d'afficher à l'écran ce bitmap mis à jour

          //--- saving the frame in memory and drawing it
          ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
          ChartRedraw();
    
    Pour ce faire, nous "reconstruisons" la ressource (aucune reconstruction n'a lieu en réalité, car toutes les tailles sont les mêmes), nous y copions le nouveau bitmap, et les compteurs de changement de cette ressource sont incrémentés.

    Notez que l'objet graphique objname lui-même n'est pas touché de quelque manière que ce soit, car il est déjà associé à la ressource.

    Ensuite, nous appelons Screen Redraw via ChartRedraw qui nécessite le dessin de l'objet graphique. Il est lié à notre ressource qu'il contrôle en utilisant le compteur d'altération du bitmap. Si le compteur de changement du bitmap enregistré dans l'objet graphique ne coïncide pas avec le compteur de la ressource, le bitmap sera automatiquement copié dans l'objet graphique et visualisé de manière protégée. Si les compteurs sont les mêmes, alors l'image est montrée sans aucune modification.

Voici une méthode simple pour travailler rapidement et en toute sécurité (à partir de l'accès simultané de MQL5 et du système de rendu du terminal lui-même) avec les cadres de rendu.

Raison: