Fehler, Irrtümer, Fragen - Seite 2904

 
suncrypto:

Hallo!

Nachricht an die Entwickler.

Ich teste weiterhin Python - MT5. Es gibt noch eine weitere interessante Sache, vielleicht ist es ein Fehler.
Das Wesentliche.

Ab und zu beginne ich, aus allen im Terminal verfügbaren Finanzinstrumenten (etwa 4000k) auszuwählen.
Ich verbinde mich mit dem Terminal von einer externen Anwendung aus, d.h. die Skripte werden nicht innerhalb des Terminals gestartet.

Ich erhalte Tages- und Minutenbalken für jedes Symbol und verwende dann "Pandas", um Berechnungen durchzuführen und die anfängliche Auswahl der Instrumente zu treffen.
Ich habe festgestellt, dass das Terminal nach einem solchen Vorgang den Prozessor allmählich auf 70-80 % auslastet.
Nach der Skriptarbeit nimmt die Prozessorlast nicht ab (ich habe versucht, 15 Min. zu warten), aber das Terminal ist sehr langsam. Es hilft nur, das Terminal zu schließen.
Wenn ich das Skript zweimal ausführe, ohne das Terminal zu schließen, funktioniert das Skript ohne Fehler, aber die CPU-Last bleibt bei 70-80 %.

Ich habe das Skript auf ein Minimum vereinfacht, so dass ich das Experiment wiederholen kann und nur noch Angebote einholen muss. Das Problem besteht nach wie vor.

Bei Bedarf sind Sie bereit, ein Video aufzuzeichnen oder Informationen in anderer Form bereitzustellen.

Der Code ist pyhton:

Hochachtungsvoll, Alexander.

Es liegt kein Fehler im Verhalten des Terminals vor. Sie müssen verstehen, dass Sie für die Arbeit mit 1000 oder mehr Zeichen ein leistungsstarkes Bügeleisen und viel Speicherplatz benötigen. Es wird auch empfohlen, die Anzahl der Balken im Diagramm stark zu begrenzen (in den Terminaleinstellungen).

Mindestens i7 oder i9 der neunten oder besser der zehnten Generation. Speicher von mindestens 32 GB.


"... nur noch die Angebotsanfrage ..." - Wenn Sie wirklich glauben, dass das Anfordern von Kursen ein sehr einfacher Vorgang ist, sollten Sie den Handel aufgeben und nie wieder in die Nähe Ihres Computers gehen.

 
Vladimir Karputov:

Es liegt kein Fehler im Verhalten des Terminals vor. Sie müssen verstehen, dass Sie für die Arbeit mit 1000 oder mehr Symbolen leistungsfähige Hardware und viel Speicherplatz benötigen. Es wird auch empfohlen, die Anzahl der Balken im Diagramm stark zu begrenzen (in den Terminaleinstellungen).

Mindestens i7 oder i9 der neunten oder besser der zehnten Generation. Mindestens 32 GB Speicher.


"... nur noch die Angebotsanfrage ..." - Wenn Sie wirklich glauben, dass das Einholen von Kursen eine sehr einfache Angelegenheit ist, sollten Sie den Handel aufgeben und sich nie in die Nähe des Computers begeben.

Vielleicht gibt es keinen Fehler, ich sage nicht, dass es einen gibt, ich habe nur auf dieses Verhalten als möglichen Fehler hingewiesen, dieser Thread scheint dafür reserviert zu sein, oder liege ich falsch?

Nach dem, was Sie sagen, ist meine Hardware mehr als ausreichend. Der Speicherverbrauch ist für diesen Vorgang übrigens relativ gering, etwa 3,5 GB. Mit dem Speicher ist alles in Ordnung, und im Allgemeinen funktioniert alles reibungslos.

Nun habe ich die Anzahl der Balken in den Einstellungen absichtlich von 1 Mio. auf 1.000 reduziert. Es hat keinen Unterschied gemacht. Ich denke, es wird mehr Wirkung zeigen, wenn ich ein paar hundert Tabs im Terminal öffne.

Die Frage ist nicht, wie viel CPU-Zeit bei der Aufzählung verbraucht wird, sondern dass die Last nicht sinkt, nachdem alle Abfragen beendet sind.
Wenn wir davon ausgehen, dass für jedes angeforderte Symbol ein eigener Thread im Speicher verbleibt (nicht zerstört wird), um weiter verwendet zu werden, dann erklärt dies alles und es gibt keine Fragen.

Und habe ich behauptet, dass das Einholen von Angeboten ein einfacher Vorgang ist? Darüber habe ich überhaupt nicht geschrieben. Darüber, wie ich das Skript auf das Primitive vereinfacht habe, so dass andere Faktoren keinen Einfluss haben, und nur noch "Angebotsanfrage".

Wenn Sie wirklich glauben, dass man für den Handel verstehen muss, dass das Einholen von Kursen eine knifflige Angelegenheit ist, dann ist das überhaupt nicht der Fall.

Was den Ratschlag betrifft, den Handel aufzugeben und sich vom Computer fernzuhalten, so ist es zu spät. Für den ersten Punkt sind Sie 25 Jahre zu spät, für den zweiten 10 Jahre zu spät.

Wenn die Entwickler es für erforderlich halten, werden sie die Informationen berücksichtigen. Wenn sie es nicht tun, tun sie es nicht.

Mit freundlichen Grüßen, Alexander.

 
suncrypto:

Vielleicht gibt es keinen Fehler, ich behaupte nicht, ich habe auf dieses Verhalten als möglichen Fehler hingewiesen, dieser Thread scheint dafür gedacht zu sein, oder liege ich falsch?

Nach dem, was Sie sagen, habe ich mehr als genug Hardware. Der Speicherverbrauch ist für diesen Vorgang übrigens relativ gering, etwa 3,5 GB. Mit dem Speicher ist alles in Ordnung, und im Allgemeinen funktioniert alles reibungslos.

Nun habe ich die Anzahl der Balken in den Einstellungen absichtlich von 1 Mio. auf 1.000 reduziert. Es hat keinen Unterschied gemacht. Ich denke, es wird mehr Wirkung zeigen, wenn ich ein paar hundert Tabs im Terminal öffne.

Es geht nicht darum, wie viel CPU-Zeit der Aufzählungsprozess in Anspruch nimmt, sondern darum, dass die Last nach Abschluss aller Abfragen nicht abnimmt.
Wenn wir davon ausgehen, dass für jedes angeforderte Symbol ein separater Thread im Speicher verbleibt (nicht zerstört wird), um weiter verwendet zu werden, dann erklärt dies alles und es gibt keine Fragen.

Und habe ich behauptet, dass das Einholen von Angeboten ein einfacher Vorgang ist? Darüber habe ich überhaupt nicht geschrieben. Darüber, dass ich das Skript auf das Wesentliche vereinfacht habe, so dass andere Faktoren keinen Einfluss haben, und dass ich "nur eine Angebotsanfrage" gestellt habe.

Wenn Sie wirklich glauben, dass man für den Handel verstehen muss, dass das Einholen von Kursen eine knifflige Angelegenheit ist, dann ist das überhaupt nicht der Fall.

Was den Ratschlag betrifft, den Handel aufzugeben und sich vom Computer fernzuhalten, so ist es zu spät. Für den ersten Punkt sind Sie 25 Jahre zu spät, für den zweiten 10 Jahre zu spät.

Wenn die Entwickler es für erforderlich halten, werden sie die Informationen berücksichtigen. Wenn sie es nicht tun, tun sie es nicht.

Mit freundlichen Grüßen, Alexander.

Haben Sie Ihr Terminal neu gestartet, nachdem Sie die Anzahl der Balken verringert haben?

 
Vladimir Karputov:

Haben Sie das Terminal neu gestartet, nachdem Sie die Anzahl der Balken reduziert haben?

Natürlich habe ich das.
 
Vladimir Karputov:

Haben Sie das Terminal neu gestartet, nachdem Sie die Anzahl der Balken reduziert haben?

suncrypto:
Natürlich.

Ich habe ein Experiment gemacht.

Ich habe etwa 100 Fenster im Terminal geöffnet (mehr geht nicht, es gibt eine Grenze).
Die Prozessorauslastung ist leicht auf 8-10 % gestiegen und die Größe des verwendeten Speichers hat zugenommen, was logisch ist.
Dann schloss ich das Terminal, öffnete es wieder, die Last stieg auf 70-80% und nach etwa einer Minute normalisierte sie sich und ging auf 8-10% zurück.

(In den Einstellungen auf 1 Million Takte einstellen).


Daher ist die oben beschriebene Situation (mit externer Verbindung), wie man so schön sagt, entweder ein Fehler oder ein Feature.
Nur die Entwickler kennen die richtige Antwort.
Wenn es sich um einen Fehler handelt, schließen Sie das Terminal und öffnen Sie es nach einem solchen Vorgang erneut. Die Operation ist nicht häufig.

 
suncrypto:

Wenn dies eine Funktion ist, dann ist das Schließen des Terminals nach einem solchen Vorgang und das erneute Öffnen des Terminals eine gute Lösung. Die Operation ist nicht häufig.

Ja, das Terminal soll einen Zwischenspeicher für die zuletzt angeforderten Zeitreihen führen.

Aber das muss nicht ewig so weitergehen, ich glaube, es gab eine 3- oder 5-minütige Auszeit.

 
suncrypto:


Bitte beachten Sie, dass ab Build 2650:


1.Terminal: Einstellung "Chartdaten im Voraus für offene Positionen und Aufträge laden" hinzugefügt.


Um Datenverkehr zu sparen, lädt die Handelsplattform die Kurshistorie für Instrumente nur in dem Moment herunter, in dem sie tatsächlich angefordert wird, z. B. beim Öffnen eines Charts oder beim Ausführen eines Tests. Bei aktiv genutzten Instrumenten ist dies jedoch nicht immer sinnvoll. Wenn Sie die neue Option aktivieren, werden die Charts der Instrumente, für die Sie offene Positionen oder schwebende Aufträge haben, bei jedem Start der Plattform im Hintergrund aktualisiert. Wenn Sie alsodie Diagramme öffnen, müssen Sie nicht warten, bis die Daten neu geladen werden, sondern sie stehen sofort für die Analyse zur Verfügung.

Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
  • 2020.10.08
  • www.mql5.com
В пятницу 9 октября 2020 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Andrey Khatimlianskii:

Ja, das Terminal soll einen Zwischenspeicher für die zuletzt angeforderten Zeitreihen führen.

Aber es sollte nicht ewig so weitergehen, ich glaube, es gab eine 3- oder 5-minütige Auszeit.

Ja, im Terminal selbst ist alles in Ordnung. Das Schließen "unnötiger" Fenster reduziert sowohl die CPU-Last als auch den Speicherverbrauch.
Die einzige Frage, die sich bisher stellt, betrifft die externe Verbindung von Python aus.
 
Vladimir Karputov:

Bitte beachten Sie, dass ab Build 2650:


1.Terminal: Einstellung "Chartdaten im Voraus für offene Positionen und Aufträge laden" hinzugefügt.


Um Datenverkehr zu sparen, lädt die Handelsplattform die Kurshistorie für Instrumente nur in dem Moment herunter, in dem sie tatsächlich angefordert wird, z. B. beim Öffnen eines Charts oder beim Ausführen eines Tests. Bei aktiv genutzten Instrumenten ist dies jedoch nicht immer sinnvoll. Wenn Sie die neue Option aktivieren, werden die Charts der Instrumente, für die Sie offene Positionen oder schwebende Aufträge haben, bei jedem Start der Plattform im Hintergrund aktualisiert. Wenn Sie also ein Diagramm öffnen, müssen Sie nicht warten, bis die Daten geladen sind, da sie sofort für die Analyse zur Verfügung stehen.

Zu diesem Punkt gibt es eine Ausschlussklausel:"Charts von Instrumenten, für die Sie offene Positionen oder schwebende Aufträge haben.
Außerdem sind alle Diagramme bereits in die lokale Datenbank hochgeladen worden, während das Skript läuft, und der Datenverkehr ist minimal.

Es ist zwar nicht ganz richtig, aber wenn wir eine Analogie zum SQL-Server ziehen, an den wir mindestens 1 Million Datenanfragen stellen, dann wird es zwar im Moment eine Spitzenbelastung des Prozessors geben, aber die Belastung des Prozessors wird sich nach Abschluss der Operation definitiv verringern.

Natürlich ist Metatrader kein SQL-Server, es ist eine andere Plattform, aber aus irgendeinem Grund scheint es mir, dass nach der Ausführung von Anfragen an MetaTrader für Kurse und Schließen der Verbindung zu ihm, sollte alles wieder normal zu gehen. Ich hoffe, die Metatrader-Entwickler können das erklären.

 
mox_dimass:

Was ist der Fehler mit dem Rollover im Testgerät? In der beigefügten Datei ein Screenshot mit einem Beispiel: eineoffene Verkaufsposition, geschlossen durch Rollover durch Buy, dann wieder geöffnet durch Sell, aber mit Null Volumen.

Infolgedessen wird die Position nicht wieder geöffnet, sondern sie verschwindet. Sie ist im Screenshot hervorgehoben. Ich habe bereits darüber geschrieben, allerdings ohne Bilder. Was ist das für ein Fehler, der es unmöglich macht, ihn zu testen?

Ich frage mich, ob die Entwickler auf diese Panne reagieren werden. Schließlich wird der Rollover vom Prüfer und nicht von meiner Software erzeugt.