Wünsche für MT5 - Seite 23

 

Es ist ungünstig, dass die Klassen nicht am Ende des Programms beschrieben werden können, sondern nur am Anfang.

 

Es wäre gut, einen Schieberegler im Editor einzubauen, der das Bearbeitungsfenster in zwei unabhängige Fenster unterteilt, wie in Word. Es wäre praktisch, zwei Teile des Programms gleichzeitig zu kopieren, zu schreiben und anzusehen.

 
MetaDriver:

Ich wünschte...

Die einzige (und nicht notwendige) Ausnahme sind die Wochenenden, die ebenfalls übersprungen werden können, aber auch hier wird garantiert, dass sie über verschiedene Instrumente hinweg synchron sind.

Wussten Sie, dass Forex an den Wochenenden tatsächlich arbeitet?

dass die meisten Makler nicht arbeiten

---

Einige geben Ihnen sogar am Wochenende Angebote und lassen Sie an Ihren Aufträgen arbeiten.

was sehr praktisch ist.

sie können den Spread am Wochenende ausweiten, weil es keine Liquidität gibt

aber es gibt eine Möglichkeit, Dinge zu vertuschen und zu ändern

 

Es wäre eine gute Idee, den Standardbibliotheken eine Funktion hinzuzufügen, die eine Zeichenkette dieser Form verarbeitet: Zerlegen Sie die Zeichenfolge in Module, die durch "Anfang" und "Ende" begrenzt sind, und schreiben Sie sie in ein Array von Zeichenfolgen. Zum Beispiel: int count=(string, array,"<h1>","</h1>",flag); Dabei ist string die Eingabezeichenkette, array die Ausgabezeichenkette, "<h1>" - Der Anfang des Moduls in der Zeichenfolge "</h1>". - Modulende in String. flag - gibt an, ob Modulbegrenzer in die Ausgabe-Array-Strings aufgenommen werden sollen oder nicht, count - Anzahl der gefundenen Module.

In diesem Fall wird int count=(string, array,"<h1>","</h1>",flag); - das Array aller Überschriften erstellen, die in string enthalten sind.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Dies kann auch mit vorhandenen Tools geschehen, siehe den Artikel Parsing HTML with MQL4
Разбор HTML средствами MQL4 - Статьи по MQL4
  • www.mql5.com
Разбор HTML средствами MQL4 - Статьи по MQL4: примеры использования экспертов, тестирования и оптимизации
 
Rosh:
Dies kann mit vorhandenen Tools geschehen, lesen Sie den Artikel HTML mit MQL4-Tools parsen
Nun, es ist klar, dass man es Schritt für Schritt mit den vorhandenen Tools machen kann. Aber es ist besser, eine fertige Funktion zu haben, die alles auf einmal erledigt, als zwei Seiten Code....
 
Rinng:
Nun, es ist verständlich, dass Sie dies mit den verfügbaren Tools Schritt für Schritt tun können. Aber es ist besser, eine fertige Funktion zu haben, die alles auf einmal erledigt, als zwei Seiten Code....
Fügen Sie es zu einer Bibliothek oder einer mqh-Datei hinzu und es ist kein Problem ;))
 

Im Editor wäre es sinnvoll, einige Blöcke des Programmcodes auszublenden/zu öffnen. Zum Beispiel "Funktionen", "Definitionen", "Klassen"..., oder Sie können Unter-Codes ausblenden/öffnen, z.B. für, wenn...

Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 
Rosh писал(а) :
Lesen Sie die Organisation des Datenzugriffs, dort steht, wie Sie die Historie korrekt abfragen.

Bericht. Und geteilt. Und die, die ich gemeistert habe. Es ist durchaus möglich, das herauszufinden, wenn es nötig ist. Ich muss MQL erst noch lernen, daher ist fast jede Frage, die ich zu dieser Sprache habe, dumm.

Einen anderen verstehe ich nicht: "Der Parameter "Max bars in charts" begrenzt die Anzahl der für Charts, Indikatoren und mql5-Programme im HC-Format verfügbaren Balken. Diese Einschränkung gilt für alle Zeitrahmendaten und dient in erster Linie dazu, Ressourcen zu sparen.

Bei der Einstellung hoher Werte für diesen Parameter ist zu bedenken, dass der Speicherverbrauch für die Speicherung von Zeitreihen und Indikatorpuffern Hunderte von Megabyte erreichen kann und das Speicherlimit für das Client-Terminalprogramm (2 GB für 32-Bit-Anwendungen von MS Windows) erreicht, wenn die Preisdatenhistorie für niedrige Zeitrahmen tief genug ist.

Vielleicht habe ich in dieser Folge nicht wirklich verstanden, was Sache ist, und gleichzeitig möchte ich noch einmal betonen, dass ich hier und jetzt keine Fragen zu MQL-Programmen stellen werde, aber die obige Motivation, Ressourcen zu sparen, wirkt seltsam in Bezug auf die automatische Abfrage der Historie durch das Terminal, wenn man direkt mit einem Chart manuell arbeitet. Ihr Code ist geschlossen, so dass ich nicht beurteilen kann, wie das Ganze funktioniert. Ich weiß nicht, ob jeder Kerzenständer ein echtes Objekt mit einer Vielzahl von Eigenschaften und Attributen ist oder ob es sich um eine vereinfachte grafische Zeichnung/Rendering des strukturellen Bildes des Marktes handelt. Wenn wir das Thema des Herunterladens der fehlenden Geschichte auslassen und uns auf diejenige konzentrieren, die wir bereits haben, stellt sich die Frage nach der Rationalität des Zeichnungsansatzes. Selbst wenn wir in den Einstellungen eine bestimmte und große Anzahl von Balken im Diagramm einstellen, selbst wenn wir die Diagrammbalken auf eine Nadel komprimieren und eine sehr hohe Auflösung des Bildschirms verwenden, kann ich nicht glauben, dass das gesamte Bild den Arbeitsspeicher beansprucht, wenn die Balken korrekt aus dem History DBMS auf den Bildschirm geladen werden. Wenden Sie das LIFO-Prinzip an? Die maximale Anzahl der Balken auf dem Diagramm kann unendlich groß sein, aber das, was sich hinter dem Bildschirm befindet (sowohl links als auch rechts), sollte überhaupt nicht im Speicher sein, und beim Scrollen sollte es in den Hauptspeicher geladen und sofort entladen werden, da wir nicht mit dem Netzwerk arbeiten, sondern nur mit der lokal verfügbaren Geschichte. Von welchen schrecklichen 2Gb-Beschränkungen könnte die Rede sein?

...ich bin wahrscheinlich nicht ganz auf dem Laufenden, also verzeihen Sie mir den Redneck im Voraus.

 

Jeder Preisbalken wird durch die Struktur MqlRates (keine anderen Merkmale) mit einer Größe von 52 Bytes beschrieben:

struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     volume;       // объем
  };

Um die Größe der Arbeitsdatenbanken abzuschätzen, müssen Sie im Verzeichnis /bases/server name/symbol/ nachsehen. Für EURUSD sehen Sie zum Beispiel Folgendes:

In diesem Verzeichnis liegen die originalen komprimierten Minutencontainer, wie sie vom Handelsserver vorgegeben werden. Sie können sehen, dass die Minutencontainer im Durchschnitt etwa 15 MB über 1 Jahr benötigen. Dies ist ein sehr spezielles Komprimierungsformat, um den Datenverkehr zu minimieren.

Das Cache-Verzeichnis enthält die Arbeitsdatenbanken, die nach Bedarf komprimiert wurden:


Wie Sie sehen können, sind seit 1993 minutki (eigentlich bis 1999 tägliche Datenbanken anstelle von minutki) etwa 231 Megabyte, komprimiert und einsatzbereit. Die benachbarten Uhren nehmen jedoch nur 4 MB in Anspruch.

Multipliziert man 52 Byte mit 4 400 000 Takten, so ergibt sich ein Wert von 230 MB. Ein einfacher gleitender Durchschnittsindikator mit einem Arbeitspuffer (Double) benötigt 4 400 000 * 8 = 35 Megabyte Speicher.


Wenn der Händler in den Terminaleinstellungen "Maximale Balken im Fenster" einstellt, gibt er ausdrücklich an, dass "nicht mehr als die angegebene Anzahl von Balken zum Arbeiten in den Speicher geladen werden" soll. Wenn die gesamte Minutenhistorie geladen wird (wir arbeiten mit dem M1-Chart), einige schwere Multi-Buffer-Indikatoren angewendet und Expert Advisors verwendet werden, können die Speicherkosten erheblich sein. Und wir können nicht denken: "Ich arbeite mit einem Fenster und sehe 500 Balken, also kann ich den Rest ausladen". Man kann sie nicht abladen - Indikatoren, Experten usw. leben und arbeiten mit diesen Daten.

Wir haben ein sehr effektives Caching-Modell implementiert, bei dem Daten und Indikatoren immer in einer einzigen Nummer gespeichert werden. Das bedeutet, dass das Öffnen von 5 Fenstern auf EURUSD:M1 nicht die Erstellung von 5 Datenpuffern erfordert, und dass mehrere Indikatoren, die in ihren Parametern absolut gleich sind, nur eine Kopie haben. Wenn Indikatoren oder Diagramme über einen längeren Zeitraum nicht verwendet werden, werden ihre Daten automatisch freigegeben und bei Bedarf zurückgeholt.

Darüber hinaus haben wir eine 64-Bit-Version des Client-Terminals, die ohne Einschränkungen eine große Menge an Daten verarbeiten kann. Diese Version wird veröffentlicht, sobald wir die Tests von MQL5 unter 64-Bit-Umgebung abgeschlossen haben.