Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 47

 
Können Sie mir bitte sagen, ob die Visualisierung auf entfernten Agenten kategorisch unmöglich ist? Oder ist das möglich?
 
Dimka-novitsek:
Bitte sagen Sie mir, dass eine Visualisierung auf Remote-Agenten nicht möglich ist? Oder ist das möglich?

Nicht möglich, da es nicht benötigt wird, der Remote-Agent befindet sich im Prozessmodus, er hat kein Fenster (außer dem Einstellungsfenster).

Er kann nur über den Task-Manager angezeigt werden (aber nur der Prozess, nicht was er tut).

 
Hier sind die Drucke, die ich direkt lese und die nicht herauskommen... Das ist sehr schade. Wenn nach einer ausreichend langen Zeitspanne nicht einmal ein kleiner Punkt auf der grauen Linie des Optimierungsverlaufs zu sehen ist, was bedeutet es dann, dass es einfach keine positiven Ergebnisse gibt? Dann sind auch Ausdrucke und Visualisierung notwendig! Aber warum geht es nicht? Panzer gehen, und Schiffe sind im Krieg, und Speicher wie 4 Gig, und Super-Grafikkarte, 1375 MHz etwas wie das, und testen Sie es völlig nicht!!! Zumindest langsam... Der Computer schaltet sich sofort mit einem leeren Bildschirm ab.
 
Urain:
Das ist nicht möglich, weil Sie es nicht brauchen, denn der entfernte Agent befindet sich im Prozessmodus und hat kein Fenster (außer dem Einstellungsfenster). Ich hab's! In der Tat!
 
Vladon:
Für die Uhr würde ich gerne eine Nicht-Standard-Schriftart verwenden, wenn es möglich wäre, sie zum Beispiel direkt in den Ressourcen zu speichern.
sergeev:
der Text bedeutet, keine separate ttf-Datei mit sich herumzuschleppen, sondern ihn direkt in ex5 als Ressource einzubetten.

Das heißt, nur zum Zeichnen in einer grafischen Bitmap/Leinwand?

Schriftarten werden definitiv nicht eingebettet, aber wir können die Verwendung der Standard-Windows-Schriftarten für das Zeichnen im Kanvas erlauben.

 
Renat:

Sie meinen, ausschließlich zum Zeichnen in einer grafischen Bitmap/Leinwand?

Nein, für eine effiziente Etikettenerstellung. Die Frage ist, ob das Terminal in der Lage ist, eine Schriftart aus den Ressourcen zu übernehmen und sie unabhängig zu setzen.
 
TheXpert:
Nein, für eine effiziente Etikettenerstellung. Es geht darum, dem Terminal zu erlauben, eine Schriftart aus den Ressourcen zu nehmen und sie selbst zu installieren.
Leider nein.
 
Renat:

Also, ausschließlich für das Zeichnen in einer grafischen Bitmap/Leinwand?

Wir werden definitiv keine Schriftarten einbetten, aber wir können Sie normale Windows-Schriftarten zum Zeichnen im Canvas verwenden lassen.

Ich habe gehört, dass Sie einige GDI für Kanvas öffnen werden. Das ist großartig.

Aber es gibt ein Problem, das meiner Meinung nach auf einer ideologischen Ebene in den Prinzipien der Kartenerstellung liegt.

Lassen Sie mich dies an zwei Beispielen erläutern.

Um die Leinwand aktiver nutzen zu können, müssen Sie den Rahmen wechseln. Im Terminal wird ein Objekt jedoch erst gezeichnet, wenn es aus allen Zeitrahmen ausgeblendet ist(OBJ_NO_PERIODS), was dazu führt, dass ich die Position und Größe des Objekts nicht vorbereiten kann, wenn es noch nicht gezeichnet ist.

Ich habe dieses Thema sowohl für die Ausgabe der statischen Textgröße als auch für die Ausgabe der BMP-Größe angesprochen - die Antwort war folgende: Sie zeichnen mit Breite = 1 und fragen dann die Größe des Objekts selbst ab, und Sie werden es genau wissen. Und fügen Sie hier eine minimale Pause und die Notwendigkeit hinzu, ChartRedraw aufzurufen... Sie werden zustimmen, dass dies eine Krücke ist.

Und wir müssen nicht nur eine statische oder bmp-Datei, sondern Dutzende von ihnen zusammenstellen. Und wenn viel los ist, muss man auf Pausen beim Rendern achten.

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

Allgegenwärtige Leinwände als Alternative zu bestehenden Objekten- das ist Utopie // wenn auch schön in einer idealen Welt

Niemand, der bei klarem Verstand ist, würde eine 10-Megabyte-Bitmap zeichnen und sie verlangsamen, nur um eine diagonale Linie durch ein Diagramm mit 2096 x 1080 Pixeln zu zeichnen.


Ich unterstütze die Entwicklung von Kanvas voll und ganz // Ich unterstütze überhaupt jede Entwicklung.

Aber die vorhandenen Objekte decken 95% aller geschäftlichen Anforderungen in der Schnittstelle ab. Kanvas ist ein Anhängsel für komplizierte Geschäftsstrukturen // sehr gut demonstriert durch Kohonen Maps. Aber sie wollen die Objekte nicht vollständig ersetzen.

( -5% ist der Versuch der Entwickler, die Einführung einer Koordinatenlinie zu vermeiden. :) // aber ein Dialog hat bereits begonnen, hoffentlich werden wir zu einem Konsens kommen)

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

2012.10.20 14:21:46 Tester expert file C:\Users\Micha\AppData\Roaming\MetaQuotes\Terminal\FF783873B20D7FA177754FFD85AFB6\MQL5\Experts\Final.ex5 allocate error

2012.10.20 14:21:31 Kern 2 autorisiert (Agent-Build 695)

2012.10.20 14:21:16 Kern 2 verbindet mit 127.0.0.1:3001

2012.10.20 14:11:10 Kern 1 OpenCL Gerät: NVIDIA Corporation GeForce 9600 GSO 1GB GPU mit OpenCL 1.0 (12 Einheiten, 1375 MHz, 2048MB, Version 301.42)

Verzeihung, was steht hier? Ich verstehe, dass der Fehler. Was fehlt ihr? ??

Im Allgemeinen bleibt der Test fast vollständig hängen. Oft schaltet es sich ab... Aber am selben Abend gibt es sehr lebendige und schöne Spiele, Panzerwelt, Stalker, etc. !


 
sergeev:

Aber es gibt ein Problem, das meines Erachtens auf der ideologischen Ebene in den Prinzipien der Darstellung eines Diagramms liegt.

Um Kanvas aktiver nutzen zu können, müssen Sie den Rahmen wechseln. Und jedes Objekt im Terminal wird erst gezeichnet, wenn es von allen Zeitrahmen ausgeblendet wird(OBJ_NO_PERIODS). Das führt dazu, dass ich die Position des Objekts nicht vorbereiten und seine Größe nicht kennen kann, wenn es noch nicht gezeichnet ist.

Kennen Sie den perfekten Hinweis auf das Backbuffering in unseren Leinwänden und die Verknüpfung mit einem Objekt auf dem Bildschirm?

Wir können Rahmen perfekt, schnell und ohne Artefakte zeichnen. Werfen Sie einen Blick auf das Videobeispiel, das auf der Erzeugung von Bildsequenzen in OpenCL Test basiert.

Verwenden Sie eine nette Taktik:

  1. Erstellen Sie ein Bitmap-Label-Grafikobjekt im Diagramm

       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. Erstellen Sie eine leere grafische Ressource im Speicher und binden Sie sie an ein zuvor erstelltes Objekt:

    //--- 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);
    
    Das ist der Punkt, an dem der Zauber beginnt. Das grafische Objekt erhält eine direkte Bindung an die grafische Ressource. Und diese Bindung ist intelligent mit Caching, da sie speziell für schnelles Paging und Backbuffer-Handling entwickelt wurde.

  3. Jetzt können Sie einfach in Ihrem Puffer zeichnen, ohne sich um die Bindung an ein Objekt auf dem Bildschirm kümmern zu müssen

    //--- рисуем что хотим в buf
    ....
    
  4. Und nun ist es an der Zeit, die aktualisierte Bitmap auf dem Bildschirm anzuzeigen

          //--- saving the frame in memory and drawing it
          ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
          ChartRedraw();
    
    Dazu wird die Ressource "neu aufgebaut" (es findet kein tatsächlicher Neuaufbau statt, da alle Größen gleich sind), die neue Bitmap wird kopiert und die Änderungszähler dieser Ressource werden erhöht.

    Beachten Sie, dass das grafische Objekt objname selbst in keiner Weise berührt wird, da es bereits mit der Ressource verknüpft ist.

    Dann rufen wir Screen Redraw über ChartRedraw auf, was das Zeichnen des grafischen Objekts erfordert. Sie ist an unsere Ressource gebunden, die sie über den Bitmap-Änderungszähler kontrolliert. Wenn der Änderungszähler der im grafischen Objekt gespeicherten Bitmap nicht mit dem Zähler der Ressource übereinstimmt, wird die Bitmap automatisch in das grafische Objekt kopiert und auf geschützte Weise visualisiert. Wenn die Zähler gleich sind, wird das Bild unverändert angezeigt.

Hier ist eine einfache Methode zur sicheren (durch gleichzeitigen Zugriff von MQL5 und dem Terminal-Rendering-System selbst) und schnellen Arbeit mit Rendering-Frames.

Grund der Beschwerde: