eine andere Frage - ich verstehe, dass in MT5 die erste Kopierzeit des CopyClose-Puffers von abhängt:
1. wenn Sie vorher überhaupt keine Tickerkurse erhalten haben, den Chart nicht geöffnet haben usw. (abhängig von Ping, Internetgeschwindigkeit, Festplatte, Vorbereitung der Datei Bases/Broker/history/ticker/cache/)
2017.04.1111:27:38.828 время копирования буфера (EURUSD,M1) проход = 0 время= 83555812017.04.1111:27:38.828 время копирования буфера (EURUSD,M1) проход = 1 время= 1083
2. wenn die Kurse zuvor empfangen wurden und dann das Terminal neu geladen wurde, sofern noch kein Chart dieses Tickers geöffnet wurde (Erstellung der Datei Bases/Broker/History/Ticker/Cache/)
2017.04.1111:29:14.672 время копирования буфера (EURUSD,M1) проход = 0 время= 5993962017.04.1111:29:14.734 время копирования буфера (EURUSD,M1) проход = 1 время= 259/////////////////////////////2017.04.1219:32:46.489 время копирования буфера (FULT,M5) проход = 0 время= 981672017.04.1219:32:46.557 время копирования буфера (FULT,M5) проход = 1 время= 1552017.04.1219:32:46.557 время копирования буфера (FULT,M5) проход = 2 время= 14
die Zeit ist 10-15 mal kürzer als bei p.1
zum Vergleich die Zugriffszeit in МТ4 gemäß Punkt 2, d. h. nach dem Reset des Terminals
2017.04.1219:30:38.831 время копирования буфера EURUSD,M1: проход = 2 время= 2762017.04.1219:30:38.831 время копирования буфера EURUSD,M1: проход = 1 время= 4342017.04.1219:30:38.831 время копирования буфера EURUSD,M1: проход = 0 время= 22602017.04.1219:30:38.816 время копирования буфера EURUSD,M1: initialized
2017.04.1219:30:38.666 время копирования буфера EURUSD,M1 inputs: Pair=USDCAD;
d.h. die Zeit nach dem Neustart des MT4-Terminals ist um einige Größenordnungen geringer.
Dieses Mal habe ich alles auf dem Windows überprüft, ohne SSD!
Wenn ich die Anführungszeichen richtig verstanden habe, wurde das Terminal nicht neu gebootet, sondern es wurde auf die Daten zugegriffen.
2017.04.1111:35:30.648 время копирования буфера (EURUSD,M1) проход = 0 время= 892017.04.1111:35:30.648 время копирования буфера (EURUSD,M1) проход = 1 время= 42
Habe ich es richtig verstanden, dass das Terminal nach dem Laden des Caches deutlich weniger Zeit für weitere Anfragen benötigt (ab der 2. Anfrage)?
Können wir die Zeit für den ersten Aufruf nach dem Neustart des Terminals irgendwie verkürzen, damit es wie in MT4 ist?
Der Code war in https://www.mql5.com/ru/forum/1111/page1870#comment_4856899
Ich habe eine weitere Frage - ich verstehe, dass auf MT5 die erste Kopierzeit des gleichen CopyClose Puffer abhängt von:
Sie haben eine sehr unsaubere Testmethode, da es überhaupt keine Beschreibung der Umgebung und der Wiedergabemethode gibt.
Nicht angegeben:
Begrenzung der Balken im Fenster
tatsächliche Datenmengen in den Terminaldatenbanken
Auf welchem Server befinden sich die Datenbanken genau? Alle Daten müssen garantiert auf der Festplatte gespeichert sein.
Plattform und Bitrate des Tests (unter wine? muss im Detail angegeben werden)
offene Fenster
Ohne dies sind die Schlussfolgerungen unbegründet.
Schauen Sie sich zum Beispiel EURUSD M1 an - MT5 hat dort mehr als 6 Millionen Balken (wenn unbegrenzter Modus bei Charts), aber MT4 hat wie viele? Ein paar zehntausend M1-Balken in der aktuellen Datenbank?
Sie haben eine sehr unübersichtliche Testmethode, da es keinerlei Beschreibungen der Umgebung und der Wiedergabemethode gibt.
Nicht angegeben:
Grenzen der Balken im Fenster
tatsächliche Datenmengen in Terminaldatenbanken
Was genau ist der Server, sind die Datenbanken auf der Festplatte? Alle Daten müssen garantiert auf der Festplatte sein.
Plattform und Bitrate des Tests (unter wine? muss im Detail angegeben werden)
Verfügbarkeit offener Fenster
Ansonsten sind die Schlussfolgerungen unbegründet.
Die meisten Fragen in meinem Beitrag wurden mir bereits gestellt, kein Problem, ich werde Ihnen jetzt alle Daten geben.
zunächst einmal die Antwort auf die Frage
какой точно сервер, находятся ли базы на диске? все данные обязаны быть гарантированно на диске.
MQ-Demo-Server werden die Daten geladen, wie in Punkt 2 und Punkt 3 des vorherigen Beitrags beschrieben. Bei Punkt 1 ist alles klar, und es gibt dort keine Fragen - wie es geschrieben wurde - Daten werden geladen, Cache wird auf dem angegebenen Pfad gebildet.
лимиты баров в окне
MT4
MT5
фактические объемы данных в базах терминалов
MT4
MT5
платформа и битность тестирования (под вайном? нужно указывать детально)
win XP 32bit, alle MT-Builds, alle aktuellen
наличие открытых окон
MT4 - 1 Chart öffnen, mit einem anderen Symbol prüfen
MT5 - 1 Chart geöffnet, Überprüfung mit einem anderen Symbol
Wiederholen Sie den Vorgang, laden Sie das Terminal neu, senden Sie das Skript an den Chart, wählen Sie ein ANDERES Symbol, dessen Daten geladen wurden, BEVOR Sie das Terminal neu laden.
MT4
2017.04.1221:18:31.575 время копирования буфера EURUSD,M1: проход = 2 время= 362017.04.1221:18:31.575 время копирования буфера EURUSD,M1: проход = 1 время= 2822017.04.1221:18:31.575 время копирования буфера EURUSD,M1: проход = 0 время= 18712017.04.1221:18:31.575 время копирования буфера EURUSD,M1: initialized
2017.04.1221:18:31.405 время копирования буфера EURUSD,M1 inputs: Pair=GBPUSD;
MT5
2017.04.1221:19:47.735 время копирования буфера (EURUSD,H1) проход = 0 время= 3039512017.04.1221:19:47.735 время копирования буфера (EURUSD,H1) проход = 1 время= 292017.04.1221:19:47.735 время копирования буфера (EURUSD,H1) проход = 2 время= 25
GBPUSD, nur M1, das Skript wird auch auf ihn geworfen
nur GBPUSD, M1, das gleiche Skript wird auf ihn geworfen
Ergebnisse sind kalt, nach dem Start des Terminals
#0 pass, 1000 records in680 msc
#1 pass, 1000 records in2 msc
#2 pass, 1000 records in2 msc
#0 pass, 1000 records in113497 msc
#1 pass, 1000 records in3 msc
#2 pass, 1000 records in3 msc
Ergebnisse sind warm, zweiter Lauf unmittelbar nach dem ersten
#0 pass, 1000 records in13 msc
#1 pass, 1000 records in2 msc
#2 pass, 1000 records in2 msc
#0 pass, 1000 records in14 msc
#1 pass, 1000 records in2 msc
#2 pass, 1000 records in2 msc
Die Testdateien sind beigefügt und alle Zeiten sind in Mikrosekunden angegeben (nicht in Millisekunden, 1 Millisekunde = 1000 Mikrosekunden).
Nun zu den Schlussfolgerungen:
Der einzige Unterschied ist die Geschwindigkeit der anfänglichen Initialisierung des Chart-Caches - 0,6 ms für MT4 vs. 113 ms für MT5
Das ist kein Problem - Heben kostet immer Ressourcen. Vor allem, wenn konzeptionell unterschiedliche Architekturen verwendet werden: MT5 verfügt über komplexere Caches (cache\*.hc-Dateien werden aus den ursprünglichen *.hcc-Dateien erstellt), um eine Skalierung zu ermöglichen, sowie über eine obligatorische vollständige Synchronisationskontrolle mit Serverdaten (binäre *.hcc-Blöcke).
Wiederholte Anfragen zeigen die gleiche Geschwindigkeit - 2-3 Mikrosekunden pro Datenkopie
Bei beiden Terminalimplementierungen gibt es keine Ausfälle und alles funktioniert schnell.
Insgesamt sind die Ergebnisse so, wie ich sie in meinen Beiträgen dargestellt habe.
Ich habe einen regelmäßigen Test durchgeführt.
Und doch sind die Ergebnisse zwischen MT4 und MT5 fast 200-mal anders (aufgrund von -muss die vollständige Synchronisation mit Server-Daten?? und ping? ).
Ich habe mich irgendwie daran gewöhnt, bevor ich hier gepostet habe, dass es wahrscheinlich eine Funktion des Terminals ist. Ich kann sogar damit leben, aber es ist an manchen Stellen schwierig. Da es zum Beispiel keinen Market-Screener in MT gibt, habe ich ein kleines Skript geschrieben, das Symbole zur Marktbeobachtung hinzufügt, aber die Preise sind nur über CopyClose verfügbar, sie sind nicht über SymbolInfoDouble oder über MqlTick verfügbar, bis das Symbol zur Beobachtung hinzugefügt wird, so dass dieses Skript "unendlich" lange läuft , wenn es mit einem sehr großen Einsatz ausgeführt wird. Dies ist nur ein Beispiel.
einen Fehler bei der Verwendung eines Stylers?
Nehmen wir an, wir schreiben mit dem Tabulator.
Es liegt kein Fehler vor.
dann verwenden wir den Styler, wir erhalten
d.h. der Styler löscht den Abstand zwischen denTWO_DIM(10000)
Ergebnis
Was ist der richtige Weg?
1. wenn Sie vorher überhaupt keine Tickerkurse erhalten haben, den Chart nicht geöffnet haben usw. (abhängig von Ping, Internetgeschwindigkeit, Festplatte, Vorbereitung der Datei Bases/Broker/history/ticker/cache/)
2. wenn die Kurse zuvor empfangen wurden und dann das Terminal neu geladen wurde, sofern noch kein Chart dieses Tickers geöffnet wurde (Erstellung der Datei Bases/Broker/History/Ticker/Cache/)
die Zeit ist 10-15 mal kürzer als bei p.1
zum Vergleich die Zugriffszeit in МТ4 gemäß Punkt 2, d. h. nach dem Reset des Terminals
d.h. die Zeit nach dem Neustart des MT4-Terminals ist um einige Größenordnungen geringer.
Dieses Mal habe ich alles auf dem Windows überprüft, ohne SSD!
Wenn ich die Anführungszeichen richtig verstanden habe, wurde das Terminal nicht neu gebootet, sondern es wurde auf die Daten zugegriffen.
Habe ich es richtig verstanden, dass das Terminal nach dem Laden des Caches deutlich weniger Zeit für weitere Anfragen benötigt (ab der 2. Anfrage)?
Können wir die Zeit für den ersten Aufruf nach dem Neustart des Terminals irgendwie verkürzen, damit es wie in MT4 ist?
Der Code war in https://www.mql5.com/ru/forum/1111/page1870#comment_4856899
Sie haben eine sehr unsaubere Testmethode, da es überhaupt keine Beschreibung der Umgebung und der Wiedergabemethode gibt.
Nicht angegeben:
Ohne dies sind die Schlussfolgerungen unbegründet.
Schauen Sie sich zum Beispiel EURUSD M1 an - MT5 hat dort mehr als 6 Millionen Balken (wenn unbegrenzter Modus bei Charts), aber MT4 hat wie viele? Ein paar zehntausend M1-Balken in der aktuellen Datenbank?
Sie haben eine sehr unübersichtliche Testmethode, da es keinerlei Beschreibungen der Umgebung und der Wiedergabemethode gibt.
Nicht angegeben:
Grenzen der Balken im Fenster
Ansonsten sind die Schlussfolgerungen unbegründet.
Die meisten Fragen in meinem Beitrag wurden mir bereits gestellt, kein Problem, ich werde Ihnen jetzt alle Daten geben.
zunächst einmal die Antwort auf die Frage
MQ-Demo-Server werden die Daten geladen, wie in Punkt 2 und Punkt 3 des vorherigen Beitrags beschrieben. Bei Punkt 1 ist alles klar, und es gibt dort keine Fragen - wie es geschrieben wurde - Daten werden geladen, Cache wird auf dem angegebenen Pfad gebildet.
MT4
MT5
MT4
MT5
win XP 32bit, alle MT-Builds, alle aktuellen
MT4 - 1 Chart öffnen, mit einem anderen Symbol prüfen
MT5 - 1 Chart geöffnet, Überprüfung mit einem anderen Symbol
Wiederholen Sie den Vorgang, laden Sie das Terminal neu, senden Sie das Skript an den Chart, wählen Sie ein ANDERES Symbol, dessen Daten geladen wurden, BEVOR Sie das Terminal neu laden.
MT4
MT5
Hier ist mein Test mit mehr Details und mehr Genauigkeit:
Die Testdateien sind beigefügt und alle Zeiten sind in Mikrosekunden angegeben (nicht in Millisekunden, 1 Millisekunde = 1000 Mikrosekunden).
Nun zu den Schlussfolgerungen:
Das ist kein Problem - Heben kostet immer Ressourcen.
Vor allem, wenn konzeptionell unterschiedliche Architekturen verwendet werden: MT5 verfügt über komplexere Caches (cache\*.hc-Dateien werden aus den ursprünglichen *.hcc-Dateien erstellt), um eine Skalierung zu ermöglichen, sowie über eine obligatorische vollständige Synchronisationskontrolle mit Serverdaten (binäre *.hcc-Blöcke).
Bei beiden Terminalimplementierungen gibt es keine Ausfälle und alles funktioniert schnell.
Ich danke Ihnen für Ihre Antwort.
Insgesamt sind die Ergebnisse so, wie ich sie in meinen Beiträgen dargestellt habe.
Ich habe einen regelmäßigen Test durchgeführt.
Und doch sind die Ergebnisse zwischen MT4 und MT5 fast 200-mal anders (aufgrund von -muss die vollständige Synchronisation mit Server-Daten?? und ping? ).
Ich habe mich irgendwie daran gewöhnt, bevor ich hier gepostet habe, dass es wahrscheinlich eine Funktion des Terminals ist. Ich kann sogar damit leben, aber es ist an manchen Stellen schwierig. Da es zum Beispiel keinen Market-Screener in MT gibt, habe ich ein kleines Skript geschrieben, das Symbole zur Marktbeobachtung hinzufügt, aber die Preise sind nur über CopyClose verfügbar, sie sind nicht über SymbolInfoDouble oder über MqlTick verfügbar, bis das Symbol zur Beobachtung hinzugefügt wird, so dass dieses Skript "unendlich" lange läuft , wenn es mit einem sehr großen Einsatz ausgeführt wird. Dies ist nur ein Beispiel.