Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
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
Ansichten:
828
Rating:
(29)
Veröffentlicht:
2016.05.10 08:20
Aktualisiert:
2016.05.10 12:52
\MQL5\Experts\ \MQL5\Include\
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Die Include-Datei IncGUI_BitPic.mqh mit der Grafik-Klasse CBitPic zur Erzeugung von Zeichnung (Abb. 1).

Fig. 1. Das Beispiel der Zeichnung durch die Klasse CBitPic.

Abb. 1. Ein Beispiel für das Zeichnen mit der CBitPic Klasse

Man kann Punkte der verschiedenen Größen - DrawDot(), Linien mit Koordinaten - DrawLine(), Linien im Winkel - DrawLineByAngle(), Pfeile - DrawArrow(), verschiedene Formen von: Rechtecke - DrawRectangle(), Dreiecke - DrawTriangle(), Kreise, Ellipsen, Ringe und Sektoren - DrawCircle(). Eine Ellipse (ebenso wie Ellipsen- und Kreis-Sektoren) kann um einen bestimmten Winkel gedreht werden. Die Figuren können ausgefüllt werden und nur umrandet sein. Man kann Text schreiben - TypeText() (mit mehrere Optionen für Schriftart und -größe). Bilder können als Bmp-Datei gespeichert werden - SavePicture() und aus einer Bmp-Datei - LoadPicture() geladen werden (die Datei darf nicht komprimiert sein, 24 oder 32 Bits).

Bevor Sie die Klasse verwenden, müssen sie die Date IncGUI_BitPic.mqh laden:

#include <IncGUI_BitPic.mqh>

Dann deklarieren Sie eine Klasse, zum Beispiel 'p':

CBitPic p;

Die Klasse wurde nach den Grundsätzen dieses Artikels erstellt:

Dementsprechend erfolgt die Anwendung wie in den Artikeln beschrieben, zunächst wird die Methode zur Initialisierung Init() aufgerufen, die Funktion Show() macht die Objekte sichtbar, die Funktion Hide() macht sie unsichtbar und löscht sie usw. 

Im Unterschied zur Klasse cIntBMP wird das Zeichen in einer etwas anderen Weise durchgeführt. In cIntBMP wurde die Zeichenfarbe in den Funktionen zum Zeichnen von Formen angegeben. Hier wird zuerst die Hintergrundfarbe bestimmt: - SetBGColor(), gefolgt von einem Abgleich - Clear(). Vor dem Zeichnen ist festzulegen, der Zeichenbreite - SetDrawWidth(), die Zeichenfarbe - SetDrawColor(), die innere Farbe - SetFillColor() und, ob die Form gefüllt wird - SetFilled() oder nur skizziert wird. Danach folgt der Aufruf der Zeichenfunktionen. Die Zeichenfarbe, Füllfarbe usw. kann natürlich bei Bedarf geändert werden. Ist die Zeichnung fertig, sollte die Methode Redraw() aufgerufen werden. 

Die folgende Tabelle enthält alle Methoden der Klasse:

Funktion
Aufgabe und Parameter
void Clear() Bereinigung
void DrawArrow(
   int aX1,
   int aY1,
   int aX2,
   int aY2,
   bool aBoth=false
)
Zeichnen einen Pfeil. aX1, aY1 - Start-Koordinaten, aX2, aY2 End-Koordinaten, aBoth - Pfeile an beiden Enden. 
void DrawCircle(
   int aX,
   int aY,
   int aR,
   double aR2K=0,
   double aFromAngle=0,
   double aToAngle=0,
   double aRatio=1,
   double aRotateAngle=0
)
Zeichnen einen Kreis, Ring, Ellipse, Sektor. aX, aY - Koordinaten für den Mittelpunkt; aR2K - Radius des inneren Kreises (von 0 bis 1); aFromAngle, aToAngle - Beginn und Ende der Abschnitts-Winkel; aRatio - Komprimierung-Koeffizient (eine positive Zahl, wenn es kleiner als 1 - vertikale Kompression, wenn größer als 1 - vertikale Ausdehnung); aRotateAngle - Drehwinkel. 
void DrawDot(
   int aX,
   int aY
)
Zeichnet einen Punkt. aX, aY - Koordinaten. 
void DrawLine(
   int aX1,
   int aY1,
   int aX2,
   int aY2
)
Zeichnet eine Linie. aX1, aY1 - Start-Koordinate, aX2, aY2 - End-Koordinaten. 
void DrawLineByAngle(
   int aX1,
   int aY1,
   double aAngle,
   int aLength
)
Zeichnen einer schrägen Linie. aX1, aY1 - Start-Koordinate, aAngle - Winkel, aLength - Länge. 
void DrawRectangle(
   int aX1,
   int aY1,
   int aX2,
   int aY2
)
Zeichnen eines Rechtecks. aX1, aY1 - Koordinaten der Ecke links oben, aX2, aY2 - Koordinaten der Ecke rechts unten. 
void DrawTriangle(
   int aX1,
   int aY1,
   int aX2,
   int aY2,
   int aX3,
   int aY3
)
Zeichnen eines Dreiecks. aX1, aY1, aX2, aY2, aX3, aY3 - Koordinaten der Eckpunkte. 
int Event(
   const int id,
   const long & lparam,
   const double & dparam,
   const string & sparam
)
Ereignishandler. Er wird von der Funktion OnChartEvent() des Expert Advisors aufgerufen. 
int EventX() X-Koordinate des letzten Klicks auf einem Grafikobjekt.
int EventY() Y- Koordinate des letzten Klicks auf einem Grafikobjekt.
void Fill(
   int aX,
   int aY
)
Füllt einen Bereich mit einer Farbe. aX, aY - Koordinaten. 
void GetData(
   uint & aData[]
)
Liefert den Array mit den Daten eines Bildes. aData - Der Array mit den Daten. 
color GetPixel(
   int aX,
   int aY
)
Liefert die Farbe des Pixels an den angegebenen Koordinaten. aX, aY - Koordinaten. 
int Height() Liefert die Höhe des Grafikobjektes.
void Hide() Löscht alle Grafikobjekte des Charts.
void Init(
   string aName="CBitPic",
   int aWidth=300,
   int aHeight=200
)
Initialisierung. aName - Name des Grafikobjektes, aWidth - Weite, aHeight - Höhe.
int Left() Liefert die Koordinate der linken Kante des Grafikobjektes.
bool LoadPicture(
   string aFileName,
   bool aFileCommon=false
Lädt ein Bild von einer bmp-Datei. aFileName - Dateiname, aFileCommon - Die Datei liegt entweder im offen Ordner 'Common/Files' oder im Terminal-Ordner 'MQL5/Files'. Nur nicht komprimierte Dateien mit 24 oder 32 bits. 
void Redraw() Neu zeichnen der Grafikobjekte.
void Refresh() Aktualisierung (gelöscht und neu erstellt).
bool SavePicture(
   string aFileName,
   bool aFileCommon=false
)
Speichern eines Bildes als bmp-datei. aFileName - Dateiname, aFileCommon - speichern entweder im offenen Ordner 'Common/Files' oder im Terminal-Ordner 'MQL5/Files'. 
void SetBGColor(
   uchar aR=0,
   uchar aG=0,
   uchar aB=255
)
Bestimmen der Hintergrundfarbe. aR, aG, aB - Werte der Farbkomponenten. 
void SetBGColor(
   color aColor=clrBlue
)
Bestimmen der Hintergrundfarbe. aColor - Farbe. Nachdem die Farbe bestimmt wurde, sollte Clear() aufgerufen werden.
void SetData(
   uint & aData[]
)
Bestimmen der Bilddaten durch ein Array. aData - Array der Bilddaten.
void SetDrawColor(
   uchar aR=255,
   uchar aG=255,
   uchar aB=0)
Bestimmen der Zeichenfarbe. aR, aG, aB - Werte der Farbkomponenten. 
void SetDrawColor(
   color aColor=clrYellow
)
Bestimmen der Zeichenfarbe. aColor - Farbe. 
void SetDrawWidth(
   int aWidth
)
Bestimmen der Strichstärke. aWidth - Stärke von 1 bis 5. 
void SetFillColor(
   uchar aR=255,
   uchar aG=0,
   uchar aB=0
)
Bestimmen der Füllfarbe. aR, aG, aB - Werte der Farbkomponenten. 
void SetFillColor(
   color aColor=clrRed
)
Bestimmen der Füllfarbe. aColor - Farbe. 
void SetFilled(
   bool aFilled=true
)
Setzen des Ausfüll-Modus. aFilled - mit/ohne Farbfüllung. 
void SetFont(
   int aType=3
)
Bestimmen der Schriftart. aType - Typ (0-6). 0 - Small Fonts 6, 1 - Small Fonts 7, 2 - Small Fonts 8, 3 - Arial 8, 4 - Arial Narrow 8, 5 - Arial Black 8, 6 - Courier New 8. 
void SetPos(
   int aLeft,
   int aTop
)
Bestimmen der Koordinaten der linken, oberen Ecke des Grafikobjektes. aLeft - Entfernung zur linken Kante, aTop - von oben.
void SetPosLeft(
   int aLeft
)
Bestimmen der Koordinaten der linken Kante des Grafikobjektes. aLeft - Entfernung zur linken Kante.
void SetPosTop(
   int aTop
)
Bestimmen der Koordinaten der oberen Kante des Grafikobjektes. aTop - Entfernung zur oberen Kante.
void SetSize(
   int aWidth,
   int aHeight
Größenbestimmung. aWidth - Weite, aHeight -Höhe.
void SetSubWindow(
   int aNumber
)
Bestimmen des Unterfensters durch eine Nummer. aNumber - Nummer des Unterfensters. 
void SetSubWindow(
   string aName
)
Bestimmen des Unterfensters durch einen Namen. aName - Name des Unterfensters. 
void SetTag(
   string aValue
)
Setzen eines Datenschilds. aValue - Text. 
void Show() Freigabe der Sichtbarkeit der Grafikobjekte.
void Show(
   int aLeft,
   int aTop
)
Freigabe der Sichtbarkeit der Grafikobjekte an einer bestimmten Position. aLeft - Entfernung zur linken Kante, aTop - von oben. 
string Tag() Liefert den Textinhalt des Datenschilds.
int Top() Liefert die Koordinaten der oberen Kannte eines Grafikobjektes.
void TypeText(
   int aX,
   int aY,
   string aText,
   int aDirection=0,
   int aAlign=0
)
Schreibt einen Text. aX, aY - Koordinaten, aText - Text, aDirection - Richtung (0 - links nach rechts, 1 - oben nach unten, 2 - rechts nach links invertiert, 3 - unten nach oben), aAlignе - Abgleich (0 - Zeilenanfang, 1 - Zeilenende). 
bool Visible() Liefert die Sichtbarkeit eines Grafikobjektes. 
int Width() Liefert die Weite eines Grafikobjekt.


Die Datei eBitPicTest.mq5 bietet ein Beispiel der Verwendung der Klasse von CBitPic. Der Expert Advisor zeichnet das Bild auff den Chart wie in Fig. 1 und speichert es in der Datei CBitPic.bmp (sie sollte im Terminal-Ordner MQL5/Files liegen). Wenn Sie auf das Bild klicken, erscheinen die Punktkoordinaten und seine Farbe im Kommentar des Chart und eine "Schneeflocke" erscheint bei den angeklickten Punkt (wie in der oberen rechten Ecke in Abb. 1).

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/1050

TradeChannel TradeChannel

Der Expert Advisor auf der Grundlage des Preiskanals

MA2CCI MA2CCI

Ein Expert Advisor, der mit zwei МАs und dem CCI arbeitet

New Highs-New Lows Index New Highs-New Lows Index

Der "New Highs-New Lows Index" berechnet die Differenz der Anzahl von Währungspaaren mit neuen Höchstständen und denen, mit neue Tiefs innert eines bestimmten Zeitraumes.

GetExtremums GetExtremums

Die Funktion identifiziert in einem bestimmten Zeitraum die Kursextrema.