und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5

Ein Klasse für das Arbeiten mit drei Arten von Tasten - Bibliothek für den MetaTrader 5
- Ansichten:
- 1051
- Rating:
- Veröffentlicht:
- 2016.07.19 09:47
- Aktualisiert:
- 2016.11.22 07:34
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Diese Klasse erstellt interaktive Tasten mit unterschiedlichen Zuständen auf einem Preischart.
Sie wurde für einen Wettbewerb vom großzügigen TheXpert entwickelt. Danke.
Eine Demonstration der CBtn Klasse
Klassen-Methoden
Create(long chart_id,int sub_wnd,string name,int x,int y,int dx,int dy) - erstelle eine Taste mit den Parametern:
- Fensterbezeichner
- Unterfenster Nummer
- Tastenname
- X Koordinate
- Y Koordinate
- Horizontale Größe
- Vertikale Größe
Resources(string img_up,string img_up_active="",string img_dn="",string img_dn_active="",string img_up_disable="",string img_dn_disable="",string img_mask="") - bestimme das Bild für verschiedene Tastenzustände:
- Normale Taste, nicht gedrückt
- Taste mit Cursor darüber
- Taste, gedrückt
- gedrückte Taste mit Cursor darüber
- Deaktivierte Taste
- Konturmaske der Taste
SetUseMask(ENUM_USEMASK mask,int x=0,int y=0) - erstellt die Maske durch die Farbe angegebener Pixel; die Maske wird aus den normalen nicht-gedrückten Tasten erstellt.
- Verwendeter Maskentyp
- X Koordinate
- Y Koordinate
SetUseMask(ENUM_USEMASK mask,uint acolor) - erstellt die Maske durch die Farbe; die Maske wird aus den normalen nicht-gedrückten Tasten erstellt.
- Verwendeter Maskentyp
- Farbe
SetCorner(ENUM_BASE_CORNER corner) - bestimme die Ecke, an der die Taste verankert wird
SetAnchor(ENUM_ANCHOR_POINT anchor) - setzt den Anker Typ
SetX(int x) - setzt die X-Koordinate
SetY(int y) - setzt die Y-Koordinate
SetXY(int x,int y) - Einzelmethode zum Setzen der X und Y Koordinaten
On(bool state) - setze den Tastenzustand (true für gedrückt, false für nicht-gedrückt)
Enable(bool state) - aktiviere/deaktiviere die Taste
Paint(void) - zeichne die Taste
Event(int id,long lparam,double dparam,string sparam) - Ereignisweiterleitung an die Taste
alle Parameter wurden von der Funktion OnChartEvent dupliziert
GetX(void) - liefert die X Koordinate
GetY(void) - liefert die Y Koordinate
GetEnable(void) - liefert den aktiviert/deaktiviert Zustand
GetOn(void) - liefert den gedrückt/nicht-gedrückt Zustand
GetCorner(void) - liefert die Ecke, in der die Taste verankert wurde
GetAnchor(void) - liefert den Ankertyp
AddText(int x,int y,string font_name,int font_size,color text_color,string text) - ergänzt die Taste um Text
- X Koordinate
- Y Koordinate
- Schriftname
- Schriftgröße
- Schriftfarbe
- Text
Text(string text) - aktualisiere den Text der Taste (funktioniert nur mit AddText(...)-Aufruf)
Erstellen der Taste
Standardmäßig hat eine Taste folgende Parameter:
- Nicht-gedrückt
- Aktiviert
- Verankert in der linken oberen Ecke des Charts
- Verankert durch die obere linke Ecke der Taste
Einstellungen der Tastenmaske
Standardmäßig wird die Taste wird aus dem Bild der normalen nicht-gedrückten Taste erstellt. Transparente Pixel dienen als Maske.
- UseMask(MASK_STANDALONE_RESOURCE) - die Maske verwendet ein Bild bestimmt in Resources(). Wenn das Bild nicht gesetzt wurde, wird die ganze Tasten-Fläche (Rechteck) als Arbeitsbereich verwendet.
- UseMask(MASK_PIXEL,x,y) - die Maske verwendet die Farbe der spezifizierten Pixel. Wenn die Pixelfarbe nicht die angegebene ist, wird sie die der Maske. Wurden die Koordinate nicht bestimmt, werden die Koordinaten [0,0] verwendet.
- UseMask(MASK_COLOR,color) - bestimmt die Farbe für die Maske. Wenn die Pixelfarbe nicht die angegebene ist, wird sie die der Maske. Die Farbe sollte im ARGB-Format angegeben werden.
Beispiel
//+------------------------------------------------------------------+ //| 3dButtons.mq5 | //| Copyright 2015, fyords | //| https://login.mql5.com/ru/users/fyords | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, fyords" #property link "https://www.mql5.com/en/users/fyords" #property version "1.01" //+------------------------------------------------------------------+ //| Insert resources | //+------------------------------------------------------------------+ #resource "img\\200_1.bmp" #resource "img\\200_2.bmp" #resource "img\\200_3.bmp" #resource "img\\200_4.bmp" #resource "img\\200_5.bmp" #resource "img\\200_6.bmp" //+------------------------------------------------------------------+ #include "Class.mqh" //+------------------------------------------------------------------+ enum Adjust { UpperLeft, UpperRight, LowerLeft, LowerRight }; //+------------------------------------------------------------------+ //| Input property | //+------------------------------------------------------------------+ input Adjust adj_corner=UpperLeft; //Ecke //+------------------------------------------------------------------+ //| Global variables | //+------------------------------------------------------------------+ CBtn *btn[]; int num_buttons; //+------------------------------------------------------------------+ //| Initialization function | //+------------------------------------------------------------------+ int OnInit() { long wnd=ChartID(); int sub_wnd=ChartWindowOnDropped(); ArrayFree(btn); int n=0; num_buttons=0; for(int y=0;y<3;y++) { for(int x=0;x<3;x++) { ArrayResize(btn,n+1); btn[n]=new CBtn; btn[n].Create(wnd,sub_wnd,"3dButtons_"+(string)MathRand(),x*152+10,y*152+10,200,200); btn[n].Resources("img\\200_1.bmp","img\\200_2.bmp","img\\200_3.bmp","img\\200_4.bmp","img\\200_5.bmp","img\\200_6.bmp"); btn[n].AddText(80,80,"Arial",25,clrWhite,"Button"+(string)(n+1)); switch(adj_corner) { case UpperLeft: btn[n].SetAnchor(ANCHOR_LEFT_UPPER); btn[n].SetCorner(CORNER_LEFT_UPPER); break; case UpperRight: btn[n].SetAnchor(ANCHOR_RIGHT_UPPER); btn[n].SetCorner(CORNER_RIGHT_UPPER); break; case LowerLeft: btn[n].SetAnchor(ANCHOR_LEFT_LOWER); btn[n].SetCorner(CORNER_LEFT_LOWER); break; case LowerRight: btn[n].SetAnchor(ANCHOR_RIGHT_LOWER); btn[n].SetCorner(CORNER_RIGHT_LOWER); break; } btn[n].Paint(); n++; } } ChartRedraw(); num_buttons=ArraySize(btn); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { for(int i=0;i<num_buttons;i++) delete btn[i]; ArrayFree(btn); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { for(int i=0;i<num_buttons;i++) btn[i].Event(id,lparam,dparam,sparam); }
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/12637

Der Indikator zeigt zugleich den aktuellen Spread und die Zeit bis zum Schluss der Bar (Kerze).

Der AFL_Winner_Signal Indikator informiert über den aktuellen Trend basierend auf den Signalen des AFL_Winner Indikators.

Der Expert Advisor kontrolliert und beschränkt den Gesamtverlust des Kontos und den Verlust einzelner Positionen. Er bietet auch einen Trailing Stop für das Konto.

Dieser Indikator ist die MQL5 Version des FractalZigZagNoRepaint, er zeigt die "Swing-High" und "Swing-Low".