Theorie der EA-Beschleunigung bei Verwendung eines benutzerdefinierten Indikators (Funktion - iCustom) - Seite 4

 
-Aleks-:

Ich verstehe schon, das Problem ist erfunden.

Wenn ich in einem realen Projekt mit echten Indikatorbremsen konfrontiert werde, werde ich bereit sein, die Diskussion fortzusetzen.

 
-Aleks-:

Eine traurige Tatsache für fünf, und die Entwickler erklären nicht die heilige Bedeutung dieser Tatsache?

Offenbar ist es eine Frage der Architektur. Ich war nicht interessiert.

Es gab eine Diskussion über ein ähnliches Thema hier - https://www.mql5.com/ru/forum/8278

Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс. - - Категория: общее обсуждение
 

Der Anfänger hat sich in die Materie eingearbeitet, ohne die Grundlagen der Arbeit mit Indikatoren verstanden zu haben ... aber die Informationen sind öffentlich zugänglich (Artikel + Dokumentation).

Daher gibt es viele falsche Fragen und Vermutungen...

Ein weiterer Link zu dem mit OpenCL erstellten Indikator. Die Last liegt auf der Grafikkarte.

Stimmt, um eine vergleichbare Rechengeschwindigkeit zu erreichen, muss die Aufgabe wirklich "schwer" sein...

 
komposter:

Übrigens kommt MT4 sehr gut mit der Berechnung nur eines Teils der Historie zurecht und verbraucht nicht den Speicher für den gesamten Puffer, wenn die Schleife durch die letzten 1000 Balken geht (auch wenn es 50000 Balken "im Fenster" gibt).

Ich bin jedoch auf dieses Problem in MT5 gestoßen - es wird Speicher für alle 50000 Bars zugewiesen, auch wenn nur die letzten 100 gezählt werden.

Sind Sie sich da sicher?

In beiden Plattformen werden die Indikatorpuffer automatisch und auf die gleiche Weise für alle verfügbaren Balkenverläufe zugewiesen.

 
Renat:

Sind Sie sich da sicher?

Bei beiden Plattformen werden die Indikatorpuffer automatisch und gleichmäßig für alle verfügbaren Balkenverläufe zugewiesen.

Ich habe es im letzten halben Jahr nicht überprüft, aber derselbe Indikator mit 1000 Balken in MT4 und MT5 verbrauchte sehr unterschiedliche Mengen an Speicher (wenn eine große Anzahl von Balken im Fenster angezeigt wurde).

Ich habe jetzt Zweifel. Vielleicht ist es ein Problem mit dem Objekt-Cache, den wir hier besprochen haben -https://www.mql5.com/ru/forum/8278?

Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс. - - Категория: общее обсуждение
 
Renat Fatkhullin:

Sind Sie sich da sicher?

In beiden Plattformen werden die Indikatorpuffer automatisch zugewiesen und sind für alle verfügbaren Balkenverläufe gleich.

Ich bin auf ein Problem in MT4 gestoßen - es gibt ein Skript, das die Aufgabe hat, einen Indikator auf einem Chart zu überlagern, Daten aus seinem Puffer zu sammeln und die mathematische Berechnung und Analyse durchzuführen.

Der Betrieb des Skripts mit eingebetteten Indikatoren ist perfekt, aber die Dinge sind nicht so gut mit Indikatoren, die über iCustom aufgerufen werden - der Speicher, der für das Terminal (maximal) zugewiesen ist, endet schnell, als Ergebnis beginnt das Skript Nullwerte des Puffers vom Indikator zu erhalten. Gibt es eine Möglichkeit, den Arbeitsspeicher im Moment des Löschens des Indikators aus dem Diagramm oder nach seinem erneuten Aufruf, aber mit anderen Parametern, durch iCustom) zwangsweise zu löschen?

 
-Aleks-:

Ich habe ein Problem mit MT4 - es gibt ein Skript, das einen Indikator auf einem Diagramm implementiert, sammelt Daten aus seinem Puffer und führt mathematische Berechnung und Analyse.

Der Betrieb des Skripts mit eingebetteten Indikatoren ist perfekt, aber die Dinge sind nicht so gut mit Indikatoren über iCustom aufgerufen - der Speicher, für das Terminal (maximal) zugeordnet, endet schnell, als Ergebnis das Skript beginnt immer Null-Werte des Puffers aus dem Indikator. Gibt es eine Möglichkeit, den Arbeitsspeicher zwangsweise zu leeren, wenn der Indikator aus dem Diagramm entfernt wird oder nach seinem erneuten Aufruf, aber mit anderen Parametern, durch iCustom)?

Und wie viele iCustoms mit unterschiedlichen Parametern haben Sie genau erstellt?

Wenn es Dutzende und Hunderte sind (es scheint so), kann nichts innerhalb der externen Indikatoren getan werden. Sie können sie nur als Berechnungseinheit in Ihren EA einbetten, die keinen Speicherplatz verbraucht.

In MetaTrader 5 gibt es eine vollständige Kontrolle über alle gewünschten Indikatoren, aber auch dort ist das Spiel "Ich erstelle und lösche Hunderte von Indikatoren" mit erheblichen Kosten verbunden.

 
Renat Fatkhullin:

Und wie viele iCustoms mit unterschiedlichen Parametern haben Sie genau erstellt?

Wenn es Dutzende und Hunderte sind (was der Fall zu sein scheint), kann mit externen Indikatoren nichts erreicht werden. Das Einzige, was Sie tun können, ist, es in Ihren EA als eine Berechnungseinheit einzubetten, die keinen Speicher verbraucht.

In MetaTrader 5 gibt es eine vollständige Kontrolle über alle gewünschten Indikatoren, aber das Spiel "Ich erstelle und lösche Hunderte von Indikatoren" ist mit erheblichen Kosten verbunden.

Sie erstellen einen einzelnen Indikator und ändern dann seine Parameter. Die iCustom-Funktion wird im Indikator selbst verwendet, um Daten für einen anderen Indikator anzufordern - so war es einfacher.
Wenn wir alle Anfragen in diesem Bündel zählen, erhalten wir ungefähr 7 Puffer.
Andere Indikatoren mit der iCustom-Funktion, aber einfachere, das Skript knackt... Die Gesamtzahl der Überschneidungen liegt in der Nähe von zehntausend. Die Stromanzeige knirscht beim sechsten Dutzend Durchläufe.
Ich verstehe, dass mir der Speicher ausgeht, aber wenn wir die alten Daten nicht verwenden, warum werden dann die neuen Daten nicht korrekt ausgefüllt?

Warum gibt es in MT4 keine Funktion, um den Indikator aus dem Speicher zu löschen, es ist sehr schwierig zu implementieren?

 
Wenn die Anzahl der Indikatorkopien hoch ist, integrieren Sie sie in den EA. Es gibt keinen anderen Ausweg.
 
Renat Fatkhullin:
Wenn die Anzahl der Indikatorkopien groß ist, sollten Sie sie in den Expert Advisor integrieren. Es gibt keine andere Lösung.

Wir sprechen hier nicht von einem EA, sondern von einem Skript! Das Skript analysiert den Indikator. Wenn wir dem Skript beibringen, das Diagramm nach mehreren Durchläufen zu schließen und wieder zu öffnen (Änderung der Indikatorparameter und ihrer Analyse), kann dann der Speicher geleert werden?

Alexander Laur:

Warum sollten Sie in Ihrem Expert Advisor einen Indikator erstellen, der später wieder gelöscht werden muss, und schon gar nicht einmal?

Fügen Sie in den Code des Expert Advisors eine Funktion ein, die eine ähnliche Berechnung wie die des Indikators durchführt. In dieser Funktion können Sie die Parameter für die Berechnung leicht ändern, und es kommt nicht zu einem Speicherüberlauf. Außerdem kann die Berechnung aller Balken, die Sie meines Wissens nicht brauchen, vermieden werden. Und Sie werden die Funktion iCustom() nicht benötigen.

Ich brauche nur alle Balken für einen Zeitraum. Das Skript funktioniert - es ist universell für die Analyse von Indikatoren eines bestimmten Typs - es ist teuer, für jeden Indikator ein Skript zu schreiben. Wenn der Compiler nur Indikatoren (nach einem bestimmten Befehl) in Berater/Skripte/Indikatoren einfügen würde, dann wäre das Leben anders! Ah, die Träume...