Fehler, Irrtümer, Fragen - Seite 2557

 
Nikolai Semko:

Ja, ein Absturz ist sehr hart. Am besten, Sie gehen kein Risiko ein.
Es geht natürlich um das Gedächtnis.
Wenn Sie den Speicher mit Hilfe Ihrer Hände wie diese aufräumen:

dann kommt es auch nicht zum Absturz. Jedenfalls hat es bei mir nicht funktioniert.
Aber wenn die TF geändert wird, müssen die Arrays automatisch bereinigt werden!

Ich verstehe nicht, warum wir uns mit der Funktion Crash() beschäftigen sollten, wenn sie es nicht tut, weil sie nur Informationen über Indikatoren ausliest.
Möglicherweise verlangsamt die Ausführung dieser Funktion OnDeinit beim Wechsel der TF, so dass MT5 keine Zeit hat, den Speicher zu löschen.
Es gibt seit langem Probleme mit der Asynchronität von OnDeinit. Das ist nicht gut! Das System darf nicht aufgrund von Asynchronität abstürzen.

1) Sie müssen die Störung hier mit INT_MAX(2 Mrd.) abschneiden:

CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,(TimeCurrent()-Weeks*7*24*60*60)*1000,INT_MAX);

Wir werden das auch von unserer Seite aus in Ordnung bringen.

2) der gesamte Speicher muss auf sehr strenge Weise verwaltet werden, kein GC hier

3) Die Neuinitialisierung der Indikatoren beim Wechsel des Zeitrahmens ist warm, ohne dass eine physische Neuinitialisierung von Grund auf erfolgt, so dass Sie selbst Speicher freigeben müssen.

4) Verwenden Sie OOP, das gibt Ihnen zumindest die Möglichkeit, die Ressourcen richtig zu beschreiben und zu kontrollieren

 

Und hier ist ein Screenshot des Systems, das beim Scrollen geladen wird - der GP befindet sich fast in einem toten Zustand - warum wird er nicht geladen?


 
Aleksey Vyazmikin:

Ich spreche von einem FX-8350 Prozessor und einer Radeon HD 7950 Grafikkarte. Ich habe nicht das Gefühl, dass die Grafikkarte durch den MT5 belastet wird.

Das ist es aber. Die Grafikkarte hat einen großen Einfluss auf die Rendering-Geschwindigkeit, da sie für das Rendering zuständig ist.

In Ihrer Frage fehlen Informationen über die Umgebung, in der der Bildlauf stattfindet.

Zum Beispiel:

  • wie viele Indikatoren, welche Art von Indikatoren es sind - die Komplexität der Darstellung ist völlig unterschiedlich
  • wie viele Programme in der Tabelle enthalten sind
  • ob Programme auf Ereignisse reagieren, insbesondere auf Bewegungen, Maus usw. - sie können in ihren Threads Bewegung erzeugen
  • Scrollen zum linken Rand des Diagramms, was ein automatisches Paging und einen Neuaufbau der Daten bewirkt
  • Anzahl der grafischen Objekte im sichtbaren Bereich und insgesamt auf dem Diagramm, einschließlich der verborgenen Objekte

Wenn die Situation stabil ist, alle Daten berechnet werden und es keine induzierten Anforderungen gibt, dann sind die Grafikkarte und die CPU für die Last verantwortlich.


Da Sie klar gesagt haben, dass Sie auf EINEM Kern, nicht auf allen Kernen, auf 100 % hochspringen", ist dies eine völlig normale Situation. Der Computer tut seine Arbeit - er belastet den ausgewählten Kern und hat dabei eine CPU-Auslastung = 12,5 % aller 8 Kerne, nicht 100 %.

 
Renat Fatkhullin:

1) Sie müssen die Störung hier mit INT_MAX(2 Mrd.) abschneiden:

Auch dies werden wir korrigieren.

2) Der gesamte Speicher sollte in einer sehr strengen Weise verwaltet werden, es gibt keine GC hier.

3) Die Neuinitialisierung der Indikatoren beim Wechsel des Zeitrahmens ist warm, ohne dass eine physische Neuinitialisierung von Grund auf erfolgt, so dass Sie selbst Speicher freigeben müssen.

4) Verwenden Sie OOP, das gibt Ihnen zumindest die Möglichkeit, die Ressourcen richtig zu beschreiben und zu kontrollieren

Um das gleiche Thema fortzusetzen, schauen Sie sich bitte diesen Beitrag an - es ist nicht klar, woher diese Ticks kommen, wenn die Börse geschlossen ist - soll ich mich an den Broker oder die Börse wenden?

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MQL5 Eigene Zeitrahmen

Aleksey Vyazmikin, 2019.09.07 09:50

Ich weiß nicht, ich weiß nicht, was ich mit ihnen machen soll, aber ich weiß nicht, ob sie vor der Markteröffnung richtig sind (der Markt öffnet um 10 Uhr)... Und während des Clearings.



 
Aleksey Vyazmikin:

Und hier ist ein Screenshot der Systemlast beim Scrollen - der GP ist fast in einem toten Zustand - warum wird er nicht geladen?

Diesmal wird also nichts Ernsthaftes übertragen.

Und hier ist mein Test auf einem völlig leeren Bildschirm mit aktivem Scrollen: Sie können die Lastspitze deutlich sehen, es ist Windows 10 interne Überwachung


 
Renat Fatkhullin:

Das ist jedoch der Fall. Die Grafikkarte hat einen starken Einfluss auf die Rendering-Geschwindigkeit, da sie für das Rendering verwendet wird.

In Ihrer Frage fehlen Informationen über die Umgebung, in der der Bildlauf stattfindet.

Zum Beispiel:

  • wie viele Indikatoren, welche Art von Indikatoren - die Komplexität des Renderings ist völlig unterschiedlich
  • wie viele Programme in der Tabelle enthalten sind
  • ob Programme auf Ereignisse reagieren, insbesondere auf Bewegungen, Mausbewegungen usw. - sie können Bewegung in ihren Threads erzeugen
  • Scrollen zum linken Rand des Diagramms, was ein automatisches Paging und einen Neuaufbau der Daten bewirkt
  • Anzahl der Grafikobjekte im sichtbaren Bereich und insgesamt auf dem Diagramm, einschließlich der ausgeblendeten Objekte

Wenn die Situation stabil ist, alle Daten berechnet werden und es keine induzierten Anforderungen gibt, dann sind die Grafikkarte und die CPU für die Last verantwortlich.


Da Sie klar gesagt haben, dass Sie auf EINEM Kern, nicht auf allen Kernen, auf 100 % hochspringen", ist dies eine völlig normale Situation. Der Computer tut seine Arbeit - er belastet den ausgewählten Kern und hat dabei eine CPU-Nutzung = 12,5 % aller 8 Kerne, nicht 100 %.

Ich gebe Informationen über die Umwelt:

- Die Indikatoren sind 16, das Rendering ist nicht kompliziert, ohne Kanvas, Symbolleisten und anderen Schnickschnack - Sticks/Streifen - ich füge ein Bildschirmfoto bei.

- Keine Programme auf dem Chart, öffne ich Fenster nach Optimierer, es ist nur als ein Beispiel - Arbeitscharts verlangsamen auch, aber weniger (es gibt weniger Indikatoren).

- Nein, Ereignisse werden nicht verarbeitet.

- Der Anzeigemodus für unbegrenzte Balken ist ausgewählt, d. h. das Blättern ist sozusagen ausgeschlossen.

- Es gibt keine grafischen Objekte, bzw. ich habe alle Pfeile und Striche entfernt. Ein Etikett ist übrig geblieben - es stammt von dem Indikator. Ich habe heute einen freien Tag und es sollte nicht stören.

Ich habe oben einen Screenshot gepostet, der zeigt, dass die Grafikkarte nicht eingeschaltet ist. Gibt es eine Möglichkeit zu überprüfen, ob sie eingeschaltet ist, oder ist es normal, dass die Last nahe Null ist und der Kern geladen ist?

Screenshots von der MetaTrader-Plattform

Si Splice, M1, 2019.09.07

JSC ''Otkritie Broker'', MetaTrader 5, Real

Si Splice, M1, 2019.09.07, Otkritie Broker, MetaTrader 5, Real


 
Renat Fatkhullin:

Diesmal wird also nichts Ernstes auf ihn übertragen.

Und hier ist mein Test, auf einem völlig leeren Bildschirm, während aktiv scrollen: Sie können deutlich sehen, die Last Spike, das ist Standard-Windows 10 Überwachung


Vielleicht sollte es so sein, ist es aber nicht - woher wissen Sie das?

 

Ich habe wohl alles sehr ausführlich und detailliert erklärt.

Der Computer erledigt seine Arbeit. Jede Arbeit kostet Ressourcen, und Sie sehen den Verbrauch dieser Ressourcen.

Wie kommen Sie darauf, dass Ihrer Meinung nach Ressourcen nicht verbraucht werden sollten - ich verstehe das nicht.


Ich weiß nicht genau, welche GPU-Eigenschaften MSI Afterburner berücksichtigt. Es gibt eine Vielzahl von Merkmalen, und ich bin mir nicht sicher, wie hoch die GPU-Belastung insgesamt ist, und nicht nur in einem bestimmten Punkt.

Mein Beweis: Ich nehme es und scrolle einfach das Browserfenster:

Beim Scrollen eines Charts in MetaTrader 5 ist die Situation genau dieselbe:


Die Nutzung der Grafikkarte durch das Terminal ist bewährt.

In Anbetracht der Tatsache, dass ich mich bereits seit 20 Jahren mit Projekten für Handelsterminals und deren Optimierung beschäftige, ist es seltsam, meinen Worten nicht zu vertrauen.

 
Aleksey Vyazmikin:

Vielleicht sollte es so sein, ist es aber nicht - woher wissen Sie das?

Ändern Sie das Prüfprogramm oder hören Sie jemanden an, der direkt mit dem Problem zu tun hat.
 
Renat Fatkhullin:

Ich scheine alles hinreichend ausführlich und auf viele verschiedene Arten erklärt zu haben.

Der Computer erledigt seine Arbeit. Jede Arbeit kostet Ressourcen, und Sie sehen den Verbrauch dieser Ressourcen.

Wie kommen Sie darauf, dass Ihrer Meinung nach Ressourcen nicht verbraucht werden sollten - ich verstehe das nicht.


Ich weiß nicht, wie genau die GPU-Spezifikation von MSI Afterburner beurteilt wird. Es gibt eine Vielzahl von Merkmalen, und ich bin mir nicht sicher, wie hoch die Gesamtbelastung der GPU ist und nicht nur ein bestimmter Punkt.

Mein Beweis: Ich nehme es und scrolle einfach das Browserfenster:

Beim Scrollen eines Charts in MetaTrader 5 ist die Situation genau dieselbe:


Die Verwendung der Karte durch das Terminal ist erwiesen.

In Anbetracht der Tatsache, dass ich mich bereits seit 20 Jahren mit Projekten für Handelsterminals und deren Optimierung beschäftige, ist es seltsam, meinen Worten nicht zu vertrauen.

Es geht nicht darum, Ihnen zu vertrauen! Ich gehe einfach davon aus, dass es ein Problem mit den Treibern oder so gibt, obwohl alle möglichen 3D-Spiele laufen.

Browser lädt die Grafikkarte, natürlich nicht jede Seite, aber mit Videoclips und ähnlichem - ich habe es überprüft.

Dann habe ich alle eingebauten MT5-Indikatoren auf den 40-Index-Chart geworfen und alles scrollt sehr schnell, die Kernlast liegt bei 20%-25%.

Das Problem liegt also in einem Indikator, den ich habe? Ich verstehe das nicht, aber es ist bereits berechnet. Seit vielen Jahren habe ich gefragt, für einige Manager zu implementieren, was würde der Benutzer sehen konnte, welches Programm / Indikator / Skript auf dem Diagramm, wie viel CPU-Zeit wäre es sehr bequem.