![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
OK, lassen Sie mich das anders formulieren. Innerhalb von mql ist das in etwa möglich, abhängig von der Taktfrequenz des Prozessors.
Was ist mit PWM? -Ein Impulssignal mit konstanter Frequenz und variablem Tastverhältnis.
Setzt sie nicht eine Konstante?
Lesen Sie zunächst, was die WinAPI-Funktion Sleep ist und was sie tatsächlich tut
PS Windows ist kein Echtzeitsystem
Lesen Sie zunächst nach, was die WinAPI-Funktion Sleep ist und was sie tatsächlich tut
PS Windows ist kein Echtzeitsystem
Was hat die WinAPI Sleep damit zu tun?
Wenn wir über Mikrosekundenschlupf sprechen
Individuell für Ihren Prozessor können Sie die Timerfrequenz bestimmen und die Anzahl der Wiederholungen berechnen.
Sie können also Ihren eigenen MicrosecondCount in mql schreiben, aber was bringt das? Die Standardversion ist ausreichend.
Es ist mir peinlich zu fragen, was WinAPI Sleep damit zu tun hat.
Wenn wir über Mikrosekundenschlupf sprechen
Individuell für Ihren Prozessor können Sie die Timerfrequenz festlegen und die Anzahl der Wiederholungen berechnen.
Sie können also Ihren eigenen MicrosecondCount in mql schreiben, aber was bringt das? Die Standardversion ist ausreichend.
Ihr eigener ausstehender Schlupf ohne Kontextwechsel wird Ihren Kern zu 100 % auffressen.
Dies ist eine unheimliche Programmiermethode. Gott bewahre, dass ein solcher Code auf den Markt gelangt.
Ihr Warteschleifchen ohne Kontextwechsel wird Ihren Kern zu 100% auffressen.
Das ist eine furchtbare Programmiermethode. Gott bewahre, dass ein solcher Code auf den Markt gelangt.
Und niemand hat bestritten, dass hardcore ))
Wenn Sie ein Beispiel für Kontextwechsel zeigen, können Sie sich vielleicht verbessern?
Hier ist die CPU-Last für µsSLEEP (µsRange), auf VirtualBox mit nur 2 Kernen, 4 Threads.
Bergleute tun Schlimmeres als das ))
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Bibliotheken: Sequenz
fxsaber, 2020.10.13 12:54
Ein Beispiel für einen EA, der die meisten VPS töten wird.Ich lasse es auf einigen Charts mit verschiedenen Symbolen laufen. Ich habe dieses Skript mit inAmount = 5 verwendet, um diese Aktion zu automatisieren.
Ergebnis.
Das Terminal benötigt mehr als 4 GB Speicherplatz, um diese sechs Expert Advisors auszuführen. Bitte beachten Sie, dass sie nur für die Initialisierung, nicht aber für den Betrieb dieser EAs benötigt wird. Stellen Sie sich vor, Sie starten das Terminal mit Expert Advisors, die darin hängen. Wenn Sie keine ehrlichen 4 GB RAM zur Verfügung haben, ist das fast eine Katastrophe.
Entfernen wir nun den Kommentar zu dieser Zeile im Quellcode.
So haben wir die sequenzielle Initialisierung von Expert Advisors ermöglicht.
Schauen wir uns das Ergebnis (nach der Neukompilierung) an.
Beim Start der Expert Advisors ist es uns gelungen, den Speicherverbrauch des Terminals um mehr als 2,5 GB zu reduzieren. Die Wahrscheinlichkeit von VPS-Abstürzen (und schwachen Heimcomputern) ist deutlich gesunken.
So sehen beide Läufe in der Dynamik aus.
Der sequenzielle Start verlängerte die Gesamtinitialisierungszeit, aber es gelang, den Terminal davon abzuhalten, große Mengen an RAM zu verbrauchen.
Dieoberen und unteren Diagramme zeigen deutlich den parallelen Initialisierungsprozess (linke hohe Spitze) und sechs aufeinander folgende Initialisierungen (sechs mittlere Spitzen).
SZY Bei den Experimenten kam eine unangenehme Nuance mit Sleep zum Vorschein - siehe Quellcode.
Ich bitte darum, dass der Speicher nach der Verwendung von CopyTicks zwangsweise freigegeben wird. Nicht um solche Schlafkrücken zu schaffen.
Bitte empfehlen Sie die günstigste Methode, um den Zeckenverlauf in einem bestimmten Intervall abzufragen.
Es klingt für mich so, als ob Sie nicht nach einem billigen Gerät suchen, sondern nach einer Möglichkeit, schnell Speicherplatz freizugeben.
als eine zu prüfende Option:
- dynamisches Array MqlTick Ticks[] in Klasse einpacken und Objekt mit new erstellen (d.h. auch dynamisches Objekt), löschen, wenn man es nicht braucht
- dasselbe, aber mit Struktur, aber im lokalen Bereich ( oder Funktion oder lokaler Block { } - oder Schleife mit einer Iteration ? ), Strukturen funktionieren nicht so gut wie Klassen - ich schrieb die meisten meiner EA-Code weg von Klassen und ersetzen sie mit Datenstrukturen, Optimierung Geschwindigkeit deutlich erhöht - vielleicht ist es ein subjektiver Effekt - vielleicht neue Builds sind schneller
- Versuchen Sie, ArrayFree() in den Destruktor einzufügen
Ich glaube nicht, dass Sie nach einer billigen Lösung suchen, sondern nach einer Möglichkeit, schnell Speicherplatz freizugeben.
Das Terminal gibt keinen Speicherplatz frei. MMS-Variablen haben damit nichts zu tun.
Das Terminal gibt den Speicher nicht frei. MMS-Variablen haben damit nichts zu tun.
Was passiert, wenn Sie Größe = 1 erzwingen?
Was wäre, wenn Sie das täten?
und wenn
Nach dem Aufruf von CopyTicks hält das Terminal alle Daten für einige Sekunden im Speicher. Nur für den Fall, dass jemand ein Stück Zeckengeschichte nachlesen möchte.
D.h. der vom Terminal verbrauchte Speicherplatz hängt nicht von der Größe der MQL-Variablen ab.
Die Aufgabe besteht darin, das Terminal zu zwingen, den Speicher freizugeben.