Fehler, Irrtümer, Fragen - Seite 2313

 
Vladimir Karputov:

Ich habe dieses Problem auf meinem Laptop, wenn eine Aufgabe weiterhin auf den Agenten zu zählen (zum Beispiel, ich durcheinander in den Code mit der Eröffnung Position und der arme Agent sendet und sendet Handelsaufträge, aber er bekommt Verbote in Reaktion, aber es weiterhin zu bombardieren, was in allen Agenten haben längst abgeschlossen Berechnungen, aber dieser arme Kerl hält hämmern und hämmern).

Das heißt, kurz gesagt: Der Agent hat eine Aufgabe aus der letzten Mission, und er kämpft mit ihr weiter.

Ich hatte das heute gegenüber, nachdem die Agenten über 24 Stunden lang nicht im Einsatz waren.

Ich glaube, es gibt einen Fehler bei der Autorisierung und dem Datenaustausch, d.h. wenn lange Zeit keine EA/Historie übertragen wird, stellt die Client-Seite die Verbindung wieder her und der Agent wartet immer noch auf den Eingang von Dateien.
 
fxsaber :

Fast drei Millionen Ticks und nur 16K OrderSend. Aber diese Handelsaufträge benötigen ein Drittel der Zeit. Und bei jedem Tick gibt es Berechnungen im Expert Advisor.

Daher meine Frage. Könnten Sie den Code von OrderSend mit dem Profiler ausführen? An welcher Stelle gibt es ein solches Hindernis?

Ich gehe davon aus, dass es schneller geht, wenn Sie die Standardfunktion durch Ihre eigene ersetzen. Wahrscheinlich gibt es einige teure Prüfungen und Gesten in OrderSend. Wenn z.B. keine History-Funktionen und OnTrade* im Expert Advisor (+ Indikatoren) vorhanden sind, dann ist die Bildung der entsprechenden Datensätze/Ereignisse reine Zeitverschwendung.

Ich verstehe, dass ein Lauf für manche Menschen viele Minuten dauert. Aber es gibt Fälle wie den oben genannten - Einheiten von Sekunden, wenn man auf die Geschwindigkeit der Ausführung achtet. Und hier stellt sich heraus, dass ich Optimize drei Stunden lang starte, und davon ist eine Stunde OrderSend, dessen durchschnittliche Ausführungszeit 69 µs beträgt (siehe Screenshot):

Hallo,

Haben Sie eine nützliche Antwort von Metaquotes erhalten?

Ich habe einen Kunden, der den MT5 Strategy Tester nutzen möchte, um seine Leistung zu verbessern. Die EA-Strategie kann problemlos den Modus "Nur verfügbare Preise" verwenden. Der Backtest, der mit MT4 1,5 Sekunden dauert, wird mit MT5 in 5 Sekunden durchgeführt!

Die Strategie verwendet einen Trailing-Stop und scheint OrderSend () für 90 % der Backtest-Zeit zu verwenden:


 
Alain Verleyen:

Hallo,

Haben Sie eine nützliche Antwort von Metaquotes erhalten?

Ich habe einen Kunden, der den MT5 Strategy Tester nutzen möchte, um seine Leistung zu verbessern. Die EA-Strategie kann problemlos den Modus "Nur verfügbare Preise" verwenden. Der Backtest, der mit MT4 1,5 Sekunden dauert, wird mit MT5 in 5 Sekunden durchgeführt!

Die Strategie verwendet einen Trailing-Stop und scheint OrderSend () für 90 % der Backtest-Zeit zu verwenden:

Alle Antworten wurden nur in diesem Thread gegeben. Es sieht so aus, als ob etwas getan worden wäre.

MetaQuotes Software Corp.:
  1. Tester: Optimierter und beschleunigter Strategie-Tester.

Ich habe es selbst durch Virtual gelöst.


ZZY Zeigen Sie Ihren EA.

Библиотеки: Virtual
Библиотеки: Virtual
  • 2018.10.03
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: Virtual
 
fxsaber:

Sieht aus, als ob etwas getan wurde

1930

Core 1  pass 0 returned result 99753711.00 in 0:00:03.729
Core 1  pass 1 returned result 99753711.00 in 0:00:03.432
Core 1  pass 2 returned result 99753711.00 in 0:00:03.401
Core 1  pass 3 returned result 99753711.00 in 0:00:03.354
Core 1  pass 4 returned result 99753711.00 in 0:00:03.323
Core 1  pass 5 returned result 99753711.00 in 0:00:03.385
Core 1  pass 6 returned result 99753711.00 in 0:00:03.448
Core 1  pass 7 returned result 99753711.00 in 0:00:03.369
Core 1  pass 8 returned result 99753711.00 in 0:00:03.369
Core 1  pass 9 returned result 99753711.00 in 0:00:03.385
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 35 seconds
Statistics      shortest pass 0:00:03.323, longest pass 0:00:03.729, average pass 0:00:03.419


Virtuell

Core 1  pass 0 returned result 99753711.00 in 0:00:02.231
Core 1  pass 1 returned result 99753711.00 in 0:00:01.217
Core 1  pass 2 returned result 99753711.00 in 0:00:01.217
Core 1  pass 3 returned result 99753711.00 in 0:00:01.185
Core 1  pass 4 returned result 99753711.00 in 0:00:01.170
Core 1  pass 5 returned result 99753711.00 in 0:00:01.201
Core 1  pass 6 returned result 99753711.00 in 0:00:01.186
Core 1  pass 7 returned result 99753711.00 in 0:00:01.201
Core 1  pass 8 returned result 99753711.00 in 0:00:01.185
Core 1  pass 9 returned result 99753711.00 in 0:00:01.202
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 13 seconds
Statistics      shortest pass 0:00:01.170, longest pass 0:00:02.231, average pass 0:00:01.299


Der Unterschied ist dreimal so groß wie im Jahr 1881. Wahrscheinlich wurde irgendwo anders gezwickt. Aber das Thema OrderSend wurde wahrscheinlich nicht berührt.

 
fxsaber :

Alle Antworten sind nur in diesem Thread gegeben worden. Es sieht so aus, als ob etwas getan worden wäre.

Ich habe es selbst durch Virtual gelöst.

Ich danke Ihnen für Ihre Antwort.
 
Leute. Es gibt wieder einen Fehler auf der Website.
Ich kann von meinem Telefon aus nicht auf Nachrichten auf dem Marktplatz antworten. Die Liste wird nicht angezeigt.
Im Urlaub, kein Computer.

 

Die Optimierung erzeugt Bündel von 128 Aufträgen für jeden Agenten. Ist es möglich, Pakete mit unterschiedlicher Größe zu bilden?

Dies ist die Situation

Alle Agenten bis auf einen haben ihre Aufgaben erfüllt. Und wir müssen wegen eines Agenten warten, bis die Optimierung abgeschlossen ist. Es war jedoch möglich, die Arbeit aller Bevollmächtigten fast zeitgleich zu beenden.

Betrachten wir zum Beispiel, wie auf dem Screenshot, 8 Agenten und 5376 Aufgaben. 5376 / 8 = 672 Aufgaben. So könnten Sie Bündel der Größe 336 (=672/2), 168 (672/4) oder 84 (672/8) Jobs in jedem bilden. Und dann würden alle Agenten zur gleichen Zeit die Ziellinie erreichen.


Der Wert von 128 hingegen berücksichtigt diese Vielfachheit nicht. Dies führt zu längeren Optimierungszeiten, wenn mehrere Kerne verwendet werden.

 

Ich wollte die KB mit einer Note versehen, aber es hat nicht funktioniert. Und der Tatsache nach zu urteilen, dass die jüngsten Veröffentlichungen überhaupt keine Bewertungen haben, bin ich anscheinend nicht der Einzige mit diesem Problem.

Gleichzeitig möchte ich aber auch zugeben, dass das Bewertungssystem(einfaches arithmetisches Mittel ) Lust auf mehr macht. Schließlich wird ein neu veröffentlichter Code mit einer 5-Sterne-Bewertung höher bewertet als ein Code, der bereits seit mehreren Jahren in BE ist und 49 5-Sterne-Bewertungen und eine 4-Sterne-Bewertung hat. Ist das fair?

Meiner Meinung nach wäre zumindest diese Formel viel fairer:

double R=Average*pow(N,0.1);

Wo:

R- die gesuchte Einstufung

Durchschnittswert - arithmetisches Mittel

N- Anzahl der Bewertungen.

 
fxsaber:

Die Optimierung erzeugt für jeden Agenten Bündel von 128 Aufträgen. Ist es möglich, Pakete mit unterschiedlicher Größe zu bilden?

Dies ist die Situation

Alle Agenten bis auf einen haben ihre Aufgaben erfüllt. Und wir müssen wegen eines Agenten warten, bis die Optimierung abgeschlossen ist. Es war jedoch möglich, die Arbeit aller Bevollmächtigten fast zeitgleich zu beenden.

Betrachten wir zum Beispiel, wie auf dem Screenshot, 8 Agenten und 5376 Aufgaben. 5376 / 8 = 672 Aufgaben. So könnten Sie Bündel der Größe 336 (=672/2), 168 (672/4) oder 84 (672/8) Jobs in jedem bilden. Und dann würden alle Agenten zur gleichen Zeit die Ziellinie erreichen.


Der Wert von 128 hingegen berücksichtigt diese Vielfachheit nicht. Dies führt dazu, dass sich die Optimierungszeit erhöht, wenn mehrere Kerne verwendet werden.

Im Großen und Ganzen unterstütze ich dies, aber ich denke, es wäre richtiger, die automatische Stornierung von Aufträgen für Agenten zu ermöglichen (bereits implementiert durch Drücken der Taste zum Verbieten der Agentenaktivität), wenn es freie Agenten und 5 mal mehr Aufträge gibt, und die Aufträge wieder an alle Agenten zu verteilen, einschließlich der entfernten.

 

Guten Tag zusammen! Entschuldigung für die dumme Frage. Leute, könntet ihr mir bitte sagen, wie man die Eigenschaft "Gedrückt" einer Schaltfläche wahr werden lässt, wenn man mit der linken Maustaste klickt, und falsch, wenn man mit der linken Maustaste klickt. Jetzt ist die Situation so, dass nichts passiert, wenn man die Taste drückt, aber Pressed ändert seinen Wert in das Gegenteil, wenn man die Taste loslässt.

Ich verstehe, dass ich die CButton::OnMouseUp und CButton::OnMouseDown-Ereignishandler überschreiben müssen, aber ich habe keine Ahnung, wo das zu tun. Bitte einen Hinweis. Vielen Dank im Voraus!

Grund der Beschwerde: