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

Ein Klasse für das Arbeiten mit drei Arten von Tasten - Bibliothek für den MetaTrader 5

Ansichten:
944
Rating:
(26)
Veröffentlicht:
2016.07.19 09:47
Aktualisiert:
2016.11.22 07:34
Class.mqh (24.14 KB) ansehen
img.zip (139.78 KB)
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:

  1. Fensterbezeichner
  2. Unterfenster Nummer
  3. Tastenname
  4. X Koordinate
  5. Y Koordinate
  6. Horizontale Größe
  7. 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:

  1. Normale Taste, nicht gedrückt
  2. Taste mit Cursor darüber
  3. Taste, gedrückt
  4. gedrückte Taste mit Cursor darüber
  5. Deaktivierte Taste
  6. 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.

  1. Verwendeter Maskentyp
  2. X Koordinate
  3. 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.

  1. Verwendeter Maskentyp
  2. 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

  1. X Koordinate
  2. Y Koordinate
  3. Schriftname
  4. Schriftgröße
  5. Schriftfarbe
  6. 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

Candle Time End and Spread Candle Time End and Spread

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

AFL_Winner_Signal AFL_Winner_Signal

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

Risk Manager Risk Manager

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.

Fractal ZigZag Fractal ZigZag

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