Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

Die Ersetzung der CRect und CCanvas (Die standarte Bibliothek - einige Fehler wurden korrigiert) - Bibliothek für den MetaTrader 5

MetaQuotes / Changes by Doerk | German English Русский 中文 Español 日本語 Português
Veröffentlicht:
Doerk Hilger
Ansichten:
757
Rating:
(24)
Veröffentlicht:
2016.09.20 10:00
Aktualisiert:
2016.11.22 07:34
\MQL5\Include\Controls\
rect.mqh (12.53 KB) ansehen
\MQL5\Include\Canvas\
canvas.mqh (82.83 KB) ansehen
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Der echte Autor:

MetaQuotes Software, die Korrektur und Verbesserung vom Doerk.

Während der Pixel-Arbeit mit der standaten Bibliothek wird auffällig, dass es in einigen Stellen nicht genügend Pixel gibt. Diese komische Sache wird vor allem von einigen Fehlern in der Klasse CRect verursacht. Das Hauptproblem liegt darin, dass die originale Klasse einen Fehler bei der Berechnung der Höhe und Breite der Rechtecke gibt, die fast auf alle derivativen Klasse CWnd einen Einfluss hat, denn CWnd wird auf Basis CRect begründet.

Im originalen CRect wird die Breite in der folgenden Weise berechnet:

width = x2 - x1

Das ist einfach falsch. Bei der Erstellung eines rechteckigen Objektes, von 0,0 bis 10,10, wird ein Objekt der Breite in 11 Pixel sein, und nicht in 10 Pixel. Auf dieser Weise ist die richtige Antwort

width = x2 - x1 +1

In einigen anderen Klassen der standarten Bibliothek wird die Breite richtig berechnet, aber nicht immer (das heißt in CCanvas bei einer Erstellung und des Aufrufs zur Ressource im Speicher, aber nicht bei der Ladung der Rechtecke). Jedenfalls ist dieses Verhalten nicht folgerichtig und muss korrigiert werden.

Nun ist es möglich geworden, den Unterschied zwischen zwei Rechtecken mit Hilfe der einfachen Operatoren durchzuführen, wie == != >= <= > <

statt der Kodierung

if (rect1.left==rect2.left && rect1.top==rect2.rect.top && rect1.right==rect2.rect.right && rect1.bottom==rect2.bottom)

muss man nur das Folgende eingeben

if (rect1==rect2)

Darüber hinaus, auch für die Erweiterung oder Vermehrung der Rechtecke werden die unären Operatoren wie ++, --, + unterstützt.

Empfehlungen:

  • Ersetzen Sie den Rect.mqh mit dieser Datei im Ordner Controls. Stellen Sie ihn nicht in einem anderen Ordner, er wird einfach nicht funktionieren.
  • Ersetzen Sie Canvas.mqh im Ordner Canvas mit der hinzugefügten Datei. Stellen Sie ihn nicht in einem anderen Ordner, er wird nicht funktionieren.
  • Machen Sie eine Reserve-Kopie dieser Datei und Sie stellen ihn in neuen Versionen MetaTrader zum Anfangs-Ordner wiederher.
  • Wenn MetaQuotes Originale mit diesen Dateien ersetzt, denke ich, werden Sie sowieso darüber informiert.

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/13936

id_digits_object id_digits_object

Es zeigt die Anzahl der Dezimalstellen (die Anzahl der Stellen in dem Bruchteil), Zeit und markierenden Ankerpunkte der graphischen Objekte.

TEMA_CUSTOMCandle TEMA_CUSTOMCandle

Der Indikator TEMA_CUSTOM in einer Kerzen-Form.

Exp_TEMA_CUSTOM Exp_TEMA_CUSTOM

Der Experte Exp_TEMA_CUSTOM wurde aufgrund der veränderten Bewegungsrichtung des Indikators TEMA_CUSTOM gebaut.

Exp_XDerivative Exp_XDerivative

Der Experte Exp_XDerivative wurde aufgrund der veränderten Bewegungsrichtung des Oszillators XDerivative gebaut.