Diskussion zum Artikel "Grafisches Interface X: Sortieren, Neuerstellen der Tabelle und Steuerelemente der Zellen (build 11)" - Seite 10

 

Hallo,

Ihr Tabellenprojekt ist wirklich interessant und ein Beispiel für gute OOP-Codierung.

Darf ich fragen, ob Sie bereit sind, über ein - hoffentlich auch für andere - sehr hilfreiches Add-on für komplizierte Multi-Symbol EAs nachzudenken?

Stellen Sie sich einen EA vor, der viele Symbole mit vielen Indikatoren handelt und für jedes Symbol ein individuelles Indikator-Setup an Parametern hat (z.B. einfach):

input string Sym1 = "EURUSD";

Eingabe int Sym1MACDema1 = 12;

Eingabe int Sym1MACDema2 = 26;

Eingabe int Sym1MACDsma3 = 9

input ENUM_APPLIED_PRICE Sym1MACDprc =PRICE_CLOSE;

input string Sym2 = "GBPUSD";

input int Sym2MACDema1 = 11;

eingabe int Sym2MACDema2 = 25;

eingabe int Sym2MACDsma3 = 10

input ENUM_APPLIED_PRICE Sym2MACDprc =PRICE_CLOSE;

...

Dies wäre für den Benutzer viel einfacher zu handhaben, wenn diese Einstellung in Form einer Tabelle statt einer langen Liste von Parametern dargestellt würde.

Vor allem, wenn Sie Ihre Anwendung in die Lage versetzen, den StartegyTester über diese csv-Datei zu verwalten. Ich denke, man muss den EA im StrategyTester über die Csv-Datei in der OnInit()-Funktion verwalten.

Dazu könnte man das hinzufügen, was der StratTester bietet: einen Bereich definieren. from, to, step.

Aber da könnte das Problem sein, dass im Falle des Genetischen Algorithmus, wenn OnInit() INIT_PARAMETERS_INCORRECT oder INIT_FAILED zurückgibt, der Genetische Algorithmus dies als einen gültigen Durchlauf zählt, was die Anzahl der wirklich bestandenen Testläufe reduziert und damit die Gültigkeit des Endergebnisses verringert.

Mir ist dieses Problem bei mt4 aufgefallen und ich habe dies dem Service Desk mitgeteilt - aber ich habe keine Ahnung, ob sie es gelöst haben oder nicht.


Wie auch immer, gute Arbeit - weiter so :)




 
Carl Schreiber:

...

Danke für das Feedback und die Anregung! Ich werde darüber nachdenken, wie das realisiert werden kann.
 

Hallo, Wie kann ich das Hauptformular oder das Dialogfeld programmgesteuert an eine bestimmte Stelle verschieben.

Zum Beispiel möchte ich das Dialogfeld in die linke obere Ecke verschieben, wenn der Formulartitel angeklickt wird.

 

Tol, ich habe beim Ändern der Spaltengröße seltsame Dinge bemerkt - der Text wird falsch abgeschnitten. Außerdem habe ich zufällig entdeckt, dass sich die Spaltengröße ständig ändert, wenn ich die Strg-Taste gedrückt halte.


 
Artyom Trishkin:

1) Tol, ich habe seltsame Dinge beim Ändern der Spaltengröße bemerkt - der Text wird falsch abgeschnitten.

2. und ich entdeckte auch zufällig eine konstante Änderung der Spaltengröße, wenn ich die Strg-Taste gedrückt halte.

1. Ich habe versucht, mit verschiedenen Modi der Textausrichtung in Spalten zu testen, konnte dies aber nicht reproduzieren.

2. Ich habe mit der Strg-Taste gespielt, aber es ist nicht klar, warum dieses Verhalten auftritt. Diese Taste ist im Tabellencode nicht definiert.

 

Hallo!

Das ist eine tolle Bibliothek!

Unterstützen Sie noch MT4?

Mit beiden MT4 und MT5 Unterstützung wäre ein guter Weg, um in der Lage sein, einen reibungslosen Übergang von MT4 zu MT5, wenn es Zeit dafür ist.

 

Hallo,


ich habe die Bibliothek in diesem Artikel heruntergeladen, ich war modifizieren Sache, um die Bibliothek zu lernen. Ich habe eine einfache Frage.


Wenn ich keine Menüs erstelle, wie in dem Code, den ich unten modifiziert habe, kann ich die Tabelle nicht sortieren und auf das Kontrollkästchen klicken, warum passiert das? @AnatoliKazharski


//+------------------------------------------------------------------+
//| Erstellt ein Handelsfenster|
//+------------------------------------------------------------------+
bool CProgram::CreateExpertPanel(void)
  {
//--- Formular 1 für Steuerelemente erstellen
   if(!CreateWindow1("EXPERT PANEL"))
      return(false);
/*/--- Erstellen von Steuerelementen:
// Hauptmenü
 if(!CreateMenuBar(1,20))
 return(false);
//--- Kontextmenüs
 if(!CreateMBContextMenu1())
 return(false);
 if(!CreateMBContextMenu2())
 return(false);
 if(!CreateMBContextMenu3())
 return(false);
 if(!CreateMBContextMenu4())
 return(false);*/
//--- Erstellen der Statusleiste
   if(!CreateStatusBar(1,25))
      return(false);
//--- Schaltflächen
   if(!CreateSimpleButton1(7,50,"ADD COLUMN"))
      return(false);
   if(!CreateSimpleButton2(7,75,"DELETE COLUMN"))
      return(false);
   if(!CreateSimpleButton3(180,50,"ADD ROW"))
      return(false);
   if(!CreateSimpleButton4(180,75,"DELETE ROW"))
      return(false);
   if(!CreateSimpleButton5(353,50,"REBUILD TABLE"))
      return(false);
   if(!CreateSimpleButton6(353,75,"CLEAR TABLE"))
      return(false);
//--- Bearbeitungen
   if(!CreateSpinEdit1(114,52,":"))
      return(false);
   if(!CreateSpinEdit2(114,77,":"))
      return(false);
   if(!CreateSpinEdit3(287,52,":"))
      return(false);
   if(!CreateSpinEdit4(287,77,":"))
      return(false);
//--- Gerenderte Tabelle erstellen
   if(!CreateCanvasTable(1,103)) // 103 | 42
      return(false);
//--- Neuzeichnen des Diagramms
   m_chart.Redraw();
   return(true);
  }
 
Hallo, können Sie mir sagen, wie ich eine Tabelle aktualisieren kann, wenn sie dynamische Daten hat https://www.mql5.com/ru/forum/165152/page10#comment_7488387
 
Juer:
Hallo, können Sie mir sagen, wie man eine Tabelle aktualisiert, wenn sie dynamische Daten hat https://www.mql5.com/ru/forum/165152/page10#comment_7488387

Siehe hier: GUIs X: Aktualisierungen für eine gezeichnete Tabelle und Code-Optimierung (Build 10)