Diskussion zum Artikel "Wie schnell ein Bedienfeld zu einem Indikator und Expert Advisor hinzugefügt werden kann"
Vielen Dank für diesen Artikel! Wie kann ich die Hintergrund- und Rahmenfarbe des Panels selbst ändern? Ich habe es in den Standardklassen nicht gefunden.
Vielen Dank für diesen Artikel! Wie kann ich die Hintergrund- und Rahmenfarbe des Panels selbst ändern? Ich habe es nicht in den Standardklassen gefunden.
Definieren Sie Defines in Defines.mqh neu.
- Bei der nächsten Aktualisierung wird die Standardbibliothek wiederhergestellt und die Datei Defines.mqh wird entsprechend wiederhergestellt.
- Es ist nicht sinnvoll, die Standardbibliothek zu bearbeiten.
- Beim nächsten Update wird die Standardbibliothek wiederhergestellt - entsprechend wird auch die Datei Defines.mqh wiederhergestellt.
- Es ist nicht gut, die Standardbibliothek zu bearbeiten.
Ich habe nicht vorgeschlagen, sie zu bearbeiten. Sie müssen es überschreiben, nachdem Sie diese Datei aktiviert haben, aber bevor Sie das Panel erstellen.
Bitte sagen Sie mir anhand eines einfachen Beispiels, wie das geht, ich kenne mich mit oop nicht aus. Ich habe die Farben der Defines in der Bibliothek selbst geändert - die Farbe des Panels ändert sich nicht.
Nachdem Sie die Datei geändert haben, kompilieren Sie den EA neu, dann sollte es funktionieren. Und vergessen Sie nicht, ein Backup zu machen, um Ihre Variante nach dem Update wiederherzustellen.
Das Überschreiben wird mit #undef und #define durchgeführt. Aber man muss sie an der richtigen Stelle einfügen ;)
Überschreiben wird mit #undef und #define gemacht. Aber man muss sie an der richtigen Stelle einsetzen ;)
Nachdem Sie die Datei geändert haben, kompilieren Sie den EA neu, dann sollte er funktionieren. Vergessen Sie nicht, eine Sicherungskopie zu erstellen, um Ihre Variante nach der Aktualisierung wiederherzustellen.
Überschreiben wird mit #undef und #define gemacht. Aber man muss sie an der richtigen Stelle einfügen ;)
Nun, so habe ich es gemacht, nichts funktioniert. Das Panel ist immer noch weiß wie vorher
Der Compiler schreibt Macro redifinition, d.h. es ist eine Art von Overriding....
//+------------------------------------------------------------------+ //|MyPanel.mqh | //|Copyright © 2013, DeltaTrader | //| http://www.deltatrader.com.br | //+------------------------------------------------------------------+ #property copyright "DeltaTrader © 2013" #property link "www.deltatrader.com.br" #property version "1.000" #property description "Test Panel" #property indicator_plots 0 //+------------------------------------------------------------------+ //| Enthält| //+------------------------------------------------------------------+ #include <Controls\Dialog.mqh> #include <Controls\Label.mqh> #include <Controls\Panel.mqh> #include <Controls\Edit.mqh> #include <Controls\Defines.mqh> #define CONTROLS_DIALOG_COLOR_BORDER_LIGHT C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_BORDER_DARK C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_BG C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CAPTION_TEXT C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CLIENT_BG C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CLIENT_BORDER C'0x00,0x00,0xFF' //+------------------------------------------------------------------+ //| Globale Parameter| //+------------------------------------------------------------------+ int panelXX = 200; int panelYY = 200; int panelWidth = 600; int panelHeight = 400; CAppDialog m_panel; //--- Gebotsobjekte CPanel m_bidcolor; CLabel m_bidlabel; //--- Objekte fragen CPanel m_askcolor; CLabel m_asklabel; CEdit m_edit; //+------------------------------------------------------------------+ //| On Init| //+------------------------------------------------------------------+ int OnInit() { //--- Panel erstellen m_panel.Create(0,"blablabla",0,panelXX,panelYY,panelWidth,panelHeight); //--- Gebotsaufkleber und Farben m_bidcolor.Create(0,"Bid Background Color",0,1,1,panelWidth-30,30); m_bidcolor.ColorBackground(clrYellow); m_panel.Add(m_bidcolor); m_bidlabel.Create(0,"Bid Text",0,5,5,0,0); m_bidlabel.Text("Bid "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)); m_bidlabel.Color(clrBlue); m_panel.Add(m_bidlabel); //--- Etiketten und Farben fragen m_askcolor.Create(0,"Ask Background Color",0,1,1,panelWidth-30,30); m_askcolor.ColorBackground(clrAqua); m_panel.Add(m_askcolor); m_asklabel.Create(0,"Ask Text",0,5,30,0,0); m_asklabel.Text("Ask "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)); m_asklabel.Color(clrRed); m_panel.Add(m_asklabel); m_edit.Create(0,"Bid Background Color",0,1,1,panelWidth-30,30); m_panel.Add(m_edit); //--- Bedienfeld ausführen m_panel.Run(); return(0); } //+------------------------------------------------------------------+ //| Bei DeInit| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Panel zerstören m_panel.Destroy(reason); //--- Alle Objekte löschen ObjectsDeleteAll(0,0); } //+------------------------------------------------------------------+ //| Am Berechnen| //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- Ein sehr einfaches Gebotsetikett m_bidlabel.Text("Bid "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)); //--- Ein sehr einfaches Fragezeichen m_asklabel.Text("Ask "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)); //--- return(rates_total); } //+------------------------------------------------------------------+ //| On Chart Event| //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- Verschieben Sie das Panel mit der Maus m_panel.ChartEvent(id,lparam,dparam,sparam); //--- } //+------------------------------------------------------------------+
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Wie schnell ein Bedienfeld zu einem Indikator und Expert Advisor hinzugefügt werden kann :
Möchten Sie zu Ihrem EA oder einem Indikator ein grafisches Feld für eine einfache und schnelle Kontrolle hinzufügen, aber Sie wissen nicht, wie Sie dies tun können? In diesem Artikel werde ich Ihnen Schritt um Schritt zeigen, wie man ein einfaches Feld zu Ihrem MQL4 / MQL5-Programm hinzufügen kann.
Ihr MQL4 / MQL5-Programm - ein Indikator oder EA - kann einer der besten sein und vollständig seine Aufgaben erfüllen. Aber Sie können es immer etwas verbessern. In der Regel muss der Benutzer in 99% für Änderungen der Eingangsparameter des Programms die Einstellungen zugreifen. Wollen Sie es umgehen?
Sie können dies tun, indem Sie Ihr eigenes Bedienfeld auf der Basis der Klassen von Standardbibliothek erstellen. Dadurch kann man die Einstellungen ändern, ohne das Programm neu zu starten. Außerdem wird eine solche Vorgehensweise das Programm attraktiver machen und macht einen Unterschied unter anderen. Die Beispiele von grafischen Feldern können Sie im Markt ansehen.
In diesem Artikel werde ich Ihnen zeigen, wie man ein einfaches Feld zu Ihrem MQL4 / MQL5-Programm hinzufügen kann. Sie erfahren, wie man das Programm gestalten kann, dass er Eingangsparameter lesen wird und auf Änderungen in ihren Werten reagieren wird.
Autor: Karputov Vladimir