A100: Natürlich werden keine Experten/Indikatoren/Skripte ausgeführt - nur manuelle Builds. Die angegebene Latenzzeit ist auf jedem durchschnittlichen modernen 64-Bit-Tablet reproduzierbar. Wenn Sie einen i7-Computer haben, haben Sie diese Verzögerung sicher noch nicht bemerkt.
Auf dem anderen Terminal läuft die Optimierung parallel auf sechs von acht möglichen lokalen Agenten.
Wenn es sich dabei um Netzwerkunterbrechungen handelt, warum wirkt sich dies auf den Abruf des letzten Ticks von Market Watch und den Abruf des letzten Ticks von der Tick-Historie aus?
ZZY Das Terminal Log befindet sich auf der gleichen Strecke.
2020.09.0601:48:38.338 Network '': scanning network for access points
2020.09.0601:48:40.195 Network '': scanning network finished
2020.09.0603:57:04.504 Network '': connection to RannForex-Server lost
2020.09.0603:57:15.249 Network '': authorized on RannForex-Server through as.eu 6 (ping: 56.41 ms, build 2560)
2020.09.0603:57:15.249 Network '': previous successful authorization performed from xx.xx.xx.xx on 2020.09.0521:59:422020.09.0603:57:15.678 Network '': terminal synchronized with RannForex Limited: 1 positions, 0 orders, 67 symbols, 0 spreads
2020.09.0603:57:15.678 Network '': trading has been enabled - hedging mode
2020.09.0603:57:17.500 Network '': scanning network for access points
2020.09.0603:57:20.416 Network '': scanning network finished
2020.09.0605:10:52.296 Network '': connection to RannForex-Server lost
2020.09.0605:10:53.033 Network '': authorized on RannForex-Server through as.eu 6 (ping: 56.31 ms, build 2560)
2020.09.0605:10:53.033 Network '': previous successful authorization performed from xx.xx.xx.xx on 2020.09.0605:10:592020.09.0605:10:53.299 Network '': terminal synchronized with RannForex Limited: 1 positions, 0 orders, 67 symbols, 0 spreads
2020.09.0605:10:53.299 Network '': trading has been enabled - hedging mode
2020.09.0609:57:18.310 Network '': scanning network for access points
2020.09.0609:57:20.396 Network '': scanning network finished
2020.09.0609:57:20.396 Network '': auto connecting to a better access point with 93 % quality (previous: 77 %)
2020.09.0609:57:20.397 Network '': connection to RannForex-Server lost
2020.09.0609:57:21.151 Network '': authorized on RannForex-Server through as.eu 5 (ping: 41.60 ms, build 2560)
2020.09.0609:57:21.151 Network '': previous successful authorization performed from
xx.xx.xx.xx on 2020.09.0605:10:592020.09.0609:57:21.208 Network '': terminal synchronized with RannForex Limited: 1 positions, 0 orders, 67 symbols, 0 spreads
2020.09.0609:57:21.208 Network '': trading has been enabled - hedging mode
2020.09.0611:08:16.952 Network '': connection to RannForex-Server lost
2020.09.0611:11:48.892 Network '': authorized on RannForex-Server
2020.09.0611:11:48.892 Network '': previous successful authorization performed from xx.xx.xx.xx on 2020.09.0611:11:552020.09.0611:11:48.970 Network '': terminal synchronized with RannForex Limited: 1 positions, 0 orders, 67 symbols, 0 spreads
2020.09.0611:11:48.970 Network '': trading has been enabled - hedging mode
2020.09.0611:11:49.152 Network '': scanning network for access points
2020.09.0611:11:51.319 Network '': scanning network finished
2020.09.0611:11:51.319 Network '': auto connecting to a better access point with 92 % quality (previous: 91 %)
2020.09.0611:11:51.320 Network '': connection to RannForex-Server lost
2020.09.0611:11:52.035 Network '': authorized on RannForex-Server through as.eu 5 (ping: 43.31 ms, build 2560)
2020.09.0611:11:52.035 Network '': previous successful authorization performed from xx.xx.xx.xx on 2020.09.0611:11:552020.09.0611:11:52.088 Network '': terminal synchronized with RannForex Limited: 1 positions, 0 orders, 67 symbols, 0 spreads
2020.09.0611:11:52.088 Network '': trading has been enabled - hedging mode
2020.09.0617:11:49.928 Network '': scanning network for access points
2020.09.0617:11:52.112 Network '': scanning network finished
Wenn es sich dabei um Netzwerkunterbrechungen handelt, warum wirkt sich dies auf den Abruf des letzten Ticks von Market Watch und den Abruf des letzten Ticks von der Tick-Historie aus?
Eine sorgfältige Analyse hat gezeigt, dass CopyTicks bei Netzunterbrechungen langsamer wird.
2020.09.0621:22:24.105Alert: Time[NewTicks.mqh 43: ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 1619 ms.
2020.09.0621:22:24.515Alert: Time[NewTicks.mqh 43: ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 2347 ms.
2020.09.0621:22:53.814Alert: Time[NewTicks.mqh 43: ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 274 ms.
2020.09.0621:22:53.814Alert: Time[NewTicks.mqh 43: ::CopyTicks(_Symbol,Tick,COPY_TICKS_ALL,0,1)] = 686 ms.
2020.09.0621:20:59.301 Network connection to RannForex-Server lost
2020.09.0621:22:21.043 Network authorized on RannForex-Server
2020.09.0621:22:21.043 Network previous successful authorization performed from xx.xx.xx.xx on 2020.09.0611:11:592020.09.0621:22:21.508 Network terminal synchronized with RannForex Limited: 1 positions, 0 orders, 67 symbols, 0 spreads
2020.09.0621:22:21.508 Network trading has been enabled - hedging mode
2020.09.0621:22:21.915 Network scanning network for access points
2020.09.0621:22:28.819 Network scanning network finished
2020.09.0621:22:45.523 Network connection to RannForex-Server lost
2020.09.0621:22:52.951 Network authorized on RannForex-Server through as.eu 6 (ping: 56.55 ms, build 2560)
2020.09.0621:22:52.951 Network previous successful authorization performed from xx.xx.xx.xx on 2020.09.0621:22:282020.09.0621:22:53.024 Network terminal synchronized with RannForex Limited: 1 positions, 0 orders, 67 symbols, 0 spreads
2020.09.0621:22:53.024 Network trading has been enabled - hedging mode
if (OrderSend(Request, Result))
_B2(HistorySelect(0, INT_MAX)); // В каком месте самострел?
Zuallererst, zu Ihrer Information.
"Wenn diePrüfung der Grundstruktur (Zeigerprüfung) erfolgreich ist, wird true zurückgegeben -dies bedeutet nicht, dass die Handelsoperation erfolgreich ausgeführt wurde. Um eine genauere Beschreibung des Ergebnisses der Funktionsausführung zu erhalten, sollten die Felder derErgebnisstrukturanalysiert werden."
Zweitens: Nach Ihrer Logik wird ein geöffneter Auftrag nicht in die Liste der Aufträge aufgenommen, sondern der Cache wird komplett gelöscht.)
Sie können DEN gesamten Code optimieren, den Sie haben HistorySelect wird die letzte Stelle für Fragen zur Ausführungszeit sein) Verwenden Sie Caching. Sie können sie zum Beispiel einmal am Tag ungültig machen, aber das wird Ihren EA erheblich beschleunigen.
Man muss den Code entweder ausführen, um ihn richtig zu verstehen, oder ihn sehr gut von einem Arbeitsblatt ablesen.
Zweitens: Wenn ein Auftrag geöffnet wird, wird er Ihrer Logik zufolge nicht in die Liste der Aufträge aufgenommen, sondern der Cache wird vollständig gelöscht.)
if (OrderSend(Request, Result))
_B2(HistorySelect(0, INT_MAX)); // В каком месте самострел?
Ich sehe diese Logik:
Wenn eine Handelsanfrage erfolgreich an den Server gesendet wurde
Wir wählen die gesamte Geschichte
Es kann aber auch sein, dass die Anfrage bereits auf dem Server abgelehnt wurde - dafür gibt es in diesem Code keine Überprüfung. Welchen Sinn hat es, die Geschichte auszuwählen? Was wollen wir dort sehen?
Hier, in diesen beiden Codezeilen, sehe ich persönlich den Sinn nicht. Ich würde es begrüßen, wenn es eine Möglichkeit gäbe, die Geschichte zu ändern, bevor sie ausgewählt wird. Vielleicht vermitteln diese beiden Zeilen kein vollständiges Bild der Aufgabe. Aber der Zusammenhang zwischen dem erfolgreichen Senden einer Anfrage an den Server und der Auswahl des gesamten Verlaufs ist mir nicht klar. Auch wenn der Server eine Anfrage erfolgreich sendet, wird die Liste der Marktaufträge und Positionen geändert. Was hat die Geschichtsliste damit zu tun?
Wenn eine Handelsanfrage erfolgreich an den Server gesendet wurde
Wählen Sie den gesamten Verlauf
Es könnte aber auch sein, dass die Anfrage bereits auf dem Server abgelehnt wurde - dafür gibt es in diesem Code keine Überprüfung. Welchen Sinn hat es, die Geschichte auszuwählen? Was wollen wir dort sehen?
Hier, in diesen beiden Codezeilen, sehe ich persönlich den Sinn nicht. Ich würde es begrüßen, wenn es eine Möglichkeit gäbe, die Geschichte zu ändern, bevor sie ausgewählt wird. Vielleicht vermitteln diese beiden Zeilen kein vollständiges Bild der Aufgabe. Aber der Zusammenhang zwischen dem erfolgreichen Senden einer Anfrage an den Server und der Auswahl des gesamten Verlaufs ist mir nicht klar. Auch wenn der Server eine Anfrage erfolgreich sendet, wird die Liste der Marktaufträge und Positionen geändert. Was hat das mit der Geschichtsliste zu tun?
If - um die Compiler-Warnung loszuwerden. Sie hat nichts anderes zu tun.
In diesem Thread geht es nicht darum, Ihnen beizubringen, wie man EAs schreibt. Damit sollen die Schwachstellen des Terminals beseitigt werden. Die Entwickler brauchen einen einfachen, präzisen und reproduzierbaren Code, um ihn zu verstehen. Ich schreibe natürlich nichts in dieser Art für mich selbst. Tatsache ist, dass der Combat Advisor die Bremsen protokolliert. Ich beginne zu graben und stelle fest, dass die Verlangsamung auftritt, wenn jemand (zumindest von Hand) eine Position ändert. Dadurch wird der historische Cache zurückgesetzt, obwohl sich der Verlauf natürlich nicht ändert.
Der Code veranschaulicht das Problem perfekt. Es besteht keine Notwendigkeit, den Wiedergabecode mit unnötigen Prüfungen zu überfrachten. Ihre Aufgabe ist es, das Problem deutlich zu machen. Und nach der Behebung - um zu beweisen, dass jetzt alles richtig funktioniert.
Bedenken Sie, dass ich sehr gut vom Blatt ablesen kann :)
Diesen Code haben Sie von irgendwoher übernommen und Sie haben dort eine neue Positionserstellung, die ja auch ausgeführt wird, richtig?
Andernfalls läuft Ihr Code darauf hinaus, die TP der aktuellen Position zu aktualisieren und den Cache dafür ungültig zu machen, was ebenfalls sehr seltsam ist.
In diesen beiden Fällen wird keine Logik zur Optimierung der Zwischenspeicherung verwendet. Darüber hinaus ist Ihre Lösung nicht skalierbar, da sie zu einer zunehmenden Bremsung führt, wenn die Geschichte wächst.
Der Code veranschaulicht das Problem perfekt. Es besteht keine Notwendigkeit, den Wiedergabecode mit unnötigen Prüfungen zu überfrachten. Ihre Aufgabe ist es, das Problem deutlich zu machen. Und wenn sie korrigiert sind - um zu beweisen, dass jetzt alles richtig funktioniert.
Nach Ihrer Logik müsste also dieser Code hier
int v = 0.0;
for (int i = 0; i < 1000000; i++) {
v = i;
}
std::cout << "The last number: " << v << std::endl;
Natürlich werden keine Experten/Indikatoren/Skripte ausgeführt - nur manuelle Builds. Die angegebene Latenzzeit ist auf jedem durchschnittlichen modernen 64-Bit-Tablet reproduzierbar. Wenn Sie einen i7-Computer haben, haben Sie diese Verzögerung sicher noch nicht bemerkt.
Verlangsamt sich die apk oder das exe-System?
Auf dem anderen Terminal läuft die Optimierung parallel auf sechs von acht möglichen lokalen Agenten.
Wenn es sich dabei um Netzwerkunterbrechungen handelt, warum wirkt sich dies auf den Abruf des letzten Ticks von Market Watch und den Abruf des letzten Ticks von der Tick-Historie aus?
ZZY Das Terminal Log befindet sich auf der gleichen Strecke.
Wenn es sich dabei um Netzwerkunterbrechungen handelt, warum wirkt sich dies auf den Abruf des letzten Ticks von Market Watch und den Abruf des letzten Ticks von der Tick-Historie aus?
Eine sorgfältige Analyse hat gezeigt, dass CopyTicks bei Netzunterbrechungen langsamer wird.
Zuallererst, zu Ihrer Information.
"Wenn diePrüfung der Grundstruktur (Zeigerprüfung) erfolgreich ist, wird true zurückgegeben -dies bedeutet nicht, dass die Handelsoperation erfolgreich ausgeführt wurde. Um eine genauere Beschreibung des Ergebnisses der Funktionsausführung zu erhalten, sollten die Felder derErgebnisstrukturanalysiert werden."
Zweitens: Nach Ihrer Logik wird ein geöffneter Auftrag nicht in die Liste der Aufträge aufgenommen, sondern der Cache wird komplett gelöscht.)
Sie können DEN gesamten Code optimieren, den Sie haben HistorySelect wird die letzte Stelle für Fragen zur Ausführungszeit sein) Verwenden Sie Caching. Sie können sie zum Beispiel einmal am Tag ungültig machen, aber das wird Ihren EA erheblich beschleunigen.
Nun, zunächst einmal
Man muss den Code entweder ausführen, um ihn richtig zu verstehen, oder ihn sehr gut von einem Arbeitsblatt ablesen.
Zweitens: Wenn ein Auftrag geöffnet wird, wird er Ihrer Logik zufolge nicht in die Liste der Aufträge aufgenommen, sondern der Cache wird vollständig gelöscht.)
Die Auftragsliste ändert sich nicht. Lesen Sie den Code.
Um den Code richtig zu verstehen, müssen Sie ihn entweder ausführen oder sehr gut vom Blatt ablesen.
Die Liste der Aufträge ändert sich nicht. Lesen Sie den Code.
Hier
Ich sehe diese Logik:
Es kann aber auch sein, dass die Anfrage bereits auf dem Server abgelehnt wurde - dafür gibt es in diesem Code keine Überprüfung. Welchen Sinn hat es, die Geschichte auszuwählen? Was wollen wir dort sehen?
Hier, in diesen beiden Codezeilen, sehe ich persönlich den Sinn nicht. Ich würde es begrüßen, wenn es eine Möglichkeit gäbe, die Geschichte zu ändern, bevor sie ausgewählt wird. Vielleicht vermitteln diese beiden Zeilen kein vollständiges Bild der Aufgabe. Aber der Zusammenhang zwischen dem erfolgreichen Senden einer Anfrage an den Server und der Auswahl des gesamten Verlaufs ist mir nicht klar. Auch wenn der Server eine Anfrage erfolgreich sendet, wird die Liste der Marktaufträge und Positionen geändert. Was hat die Geschichtsliste damit zu tun?
Hier ist es
Ich sehe diese Logik:
Es könnte aber auch sein, dass die Anfrage bereits auf dem Server abgelehnt wurde - dafür gibt es in diesem Code keine Überprüfung. Welchen Sinn hat es, die Geschichte auszuwählen? Was wollen wir dort sehen?
Hier, in diesen beiden Codezeilen, sehe ich persönlich den Sinn nicht. Ich würde es begrüßen, wenn es eine Möglichkeit gäbe, die Geschichte zu ändern, bevor sie ausgewählt wird. Vielleicht vermitteln diese beiden Zeilen kein vollständiges Bild der Aufgabe. Aber der Zusammenhang zwischen dem erfolgreichen Senden einer Anfrage an den Server und der Auswahl des gesamten Verlaufs ist mir nicht klar. Auch wenn der Server eine Anfrage erfolgreich sendet, wird die Liste der Marktaufträge und Positionen geändert. Was hat das mit der Geschichtsliste zu tun?
If - um die Compiler-Warnung loszuwerden. Sie hat nichts anderes zu tun.
In diesem Thread geht es nicht darum, Ihnen beizubringen, wie man EAs schreibt. Damit sollen die Schwachstellen des Terminals beseitigt werden. Die Entwickler brauchen einen einfachen, präzisen und reproduzierbaren Code, um ihn zu verstehen. Ich schreibe natürlich nichts in dieser Art für mich selbst. Tatsache ist, dass der Combat Advisor die Bremsen protokolliert. Ich beginne zu graben und stelle fest, dass die Verlangsamung auftritt, wenn jemand (zumindest von Hand) eine Position ändert. Dadurch wird der historische Cache zurückgesetzt, obwohl sich der Verlauf natürlich nicht ändert.
Der Code veranschaulicht das Problem perfekt. Es besteht keine Notwendigkeit, den Wiedergabecode mit unnötigen Prüfungen zu überfrachten. Ihre Aufgabe ist es, das Problem deutlich zu machen. Und nach der Behebung - um zu beweisen, dass jetzt alles richtig funktioniert.
Um den Code richtig zu verstehen, müssen Sie ihn entweder ausführen oder sehr gut vom Blatt ablesen.
Die Liste der Aufträge ändert sich nicht. Lesen Sie den Code.
Bedenken Sie, dass ich sehr gut vom Blatt ablesen kann :)
Diesen Code haben Sie von irgendwoher übernommen und Sie haben dort eine neue Positionserstellung, die ja auch ausgeführt wird, richtig?
Andernfalls läuft Ihr Code darauf hinaus, die TP der aktuellen Position zu aktualisieren und den Cache dafür ungültig zu machen, was ebenfalls sehr seltsam ist.
In diesen beiden Fällen wird keine Logik zur Optimierung der Zwischenspeicherung verwendet. Darüber hinaus ist Ihre Lösung nicht skalierbar, da sie zu einer zunehmenden Bremsung führt, wenn die Geschichte wächst.
Der Code veranschaulicht das Problem perfekt. Es besteht keine Notwendigkeit, den Wiedergabecode mit unnötigen Prüfungen zu überfrachten. Ihre Aufgabe ist es, das Problem deutlich zu machen. Und wenn sie korrigiert sind - um zu beweisen, dass jetzt alles richtig funktioniert.
Nach Ihrer Logik müsste also dieser Code hier
eine Trägheit des Prozessors zeigt?
Sie haben diesen Code von irgendwoher, und Sie haben ihn dort, indem Sie eine neue Position erstellen, die dann auch ausgeführt wird, richtig?
Nach Ihrer Logik müsste also dieser Code hier
zeigt die Langsamkeit des Prozessors?