Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 436

 
WinProject:
Danke!) Aus Ihrer Antwort schließe ich, dass ich für jede Art von Objekt eine eigene Funktion erstellen muss. Ich dachte, dass es irgendwie möglich wäre, einen separaten Start von Funktionen zum Erstellen von Objekten zu machen, die mit der Schleife verbunden sind, während die Hauptfunktion die Datei liest. Wie wäre es mit Switch?

Ich bin wahrscheinlich nicht genug darauf eingegangen.

Die erste, die Konstruktion aller grafischen Objekte, wirft keine Probleme oder Fragen auf. Aber das zweite muss ich falsch verstanden haben. Offensichtlich ging es nicht um die Frage, wie die Arbeit mit einer Schaltfläche für viele Arten von Objekten organisiert werden kann, sondern um eine Schaltfläche für eine Art von Objekten. In diesem Fall würde ich eine Struktur mit Objektparametern und mehrere Arrays von Strukturen erstellen, ein Array für jede Art von Objekt. Und ich würde diese Struktur-Arrays an Schaltflächen der entsprechenden Typen binden.

Wenn Sie dann die Taste drücken, wird der entsprechende Objekttyp gelöscht. Und wenn die Taste losgelassen wird, werden die Objekte durch die Parameter im Struktur-Array wiederhergestellt.

Daher muss die Datei nur einmal beim Start gelesen werden.

 
Alexey Viktorov:

Wahrscheinlich bin ich zu wenig auf das Thema eingegangen.

Die erste, die Konstruktion aller grafischen Objekte, wirft keine Probleme oder Fragen auf. Aber das zweite muss ich falsch verstanden haben. Offensichtlich ging es nicht um die Frage, wie man die Arbeit mit einer Schaltfläche für viele Arten von Objekten organisieren kann, sondern um eine Schaltfläche für eine Art von Objekten. In diesem Fall würde ich eine Struktur mit Objektparametern und mehrere Arrays von Strukturen erstellen, ein Array für jede Art von Objekt. Und ich würde diese Struktur-Arrays an Schaltflächen der entsprechenden Typen binden.

Wenn Sie dann die Taste drücken, wird der entsprechende Objekttyp gelöscht. Und wenn die Taste losgelassen wird, werden die Objekte durch die Parameter im Struktur-Array wiederhergestellt.

Daher muss die Datei nur einmal beim Start gelesen werden.

Vielen Dank für die Antwort, ich werde versuchen, beide Varianten zu machen, durch Flaggen, wie von STARIJ vorgeschlagen, und Ihre Variante ist auch interessant zu versuchen. Ich werde versuchen, weniger Fragen zu stellen, ist es glücklich, dass sie beantwortet werden!)
 
STARIJ:

Flaggen sind Variablen. Oder bool: false=leer, true=erhöht oder int - dann gibt es viele Flaggen in einer Zahl auf einmal: 0 - alles weggelassen, 1=verlorener erster, 2=verlorener zweiter, 3=verlorener erster und zweiter, 4=verlorener dritter, 5=verlorener dritter und erster, 6=verlorener dritter und zweiter, 7=verlorener erster, zweiter, dritter, 8=verlorener vierter.... Nun, das ist in Binärcode. Wie finden Sie das heraus?

Danke, ich habe eine gute Erklärung im Netz gefunden, ich werde sie ausprobieren. Das Seltsame ist, dass auf dieser Website weder in der Dokumentation, noch in der Anleitung, wahrscheinlich davon ausgegangen, dass jeder, der hierher kam bereits Programmierkenntnisse haben.
 
WinProject:
Vielen Dank für die Antwort, ich werde versuchen, beide Varianten zu machen, durch Flaggen, wie von STARIJ vorgeschlagen, und Ihre Variante ist auch interessant zu versuchen. Ich werde versuchen, weniger Fragen zu stellen, es ist gut, Antworten zu haben).

Flaggen mögen nicht schlecht sein, aber sie gehen am Thema vorbei

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen, die Neulinge zu MQL4 haben, Hilfe und Diskussion über Algorithmen und Codes

WinProject, 2018.01.26 18:17

Guten Abend, ich bin mal wieder auf der Suche nach Hilfe. Mein EA hat die Hauptfunktion in OnInit, die die Datei liest, und sofort baut verschiedene grafische Objekte nach verschiedenen Bedingungen. Auf dem Diagramm befindet sich auch eine Schaltfläche, die, wenn sie angeklickt wird, die Funktion zum Entfernen dieser Objekte, wie z. B. Textbeschriftungen, ausführt. Wie kann man erreichen, dass nach dem Drücken der Taste die Textbeschriftungen entfernt werden und beim Loslassen der Taste nicht die ganze Funktion gestartet wird, die alle Objekte vollständig konstruiert, sondern nur die Textbeschriftungen konstruiert werden. Das Einzige, was mir in den Sinn kommt, ist, ein Analogon der Hauptfunktion separat für jeden Objekttyp mit allen Aktionen zu erstellen , die mit dem Öffnen und Lesen der Datei verbunden sind, aber ich möchte eine clevere Lösung verwenden, aber ich weiß nicht, welche und wie, in der Hauptfunktion oder in den Funktionen der Schaltflächen?

In diesem Fall ist es einfacher, das Einlesen der Datei in einer separaten benutzerdefinierten Funktion zu implementieren und diese mehrmals aufzurufen, um die Erstellung ein und desselben Codes nicht zu vervielfachen. Aber egal, wie sehr Sie sich bemühen, das Lesen von Dateien wird auch bei Verwendung von Flaggen möglich sein. Und es macht keinen Unterschied, was bei der Erstellung von gelöschten Objekten zu prüfen ist - ihre Abwesenheit oder ihr Flaggenstatus nach Objekttyp. Schließlich wird die Art des Objekts durch die Schaltfläche bestimmt, die mit einem bestimmten Typ verknüpft ist, das ist das Kennzeichen.
 

Können Sie mir sagen, wie ich den Wert der aktuellen Stunde in MQL5 ermitteln kann?
Ich habe ein Objekt der Struktur MqlDateTime erstellt, es gibt nichts

 
Roman Sharanov:

Können Sie mir sagen, wie ich den Wert der aktuellen Stunde in MQL5 ermitteln kann?
Ich habe ein Objekt der Struktur MqlDateTime erstellt, es gibt nichts

Die Struktur muss mit Datum und Uhrzeit gefüllt werden.
 
Artyom Trishkin:
Die Struktur muss mit Datum und Uhrzeit gefüllt werden.

TimeCurrent() verwenden? Ich verstehe nur nicht wie.

 
Roman Sharanov:

TimeCurrent() verwenden? Ich verstehe nur nicht, wie

TimeToStruct()
 
Artyom Trishkin:
TimeToStruct()

Ah, ich habe es, es funktioniert, danke!

 

https://docs.mql4.com/ru/basis/types/casting

Vorletztes Beispiel,Farbe in RGB-Darstellung als String."Konvertieren zweier Strukturen durch Kopieren des Inhalts" funktioniert nicht.

#property script_show_inputs
input color          testColor=clrBlue;// задайте цвет для тестирования
//--- структура для представления цвета в RGB
struct RGB
  {
   uchar             blue;          // синяя составляющая цвета
   uchar             green;         // зеленая составляющая цвета
   uchar             red;           // красная составляющая цвета
   uchar             empty;         // этот байт не используется
   string            toString();    // функция для получения в виде строки
  };
//--- функция для вывода цвета в виде строки
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- структура для хранения встроенного типа color 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- переменная для хранения в RGB
   RGB colorRGB;
//--- переменная для хранения типа color
   builtColor test;
   test.c=testColor;
//--- приведение двух структур путем копирования содержимого
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

Der Compiler erzeugt den folgenden Fehler... ('=' - unzulässige Operation verwenden test.mq4 34 12 )

Habe ich etwas falsch kopiert oder liegt ein Fehler im Code vor? Bitte, beraten Sie mich.

Приведение типов - Типы данных - Основы языка - Справочник MQL4
Приведение типов - Типы данных - Основы языка - Справочник MQL4
  • docs.mql4.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL4 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
Grund der Beschwerde: