Ist die lineare Verlangsamung ein Programmierfehler oder ein Merkmal von MT4? - Seite 9

 
Serj_Che:

Ich habe keine Beschwerden gegen Sie.

Das gilt auch für Papaklass .

Sind Sie sein Anwalt?

Sind Sie seine Staatsanwältin? Es hat mir nicht gefallen, dass du dachtest, du könntest es für ihn sagen, aber nicht für dich, und dass du es hier nicht sagen kannst, aber du kannst es für diesen Mann sagen.

Das hat mir einfach nicht gefallen, also habe ich mich zu Wort gemeldet. Keine persönlichen Ansprüche, nur in Bezug auf die Situation.

 

-Aleks-:

Die ungefähre Verarbeitungsrate beträgt also 23 Durchgänge von 2000 bis 2013 auf Stundenbasis zu den Eröffnungspreisen:

1. Kamikadze_MA_V_01 - 5 Minuten

2. Kamikadze_MA_V_02 - 15 Minuten.

3. Kamikadze_MA_V_03 - mehr als 30 Minuten

Ein solcher Vorgang schaltet die Möglichkeit der EA-Feinabstimmung in Echtzeit einfach aus.


23 Durchgänge in 30 Minuten sind also eine lange Zeit? Das ist interessant.

Mein Expert Advisor auf M15 von Juni bis September benötigt 24 Stunden für einen Durchlauf im Tester. Das ist eine lange Zeit. Von der Optimierung will ich gar nicht erst reden. Und es ist nicht notwendig...

 
decanium:

Mein EA auf M15 von Juni bis September auf allen Ticks im Tester benötigt 24 Stunden pro Durchgang. Das ist eine lange Zeit. Ich spreche nicht einmal von der Optimierung. Und das ist auch gar nicht nötig.

Und die Multicurrency auf M5 auf die Eröffnungskurse auf der 9-Monats-Historie verbringt 20 Minuten für 15000 Durchgänge der Genetik. Aber auch das ist kein Indikator. Vieles hängt von der Anzahl der verwendeten Indikatoren ab...
 
decanium:

23 Durchgänge in 30 Minuten sind also eine lange Zeit...? Interessant.

Mein EA auf M15 von Juni bis September auf alle Zecken im Tester verbringt einen Tag für einen Durchgang. Das ist eine lange Zeit. Ich werde nicht einmal über die Optimierung sprechen. Und das ist auch gar nicht nötig.

Das Wichtigste ist, dass ich gezeigt habe, wie sich die Geschwindigkeit während der Entwicklung des Expert Advisors verschlechtert hat. Im Allgemeinen bezweifle ich einen EA, der Ticks verwendet, weil Ticks generiert werden und nichts mit der Geschichte zu tun haben.

mikel:
Und ich habe eine Multicurrency EA auf M5 auf Eröffnungskurse auf einer 9-Monats-Historie verbringt 20 Minuten auf 15000 genetische Pässe. Aber es ist auch kein Indikator. Vieles hängt von der Anzahl der verwendeten Indikatoren ab...

Aber ist es möglich, die Leistung des EA in der Historie deutlich zu beschleunigen, indem man die berechneten Daten der Indikatoren aufbereitet und in einer Datei speichert?

 
-Aleks-:

Vor allem habe ich gezeigt, wie sich die Geschwindigkeit im Laufe der Entwicklung des EA verschlechtert hat. Ein EA, der auf Ticks arbeitet - ich bezweifle, dass solche EAs überhaupt funktionieren, da Ticks generiert werden und nichts mit der Geschichte zu tun haben.

Ist es möglich, die Arbeit des EA mit der Historie erheblich zu beschleunigen, indem die berechneten Daten der Indikatoren aufbereitet und in einer Datei gespeichert werden?

Es ist wahrscheinlich, dass die Lesegeschwindigkeit von der Festplatte langsamer ist als die Berechnungsgeschwindigkeit des optimierten Indikators. Und was ist mit den Berechnungen der Fernagenten? Möchten Sie ihnen die berechneten Indikatoren übermitteln? In Ihrem Fall gibt es viele Möglichkeiten, die Geschwindigkeit der Ausführung zu optimieren. Sie müssen unnötige Schleifen vermeiden. + zu überlegen, ob es so kritisch ist, alle Aktionen bei jedem Tick auszuführen, vielleicht reicht es aus, es auf "neues Balkenereignis" zu beschränken.

 
micle:

Es besteht die Möglichkeit, dass die Lesegeschwindigkeit von der Festplatte gegenüber der Berechnungsgeschwindigkeit des optimierten Indikators ins Hintertreffen gerät. Und wie sieht es mit den Berechnungen für die Fernagenten aus? Möchten Sie ihnen die berechneten Indikatoren übermitteln? In Ihrem Fall gibt es viele Möglichkeiten, die Geschwindigkeit der Ausführung zu optimieren. Sie müssen unnötige Schleifen vermeiden. + zu überlegen, ob es so kritisch ist, alles bei jedem Tick zu tun, vielleicht reicht es, mit "new bar event" zu begrenzen.

Können wir die Daten nicht einmal lesen, ein Array daraus erstellen und später darauf zugreifen?

Was meinen spezifischen EA betrifft, so erinnere ich daran, dass ich ihn anhand von Eröffnungskursen optimiert habe - d. h. offenbar ohne Ticks. Und was das Denken angeht, so zahle ich schließlich an den Appliciant/Developer für die Optimierung meines eigenen Codes, aber ohne die Überprüfung von Ereignissen, die in der EA-Aktion aufgetreten sind, die eine deutliche Geschwindigkeitssteigerung im Optimierer verspricht, hoffe ich, dass es so ist.

Ich hoffe es! Danke für den klugen Rat!

Ich möchte eine Frage stellen, wenn 20 EAs gleichzeitig im Moment der Balkeneröffnung arbeiten, wird es nicht eine Spitzenverlangsamung und Fehler bei der Auftragseröffnung verursachen, weil sich der Preis während der Datenschätzung drastisch ändert?

 
-Aleks-:

Können wir die Daten nicht einmal lesen, ein Array daraus erstellen und später darauf zugreifen?

Während der Prüfung wird die Historie durchlaufen. Emulation des Handels: Der Expert Advisor empfängt bei jeder nächsten Zählung (Expert Advisor Call) nur die Daten, die bereits empfangen wurden. Im Falle der Datei steht ihr die gesamte Historie des Indikators zur Verfügung, einschließlich der Zukunft, die sie bei zukünftigen Aufrufen erwartet. Übrigens wird das Array in diesem Fall sehr viel Speicherplatz belegen. Ich versichere Ihnen, dass dies nicht die Richtung ist, die wir bei der Optimierung einschlagen sollten. Zumindest nicht in diesem Fall.


-Aleks-:

Ich habe eine relevante Frage: Wenn 20 EAs gleichzeitig im Moment der Balkeneröffnung arbeiten, wird dies nicht zu einer Spitzenverlangsamung und zu Fehlern bei der Auftragseröffnung führen, weil sich der Preis während der Datenberechnung stark ändert?

Wenn alle 20 EAs mit demselben Symbol arbeiten, ja. Sie werden fast gleichzeitig mit den Berechnungen beginnen. Aber das müssen wir berücksichtigen:

- Jeder von ihnen wird in einem separaten Thread ausgeführt. Im Falle einer 4-Kern-Computer-Konfiguration können 4 davon gleichzeitig ausgeführt werden und haben fast keinen gegenseitigen Einfluss.

- Die Zeit, die für eine einzige Berechnung benötigt wird, ist höchstwahrscheinlich unvergleichlich kurz im Vergleich zu der Zeit, die für das Senden eines Handelsauftrags benötigt wird. Aus diesem Grund wäre es besser, Handelsaufträge zu aktuellen Preisen asynchron zu senden (wenn mehrere von ihnen in einem Durchgang generiert werden können). So muss nicht erst das Ergebnis der ersten Bestellung abgewartet werden, bevor die zweite abgeschickt werden kann. Aber auch hier kann es verschiedene Möglichkeiten geben. Alles hängt von der Handelsstrategie ab.


Im Falle von Expert Advisors, die auf verschiedenen Symbolen laufen, werden die Ticks und der neue Balken meistens nicht gleichzeitig auftreten.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
micle:

Bei der Prüfung wird ein Durchlauf durch die Historie durchgeführt. Emulation des Handels: Bei jedem nächsten Countdown (Aufruf des Expert Advisors) erhält er nur die Daten, die er bereits erhalten hätte. Im Falle der Datei steht ihr die gesamte Geschichte des Indikators zur Verfügung, einschließlich der Zukunft, die sie bei zukünftigen Aufrufen erwartet. Übrigens wird das Array in diesem Fall sehr viel Speicherplatz belegen. Ich versichere Ihnen, dass dies nicht die Richtung ist, die wir bei der Optimierung einschlagen sollten. Zumindest nicht in diesem Fall.

Wenn alle 20 Expert Advisors auf ein und demselben Tool ausgeführt werden, ja. Sie werden fast gleichzeitig mit den Berechnungen beginnen. Aber das müssen wir berücksichtigen:

- Jeder von ihnen wird in einem separaten Thread ausgeführt. Bei einer 4-Kern-Rechnerkonfiguration können 4 gleichzeitig ausgeführt werden, ohne sich gegenseitig zu beeinflussen.

- Die Zeit für eine einzelne Berechnung ist wahrscheinlich unvergleichlich kurz mit der Zeit für das Absenden eines Handelsauftrags. Aus diesem Grund wäre es besser, Handelsaufträge für aktuelle Preise (wenn mehrere von ihnen in einem Durchgang generiert werden können) asynchron zu senden. So muss nicht erst das Ergebnis der ersten Bestellung abgewartet werden, bevor die zweite abgeschickt werden kann. Aber auch hier kann es verschiedene Möglichkeiten geben. Es hängt alles von der Handelsstrategie ab.

Im Falle von Expert Advisors, die mit verschiedenen Symbolen arbeiten, treten die Ticks und ein neuer Balken normalerweise nicht gleichzeitig auf.

Habe ich es richtig verstanden, dass wir das Senden von Aufträgen an offene Aufträge künstlich verzögern sollten, ohne auf die Bestätigung zu warten, dass sie geöffnet wurden?

 
-Aleks-:

Gehe ich recht in der Annahme, dass es eine künstliche Verzögerung geben sollte, wenn Aufträge an offene Aufträge gesendet werden, ohne jedoch auf die Bestätigung zu warten, dass sie geöffnet wurden?

Es besteht keine Notwendigkeit, künstliche Verzögerungen vorzunehmen. Das Internet und der Makler werden das für Sie tun...
 

micle:
никаких искусственных задержек делать не нужно. Это за вас сделает интернет и брокер... 

Ich spreche von der Situation, die beim manuellen Handel auftritt - man sendet eine Anfrage zur Eröffnung einer Order und wartet, dass sie bearbeitet wird. Manchmal wartet man eine Minute und wenn man versucht, eine weitere Order zu senden, wird geschrieben "Kanal ist besetzt", was dazu führt, dass in der Regel die erste Order aufgrund von Preisänderungen nicht geöffnet wird und die zweite Order nicht vom Terminal gesendet wurde (oder der Broker hat sie nicht akzeptiert?).Wie wird sich der EA in einem solchen Fall verhalten? Müssen besondere Vorschriften gemacht werden, oder wird er in der Lage sein, Aufträge zu senden, ohne auf ihre Ausführung zu warten?