Theorie der EA-Beschleunigung bei Verwendung eines benutzerdefinierten Indikators (Funktion - iCustom) - Seite 6
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Alexander Laur, d.h. solange das Skript/der Berater läuft, ist der Speicher reserviert und kann nicht gelöscht werden - traurige Schlussfolgerung.
Ist es möglich, dass ein Skript ein anderes Skript ausführt und dann das laufende Skript schließt, um den Speicher zu leeren, oder würde dies als komplexe Verarbeitungsumgebung betrachtet werden?
Alexander Laur, d.h. solange das Skript/der Berater läuft, ist der Speicher reserviert und kann nicht bereinigt werden - traurige Schlussfolgerung.
Ist es möglich, ein anderes Skript auszuführen und dann das laufende Skript zu schließen, um den Speicher zu leeren, oder wird es als komplexe Datenverarbeitungsumgebung betrachtet?
Ich habe sofort vorgeschlagen,"öffnen Chart mit Expert Advisor läuft", kann es getan werden - ChartOpen + ChartApplyTemplate
Die einzige Frage ist, ob der Speicher beim Schließen (Löschen des Expert Advisors) wieder freigegeben wird.
Prüfen Sie es.
Ich habe sofort vorgeschlagen,"öffnen Chart mit Expert Advisor läuft", kann es getan werden - ChartOpen + ChartApplyTemplate
Die einzige Frage ist, ob der Speicher beim Schließen (Löschen des Expert Advisors) wieder freigegeben wird.
Prüfen.
Zusätzliche Frage: Hat die Wahl des realen Puffertyps für die Berechnung innerhalb des Indikators Auswirkungen auf die Größe des grafischen Puffers?
Typ
Größe in Bytes
Minimaler positiver Wert
Maximaler Wert
Genauigkeit der Darstellung
Analog in C++
Schwimmer
4
1.175494351e-38
3.402823466e+38
7 signifikante Ziffern
Schwimmer
doppelt
8
2.2250738585072014e-308
1.7976931348623158e+308
15 signifikante Ziffern
doppelt
Und eine verrückte Idee, was wäre, wenn wir statt eines grafischen Puffers einen TextOut verwenden würden - ich weiß nur nicht, wie man Daten daraus liest...
Zusätzliche Frage: Hat die Auswahl des realen Puffertyps für die Berechnung innerhalb des Indikators Auswirkungen auf die Größe des grafischen Puffers?
Meinen Sie mit dem Begriff "grafischer Puffer" die grafische Darstellung eines regulären Indikators?
Die Frage ist, ob es möglich ist, die Größe des dem Grafikpuffer zugewiesenen Speichers um einen Balken zu beeinflussen, wenn Sie im Indikatorcode für Berechnungen float statt double verwenden.
//---- buffers
double Vy[];
double bufDirSoft[];
extern int n=3;
extern int BarsN=100;
//----
int ExtCountedBars=0;
Die Frage ist, ob es möglich ist, die Größe des dem Grafikpuffer zugewiesenen Speichers um einen Balken zu beeinflussen, wenn Sie im Indikatorcode für Berechnungen float statt double verwenden...
Nein. Es gibt eine magische Funktion, die alle Versuche verdrängt:
Dieser Mechanismus ist in die Terminal-Sprache selbst eingebaut. Aber es ist eine interessante Idee...
Wie kann man außerdem feststellen, ob der Speicher voll ist, gibt es irgendwelche Funktionen?
Was meinen Sie mit "kein Speicherplatz mehr"? :-)
Es gibt hier etwas:
https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus#enum_terminal_info_integer
Meiner Meinung nach ist der effektivste Weg, den Speicher für die Indikatorressourcen zu verwalten, die Minimierung des Parameters "Max bars in history" (Einstellungen --> Charts). Soweit ich mich erinnere, beträgt das Minimum für den Parameter 5k.
Wie kann ich außerdem feststellen, ob der Speicher voll ist, gibt es irgendwelche Funktionen?
Es ist möglich, Informationen über das Terminal abzurufen
TERMINAL_MEMORY_TOTAL
Speichergröße, die dem Terminalprozess (Agent) zur Verfügung steht, in MB
int
TERMINAL_MEMORY_AVAILABLE
Die Größe des verfügbaren Speichers des Terminalprozesses (Agent) in MB
int
TERMINAL_MEMORY_USED
Größe des vom Terminal (Agent) verwendeten Speichers in MB
int