MT5 und Geschwindigkeit in Aktion - Seite 85

 
Anton:

@Anton, in vielen Standardfunktionen können Sie NULL anstelle eines Zeichens angeben. Beeinträchtigt sie die Geschwindigkeit der Ausführung?

SymbolInfoTick(NULL, Tick);

SymbolInfoTick(_Symbol, Tick);

Oder macht es für den Terminal/Tester keinen Unterschied?

 
fxsaber:

@Anton, in vielen Standardfunktionen können Sie NULL anstelle eines Zeichens angeben. Beeinträchtigt sie die Geschwindigkeit der Ausführung?

Oder gibt es bei Terminal/Tester keinen Unterschied?

Ich kann es nicht mit Sicherheit sagen, aber intuitiv schreibe ich nirgendwo NULL.

Theoretisch sollte das keinen Unterschied machen. Ich denke, beim Kompilieren ändert sich NULL in einen normalen Wert, und ich mag es nicht, unverständliche Dinge mit meinen Augen zu sehen.

 
Alexey Viktorov:

Ich kann es nicht mit Sicherheit sagen, aber intuitiv schreibe ich nirgendwo NULL.

Theoretisch sollte dies keine Auswirkungen haben. Ich glaube, NULL ändert sich beim Kompilieren in einen normalen Wert, und ich mag es nicht, wenn ich Dinge sehe, die in meinen Augen keinen Sinn ergeben.

Das Gleiche gilt auch. Aber es ist die Geschwindigkeit, die mich beunruhigt.

 

Ich verstehe nicht, wie SymbolInfoTicks in einem Sekunden-Timer am Wochenende verlangsamt werden kann!

2021.02.28 21:33:02.993 ::SymbolInfoTick(_Symbol,Tick) = 171 mcs.

20 Charts mit verschiedenen Symbolen, auf jedem läuft ein EA, der nur einen Tick seines Symbols im zweiten Timer nimmt.

Was gibt es an einem freien Tag zu entschleunigen?!


SZY 3374 MB auf dem Screenshot - das war vor einer Stunde, als ich Ticks für die Woche anforderte. Sparen von Ressourcen wie dieser.

 
fxsaber:

Ich verstehe nicht, wie SymbolInfoTicks in einem Sekunden-Timer am Wochenende verlangsamt werden kann!

20 Charts mit verschiedenen Symbolen, auf jedem läuft ein EA, der nur einen Tick seines Symbols im zweiten Timer nimmt.

Was gibt es an einem Wochenendtag schon zu entschleunigen!

Sie haben:

  1. Mangel an Informationen
  2. ein paar Dutzend Expert Advisor-Threads, die parallel auf 4 Kernen laufen (8 mit Hyperthreading können ignoriert werden)
  3. wieder ein einzelner Ausreißer aus einer langen Wartezeit gefunden wird?
  4. wieder eine einzige zufällige Systemlatenz nach dem Willen des Threadmanagers?


 
Renat Fatkhullin:

Sie haben:

  1. Mangel an Informationen
  2. ein paar Dutzend Experten-Threads, die parallel auf 4 Kernen laufen (8 mit Hyperthreading können vernachlässigt werden)
  3. wieder ein einzelner Ausreißer aus einer langen Warteschleife gefunden wird?
  4. Wieder eine einzige zufällige Systemlatenz nach dem Willen des Threadmanagers?

Ich frage mich, warum SymbolInfoTick ist so eine selektive Funktion für Latenz?

 
fxsaber:

Ich frage mich, warum SymbolInfoTick eine so gewählte Funktion zum Bremsen ist?

Das ist sie nicht.

Sie werden immer wieder zufällige Verzögerungen irgendwo in einem Programm feststellen. Wenn Sie anfangen, den Überblick über alles zu behalten, werden Sie über die Realität von Windows entsetzt sein. Ich habe dies bereits mehrmals ausführlich erläutert.

Auch wir waren einmal erstaunt, als wir bei System-WinAPI-Funktionen zufällige Bursts von 60-80 ms anstelle von 0 ms feststellten.


Wir migrieren jetzt die meisten unserer Windows-Lösungen massenhaft auf speziell entfettete Windows Server 2019 Core-Versionen und .NET Core-Webprojekte auf Linux. Dies bringt enorme Einsparungen bei den Systemressourcen mit sich und verringert die Latenzzeit des Systems erheblich.

Der erste Schritt beim Abschöpfen der MataTrader 5-Terminals bestand darin, einen Task-Manager zu implementieren, um den Ressourcenverbrauch im Auge zu behalten. Für uns selbst sammeln wir mehr Informationen.

Es ist bereits deutlich geworden, dass wir das tun:

  • übermäßig lange Zurückhaltung unnötiger Ströme
  • Überskalierung
  • Caches überstrapazieren.
In der nächsten Version werden wir einige der Ressourcenprobleme Schritt für Schritt beheben.
 
Alexey Viktorov:

Theoretisch sollte dies keine Auswirkungen haben. Ich glaube, NULL ändert sich beim Kompilieren in einen normalen Wert, und ich mag es nicht, unverständliche Dinge mit meinen Augen zu sehen.

Theoretisch sollte es eine Wirkung haben, aber das wird es nicht, weil die

SymbolInfoTick(_Symbol, Tick);

_Symbol wird nicht als Wert übergeben (wie aus der Beschreibung in der Hilfe hervorgeht), sondern als Referenz

 
Renat Fatkhullin:

Das ist sie nicht.

In jeder Sendung werden Sie immer wieder zufällige Verzögerungen feststellen. Wenn Sie anfangen, über alles Buch zu führen, werden Sie über die Realität von Windows entsetzt sein. Ich habe dies bereits mehrfach ausführlich erläutert.

Danke, ich werde es mir ansehen.


Bitte ziehen Sie eine solche Funktion in Betracht.

int SymbolInfoTicks( const string Symb, MqlTick &Ticks[] ); // Возвращает свежие тики (не более сотни), пришедшие с предыдущего вызова этой функции.


Das Problem, LATE Ticks ohne Skips zu erhalten, wird jetzt nur noch über CopyTicks* gelöst. Das ist ein sehr umständlicher Mechanismus für diese weit verbreitete Aufgabe. Das ist, als würde man mit einer Kanone auf Vögel schießen.

Daher die Bremsen, die Speicherung großer Caches usw.

 
A100:

Theoretisch sollte es eine Wirkung haben, aber das ist nicht der Fall, denn in

_Symbol wird nicht als Wert übergeben (wie die Beschreibung in der Hilfe nahelegt), sondern als Referenz

Innerhalb der Funktion müssen wir noch das entsprechende Häkchenzeichen übergeben. Dies ist die Zeit, die für die Analyse der String-Variablen benötigt wird. Dies ist bei NULL nicht erforderlich.