Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Sie können eine Datei als Array einfügen und dann auf dieses Array zugreifen.
Beigefügtes Beispiel
Ja, übrigens, das funktioniert. Ich wusste nichts von dieser Möglichkeit. Danke!
Aber die Größe der mq4- oder mqh-Datei wird 5 Mal größer sein als die png-Datei selbst. Aber es ist eine gut funktionierende Option, weil sie die Größe der ex4-Datei selbst nicht beeinflusst. (sie wird die gleiche sein wie die ex5-Datei).
Bitten Sie die Entwickler, PNG hier einzufügen.
Ich bin sicher, sie werden zustimmen.
Ich bezweifle, dass alle Wünsche und Anforderungen für MT4 umgesetzt werden, vor allem, wenn bereits angekündigt ist, dass die Unterstützung für MT4 bald endet.
Externe PNGs sind in Ordnung, Laden, Skalieren, Transparenz funktioniert. Aber...
Ist es überhaupt realistisch, ein PNG innerhalb einer Datei zu kompilieren?
Die Standardfunktionalität ...
#resource "\\Files\\123.png"
string nam_img = "::Files\\123.png"
... erzeugt einen Kompilierungsfehler
Ich habe mich nicht mit der Tatsache beschäftigt, dass die Software mit einer externen Datei arbeitet, aber wie kann man das gesamte Endprodukt zu einer Datei machen?
Sonst geht der praktische Sinn einer solchen Funktion verloren. Ich habe es in MT5 nicht ausprobiert. In MT4 gibt es einen Verbindungsfehler.
P.S. Ich nehme an, dass es theoretisch möglich ist, ein Skript zu schreiben, das PNG in Code umwandelt, und wir werden es, sagen wir, in MQH einfügen und mit ihnen in einem Container arbeiten. Aber ich kann ein solches Skript nicht schreiben. Bildarrays sind ein blinder Wald für mich.
Abgesehen von dem, was Alexander vorgeschlagen hat (durch Einfügen von uchar[] Array), gibt es auch eine Krückenmethode durch Pseudo-BMP, über die ich bereits gesprochen habe
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Canvas ist cool!
Nikolai Semko, 2023.09.25 17:09
Leider gibt es in MQL4 keine Möglichkeit, eine Ressource als Array anzuhängen. Aber alles andere funktioniert.Sie können ein Skript schreiben, das eine solche Konvertierung von png in bmp durchführt (die Größe des Pseudobildes einer solchen Datei entspricht in der Breite der Größe der png-Datei selbst, und 1 Pixel in der Höhe).
Aber Sie können mit einem anderen Algorithmus tun: Konvertieren Sie PNG mit Transparenz in ein echtes BMP mit Transparenz und hängen Sie es über eine Ressource an. Die Größe der ex4-Datei wird etwas größer sein als die der png-Datei, da in ex4 die Ressource der BMP-Datei im gepackten Format gespeichert wird. Ich habe es überprüft - die Größe von ex4 mit bmp wird 10-30% mehr sein als ex4 mit dem gleichen Bild im png-Format.
Ich persönlich würde die von Slavsky vorgeschlagene Variante bevorzugen. Ein separates uchar-Array in eine separate mqh-Datei zu legen, die die png-Datei selbst enthält, und es dann über ein Include in den Code einzufügen, so dass das riesige Array den Code nicht durcheinander bringt.
Außerdem hat diese Methode den Vorteil, dass man keine Grafikdateien in die MQL4-Sandbox legen muss, wie im Fall der Ressourcen.
Bitten Sie die Entwickler, hier ein PNG einzufügen.
Ich bin sicher, sie werden zustimmen.
Fügen wir es zu MQL5 hinzu.
Sie können eine Datei als Array einfügen und dann auf dieses Array zugreifen.
Beigefügtes Beispiel
Erstaunlich, wie lange gibt es dieses "Einfügen"-Menü schon in ME? :O
leben und lernen...
Fügen wir es zu MQL5 hinzu.
Markt zeigt, dass alle Produkte für beide Plattformen dupliziert werden. Höchstwahrscheinlich werden sie die plattformunabhängige Variante nicht verwenden, sondern auf BMP sitzen bleiben, leider.
Sie können jede Datei in MQL5 sogar jetzt anhängen.
Eine solche Anlage wird ein statisches Array mit Daten, nicht eine Ressource erstellen. Im zweiten Fall scheint es von anderen EX4/5 verfügbar sein.Konvertieren Sie PNG mit Transparenz in echtes BMP mit Transparenz und hängen Sie es über die Ressource an.
Diese Option funktioniert nicht in MT4, da BMP mit Alphakanal zwar angehängt, aber nicht angezeigt wird.
Market zeigt, dass alle Produkte für beide Plattformen dupliziert werden. Höchstwahrscheinlich wird die nicht plattformübergreifende Variante nicht verwendet und bleibt auf BMP sitzen, leider.
Ich denke, PNG ist bereits plattformübergreifend geworden. Es funktioniert bereits mit externen Dateien. Beispiele oben von Nikolay.
Sie können eine Datei als Array einfügen und dann auf dieses Array zugreifen.
In der Tat, das geht. Ich war direkt überrascht.
Jetzt muss man nur noch versuchen, den ganzen Kram mit Gummierung und Transparenz in Canvas zu realisieren und schon ist ein kleines mq4-Wunder fertig.
Natürlich wird das plattformübergreifend gemacht. Denn auf MT4 - BMP, und auf MT5 - PNG. Nicht gut. Alles sollte PNG sein.
Man muss nur noch versuchen, die ganze gummiartige, transparente Sache in Canvas zu implementieren, und schon ist ein kleines mq4-Wunder fertig.
Es ist also alles schon fertig. Sie können einen Beispieltest aus der PNG-Bibliothek nehmen. Nur die Zeile mit der Ressource
ändern Sie in die Zeile
#include <PNG\iconspng.mqh>
wo wir in der Datei iconspng.mqh das Array png_data[] einfügen.
Nur ist es notwendig, daran zu erinnern, dass in MT4 ist es wichtig, alle kostspieligen Berechnungen von OnChartEvent an den Timer auszugeben, sonst wird es schrecklich verzögern. Reiner MQL4-Bullshit.
Ich werde jetzt eine nicht-laggende Version einstellen.
Ich bin dabei, eine Version ohne Verzögerungen hochzuladen.
Ja, es lahmt nicht einmal, wenn die CPU im Modus "Beste Leistung" ist.
Erstaunlich, wie lange gibt es dieses "Einfügen"-Menü in ME schon? :O
leben und lernen...
Unter meinen Dateien, in denen ich mit dem Einfügen solcher Dateien experimentiert habe, fand ich eine Datei, die im November 2019 erstellt wurde. Das hat mich schon früher interessiert. Leider habe ich das Skript nicht gefunden, in dem die Bilddatei aus einem solchen Array gespeichert wurde.
Unter meinen Dateien, in denen ich mit dem Einfügen solcher Dateien experimentiert habe, fand ich eine Datei, die im November 2019 erstellt wurde. Ich war schon früher daran interessiert. Leider habe ich das Skript nicht gefunden, in dem die Bilddatei aus einem solchen Array gespeichert wurde.