Sie sind nicht auf dem Laufenden. Angenommen, Sie müssen zwei Positionen in OnTick eröffnen. Der erste OrderSend dauert einige Millisekunden. Danach müssen Sie einen Schnappschuss machen. Und dann sollte der zweite OrderSend aufgerufen werden.
Nur OnTick kann Hunderte von Millisekunden lang ausgeführt werden. Und Sie schlagen vor, ein paar OnTimer zu knipsen.
Hier ist mein Code und die stabile Laufzeit: keine Hunderte oder Tausende von Mikrosekunden bei 20 parallelen Graphen
Wie viele Kerne haben Sie und welche Art von Prozessor? i7-2600?
8 Kerne.
2020.10.0602:27:59.464 Terminal MetaTrader 5 x64 build 2630 started for MetaQuotes Software Corp.
2020.10.0602:27:59.465 Terminal Windows 10 build 19042, Intel Core i7-2700 K @ 3.50 GHz, 7 / 15 Gb memory, 19 / 29 Gb disk, IE 11, Admin, GMT+3
Versteckter Stresstest mit Millionen von parallelen Anfragen?
Ich habe Ihnen schon oft gesagt, dass ich Kampfberater bin. Die Anzahl der Anrufe wurde so weit wie möglich reduziert. Theoretisch (ich habe es nicht gemessen) bis zu 10 Aufrufe pro OnTick.
Mehr Transparenz. Nur weil Sie ein paar einfache _B-Aufrufe gepostet haben, ist das kein Beweis für Ihre anderen Behauptungen. Sie vergessen plötzlich den Code und die eigentliche Beschreibung der Bedingungen, sobald Sie haarsträubende Behauptungen aufstellen.
Sie müssen sich nichts einbilden - erzählen und zeigen Sie, was Sie tatsächlich aufrufen und testen. Es handelt sich nicht um ein herausgerissenes Ergebnis, das besagt: "Ich habe einen unbekannten Stresstest durchgeführt und warte auf eine Meldung, um die Welt zu informieren", sondern um den vollständigen Code des Tests.
Ich veröffentliche die Ergebnisse des Live-EA. Dort befinden sich 70 mqh-Dateien, einschließlich WinAPI. Wenn Sie es wirklich verstehen und nicht nur Worte, werde ich Ihnen den Quellcode geben. Sie werden die Bremsen ziemlich schnell reproduzieren.
Sie sind nicht auf dem Laufenden. Nehmen wir an, Sie müssen zwei Positionen in OnTick eröffnen. Der erste OrderSend dauert einige Millisekunden. Danach müssen Sie einen Schnappschuss machen. Und dann sollte der zweite OrderSend aufgerufen werden.
Nur OnTick kann Hunderte von Millisekunden lang ausgeführt werden. Und Sie schlagen vor, einen OnTimer zu knipsen.
Ich habe kein Einrasten vorgeschlagen, sondern eine direkte Frage zum Millisekunden-Timer beantwortet.
Sie ist vorhanden, obwohl sie im aktuellen Testgerät immer noch bei 1 Sekunde ausgelöst wird. In dem neuen Tester, den wir gerade schreiben, werden wir versuchen, dies zu ändern.
Viele Male sagte Kampfberater. Die Anzahl der Anrufe wurde so weit wie möglich reduziert. Theoretisch (ich habe es nicht gemessen) bis zu 10 Aufrufe pro OnTick.
Ich veröffentliche hier die Ergebnisse des Expert Advisors. Dort befinden sich 70 mqh-Dateien, einschließlich WinAPI. Wenn Sie nicht nur darüber reden, sondern es wirklich verstehen, werde ich Ihnen den Quellcode geben. Sie werden ziemlich schnell auf die Bremse treten.
Wir kriegen das schon hin, geben Sie uns den Quellcode.
2020.10.0200:45:14.113Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 878 mсs.
2020.10.0200:45:14.114Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 943 mсs.
2020.10.0200:45:14.114Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 297 mсs.
2020.10.0200:45:14.116Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 1787 mсs.
2020.10.0200:45:14.116Alert: Time[Test9.mq5 35 in IsInvisible: ::ChartNext(Chart)] = 2 mсs.
2020.10.0200:45:14.117Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 980 mсs.
2020.10.0200:45:14.117Alert: Time[Test9.mq5 35 in IsInvisible: ::ChartNext(Chart)] = 2 mсs.
2020.10.0200:45:14.117Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 59 mсs.
2020.10.0200:45:14.118Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 803 mсs.
2020.10.0200:45:14.119Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 1059 mсs.
CHART_IS_MAXIMIZED ist zu langsam für die Diagramme einer anderen Person. Fehlerbericht ist fertig! Es war sehr einfach mit der Bibliothek.
Wo liegt das Problem?
unlesbarer Code
sich in einen Kurs mit viel Overhead einklinken
Stapelspeicherkosten für 50 Ergebnisse
Ergebnisse erhalten - ein massiver Overhead und Müll in Objektbindungen
Die Benutzerfreundlichkeit überwiegt den geringen Overhead. Es ist erbärmlich, wenn man sich genau ansieht, wie der Code implementiert ist. Zum Beispiel ist ArrayResize ein Overhead, so dass seine Verwendung minimiert wird.
Ich hoffe, Sie haben die Codeoptimierung für Tests nicht deaktiviert?
Ich meine den globalen Parameter Optimize=0 in der metaeditor.ini
Kein Interesse an langsamen Modi. Ich betrachte die Leistung von Combat EA und achte dabei natürlich auch auf die Optimierung der Algorithmen und des Compilers.
Ihr ganzer Benchmark ist mit Müll überladen und hier ist eine saubere und verständliche (im Gegensatz zu Ihrem Code-Wirrwarr) Version davon:
Was ist Ihr Problem?
unlesbarer Code
Einbindung in eine Klasse mit viel Overhead
Stapelspeicherkosten für 50 Ergebnisse
Abrufen von Ergebnissen - alles Overhead und Müll in Objektbindungen
Ich hoffe, Sie haben die Code-Optimierung für Tests nicht deaktiviert?
Ich meine den globalen Parameter Optimize=0 in der metaeditor.ini
Hier ist es im C-Stil, es ist einfach und wirklich müllfrei. Danke für das Beispiel.
Einer der C-Sprachlehrer empfahl, den Unterstrich _B besser nicht in Benutzernamen zu verwenden. Weil dieses Präfix von den Entwicklern von Bibliotheken, Programmen usw. verwendet wird. Und um nicht in Überschneidungen zu geraten, empfahl er, es besser nicht zu verwenden.
Ist es in mql5 möglich, sich mit Ihren Namen zu überschneiden? Oder sind benutzerdefinierte Namen vollständig von MQ-Namen abgeschirmt?
Einer der C-Lehrer empfahl, den Unterstrich _B nicht in Benutzernamen zu verwenden , da dieses Präfix von Entwicklern von Bibliotheken, Software usw. verwendet wird . Und um Überschneidungen zu vermeiden, empfahl er, es nicht zu verwenden.
In C werden Namen, die mit "_" beginnen, als Dienst-, System- oder Spezialnamen verwendet. In diesem Fall halte ich es für zulässig. Da diese Funktion für die Wartung und Überprüfung des Codes verwendet wird.
Namen, die mit "_" beginnen, werden in C als Dienst-, System- oder Spezialnamen verwendet. In diesem Fall - akzeptabel, denke ich. Da diese Funktion für die Wartung und Überprüfung des Codes verwendet wird.
Das ist der Punkt, neben mql5 gibt es auch MQ-Dienstnamen von Entwicklern.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Den Millisekunden-Timer gibt es schon seit langem: EventSetMillisecondTimer()
Sie sind nicht auf dem Laufenden. Angenommen, Sie müssen zwei Positionen in OnTick eröffnen. Der erste OrderSend dauert einige Millisekunden. Danach müssen Sie einen Schnappschuss machen. Und dann sollte der zweite OrderSend aufgerufen werden.
Nur OnTick kann Hunderte von Millisekunden lang ausgeführt werden. Und Sie schlagen vor, ein paar OnTimer zu knipsen.
Es gibt auch Probleme mit der Messbibliothek selbst. Es gibt eine Menge unnötiger Dinge, einschließlich der Gemeinkosten.
Streitereien im Studio!
Hier ist mein Code und die stabile Laufzeit: keine Hunderte oder Tausende von Mikrosekunden bei 20 parallelen Graphen
Wie viele Kerne haben Sie und welche Art von Prozessor? i7-2600?
8 Kerne.
Versteckter Stresstest mit Millionen von parallelen Anfragen?
Ich habe Ihnen schon oft gesagt, dass ich Kampfberater bin. Die Anzahl der Anrufe wurde so weit wie möglich reduziert. Theoretisch (ich habe es nicht gemessen) bis zu 10 Aufrufe pro OnTick.
Mehr Transparenz. Nur weil Sie ein paar einfache _B-Aufrufe gepostet haben, ist das kein Beweis für Ihre anderen Behauptungen. Sie vergessen plötzlich den Code und die eigentliche Beschreibung der Bedingungen, sobald Sie haarsträubende Behauptungen aufstellen.
Sie müssen sich nichts einbilden - erzählen und zeigen Sie, was Sie tatsächlich aufrufen und testen. Es handelt sich nicht um ein herausgerissenes Ergebnis, das besagt: "Ich habe einen unbekannten Stresstest durchgeführt und warte auf eine Meldung, um die Welt zu informieren", sondern um den vollständigen Code des Tests.
Ich veröffentliche die Ergebnisse des Live-EA. Dort befinden sich 70 mqh-Dateien, einschließlich WinAPI. Wenn Sie es wirklich verstehen und nicht nur Worte, werde ich Ihnen den Quellcode geben. Sie werden die Bremsen ziemlich schnell reproduzieren.
Sie sind nicht auf dem Laufenden. Nehmen wir an, Sie müssen zwei Positionen in OnTick eröffnen. Der erste OrderSend dauert einige Millisekunden. Danach müssen Sie einen Schnappschuss machen. Und dann sollte der zweite OrderSend aufgerufen werden.
Nur OnTick kann Hunderte von Millisekunden lang ausgeführt werden. Und Sie schlagen vor, einen OnTimer zu knipsen.
8 Kerne.
Viele Male sagte Kampfberater. Die Anzahl der Anrufe wurde so weit wie möglich reduziert. Theoretisch (ich habe es nicht gemessen) bis zu 10 Aufrufe pro OnTick.
Ich veröffentliche hier die Ergebnisse des Expert Advisors. Dort befinden sich 70 mqh-Dateien, einschließlich WinAPI. Wenn Sie nicht nur darüber reden, sondern es wirklich verstehen, werde ich Ihnen den Quellcode geben. Sie werden ziemlich schnell auf die Bremse treten.
Die Argumente liegen auf dem Tisch!
Ihr ganzer Benchmark ist mit Müll überladen und hier ist eine saubere und verständliche (im Gegensatz zu Ihrem Code-Wirrwarr) Version davon:
Was sind Ihre Probleme?
Ich hoffe, Sie haben die Code-Optimierung für Tests nicht deaktiviert?
Ich meine den globalen Parameter Optimize=0 in der metaeditor.ini
Ihr ganzer Benchmark ist mit Müll überladen und hier ist eine saubere und verständliche (im Gegensatz zu Ihrem Code-Wirrwarr) Version davon:
Ihre Version befindet sich leider noch in einem frühen Stadium des Verständnisses von Bequemlichkeit. Praktisch ist es, wenn man es so machen kann.
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Bibliotheken: Benchmark
fxsaber, 2020.10.01 23:49
Jetzt versuchen wir herauszufinden, wo der Schluckauf bei der Standardvariante liegt. Wir fügen einige Symbole in den Quellcode ein.
Und sehen sofort den Grund dafür.
CHART_IS_MAXIMIZED ist zu langsam für die Diagramme einer anderen Person. Fehlerbericht ist fertig! Es war sehr einfach mit der Bibliothek.
Wo liegt das Problem?
Die Benutzerfreundlichkeit überwiegt den geringen Overhead. Es ist erbärmlich, wenn man sich genau ansieht, wie der Code implementiert ist. Zum Beispiel ist ArrayResize ein Overhead, so dass seine Verwendung minimiert wird.
Ich hoffe, Sie haben die Codeoptimierung für Tests nicht deaktiviert?
Ich meine den globalen Parameter Optimize=0 in der metaeditor.ini
Kein Interesse an langsamen Modi. Ich betrachte die Leistung von Combat EA und achte dabei natürlich auch auf die Optimierung der Algorithmen und des Compilers.
Ihr ganzer Benchmark ist mit Müll überladen und hier ist eine saubere und verständliche (im Gegensatz zu Ihrem Code-Wirrwarr) Version davon:
Was ist Ihr Problem?
Ich hoffe, Sie haben die Code-Optimierung für Tests nicht deaktiviert?
Ich meine den globalen Parameter Optimize=0 in der metaeditor.ini
Hier ist es im C-Stil, es ist einfach und wirklich müllfrei. Danke für das Beispiel.
Einer der C-Sprachlehrer empfahl, den Unterstrich _B besser nicht in Benutzernamen zu verwenden.
Weil dieses Präfix von den Entwicklern von Bibliotheken, Programmen usw. verwendet wird.
Und um nicht in Überschneidungen zu geraten, empfahl er, es besser nicht zu verwenden.
Ist es in mql5 möglich, sich mit Ihren Namen zu überschneiden?
Oder sind benutzerdefinierte Namen vollständig von MQ-Namen abgeschirmt?
Einer der C-Lehrer empfahl, den Unterstrich _B nicht in Benutzernamen zu verwenden
, da dieses Präfix von Entwicklern von Bibliotheken, Software usw. verwendet wird
. Und um Überschneidungen zu vermeiden, empfahl er, es nicht zu verwenden.
In C werden Namen, die mit "_" beginnen, als Dienst-, System- oder Spezialnamen verwendet. In diesem Fall halte ich es für zulässig. Da diese Funktion für die Wartung und Überprüfung des Codes verwendet wird.
Namen, die mit "_" beginnen, werden in C als Dienst-, System- oder Spezialnamen verwendet. In diesem Fall - akzeptabel, denke ich. Da diese Funktion für die Wartung und Überprüfung des Codes verwendet wird.
Das ist der Punkt, neben mql5 gibt es auch MQ-Dienstnamen von Entwicklern.