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

 
Urain:

Ich würde wirklich gerne wissen, wer MetaQuotes ist, kann ich eine Nachricht hinterlassen?


Jeden. Das ist unsere Anekdote aus dem Sitzungssaal. Das ist einer von ihnen.
 

Ich habe einen kurzen Blick auf den Code geworfen. Eine Passage aus einem Gedicht von Lermontov kam mir sofort in den Sinn:

Земля тряслась - как наши груди,
Pferde und Menschen mischten sich in einen Haufen,
Und die Salven von tausend Kanonen
Fiel hinein. und das Heulen von tausend Kanonen...

Nun zu Ihrer Frage:

-Aleks-:

In der Phase der Strategieverfeinerung und vor allem der Taktik müssen Sie alle möglichen Ergänzungen bestellen, um die Idee zu testen. In dieser Phase ist es durchaus möglich, die Langsamkeit des Expert Advisors zu tolerieren.

Aber ich war überrascht, dass die Geschwindigkeit 6 Mal langsamer war als bei der Hauptversion des EA. Die Optimierung derEA-Abstimmung ist zumindest für die analytische Datenerfassung erforderlich.

Bin ich richtig zu verstehen, dass es unmöglich ist, den Code anderer Leute zu lesen und es besser ist, eine andere Version des EA zu bestellen, nachdem wir eine erfolgreiche erhalten, aber es muss von Grund auf neu geschrieben werden, und nur in diesem Fall können wir sicher sein, von hoher Geschwindigkeit und Zuverlässigkeit? Persönlich denke ich, dass die Aufgabe des Compilers darin besteht, doppelte Operationen zu vermeiden, zum Beispiel...

Ich spreche nicht von diesem Code, sondern ganz allgemein. Sie widerlegen also diese Aussage?

Wenn Sie einen Programmierer beauftragen, der im Stil von "Pferde und Menschen verwechselt" schreibt - müssen Sie nicht zwei- oder dreimal umschreiben, sondern ständig und immer zu 100 %, für alle steigenden Budgets. Wenn Sie Profis beauftragen, müssen Sie bei einer Änderung der Anforderungen um 20 %, 40 % oder sogar 80 % den Code nicht nur nicht komplett neu schreiben, sondern sogar zu demselben Prozentsatz wie der der Änderungen. Aber mit einem Budget von "<$50" können Sie es vergessen.

 
-Aleks-:

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

Sie haben das falsch verstanden. Es sollte keine künstlichen Verzögerungen geben. MT5 hat ein einfaches Ereignismodell, das anstelle von Verzögerungen durch sleep() verwendet werden sollte.
 
micle:
Natürlich sollte der Expert Advisor alle Fehler beim Senden von Aufträgen behandeln. Im einfachsten Fall - um eine Meldung über das erfolglose Öffnen des Auftrags anzuzeigen. In der fortgeschrittenen Version entscheidet sie über weitere Maßnahmen.

Ich brauche also einen EA, der mich ersetzt, und weitere Aktionen sind hier sehr wichtig... Es ist jedoch nicht sicher, dass sie rechtzeitig erfolgen (z. B. hat sich der Preis bereits sehr weit vom berechneten Einstiegspunkt entfernt).

sergeev:

Ich habe es nicht senden lassen. Bitten Sie den Programmierer, IsTradeContextBusy zur Überprüfung zu verwenden.

Danke für den Hinweis, aber über genau diese Feinheiten habe ich im nächsten Thema gesprochen. Woher soll ich das wissen?

sergeev:

Wenn Sie den 509-Build verwenden, gibt es dort 8 Threads. Die Situation mit IsTradeContextBusy sollte nicht auftreten.

Falls ja, siehe den obigen Punkt.

Sie können auch mehr als ein Terminal verwenden.

Ich verstehe nicht, hat die Anzahl der Terminals einen Einfluss darauf, wie ein Auftrag weitergegeben wird? Ich meine, wir können mehrere Terminals für ein und dasselbe Konto starten und einen Auftrag zur Eröffnung eines Auftrags von jedem Terminal senden, und wenn die Hälfte von ihnen zusammenbricht, wird die andere Hälfte den Auftrag erfolgreich ausführen? Ich dachte, der Auftrag muss vom DC verarbeitet werden und erst dann den nächsten annehmen...

C-4:

Ich habe einen kurzen Blick auf den Code geworfen. Eine Passage aus einem Gedicht von Lermontov kam mir sofort in den Sinn:

Nun zu Ihrer Frage:

Wenn Sie einen Programmierer beauftragen, der im Stil "Menschen und Pferde verwechselt" schreibt, müssen Sie es nicht zwei- oder dreimal umschreiben, sondern ständig und immer zu 100 %, für das immer größer werdende Budget. Wenn Sie sich an Fachleute wenden, müssen Sie bei einer Änderung der Anforderungen um 20 %, 40 % oder sogar 80 % den Code nicht nur nicht vollständig, sondern sogar zu demselben Prozentsatz wie die Änderungen neu schreiben. Aber mit einem Budget von "<$50" können Sie es vergessen.

Im Moment kostet es mich mehr als 100 Dollar, und ich weiß, dass ich noch mehr dazu tun werde. Die Rechnung geht folgendermaßen auf:

10 Überarbeitungen zu 30 $ kosten 300 $, 10 zu 50 $ kosten 500 $. Eine Ersparnis von etwa 200 Dollar ist für mich sehr wichtig. Aber wenn ich damit zufrieden bin, kann ich einen EA von Grund auf neu bestellen(wobei ich unnötige Dinge entferne), und der wird etwa 80 Dollar kosten. Dieser Ansatz rechtfertigt sich, vor allem wenn die Entwicklung im Gange ist. Abgesehen von den Nerven, die man strapazieren muss... aber das ist Glückssache.

C-4:
Das ist ein Irrtum. Es sollte keine künstlichen Verzögerungen geben. MT5 hat ein einfaches Ereignismodell, das anstelle der sleep()-Verzögerungen verwendet werden sollte
Ich spreche über MT4, so dass Sie bestätigen, dass wir "Bombe" die Brokerage-Unternehmen, die Aufträge aus seiner "Puffer" verarbeiten wird und lehnen sie ab, wenn der Preis stark bewegt?
 
-Aleks-:

Danke für den Hinweis, aber das sind die Nuancen, die ich im nächsten Thread besprochen habe. Woher soll ich sie kennen?

Ich muss nicht in sie hineingehen und nach etwas suchen.
Wenn jemand einen Hinweis darauf gibt, wie es sein sollte, und Sie stellen fest, dass es in Ihrem Code fehlt, sollten Sie besser den Programmierer stillschweigend wechseln. Legen Sie keine Verzweigungen an.

Ich verstehe nicht, hat die Anzahl der Terminals einen Einfluss darauf, wie ein Auftrag weitergeleitet wird? D.h. man kann mehrere Terminals auf demselben Konto starten und einen Auftrag zur Eröffnung eines Auftrags von jedem von ihnen senden, und wenn die Hälfte von ihnen blockiert wird, wird die andere Hälfte den Auftrag erfolgreich ausführen?

Die Anzahl der Terminals ist gleich der Anzahl der zu sendenden Threads. 10 Terminals senden 1 Auftrag - es werden 10 Aufträge erteilt.

 
-Aleks-:

Ich brauche also einen EA, der mich ersetzt, also sind weitere Aktionen sehr wichtig... aber es ist nicht sicher, dass sie rechtzeitig erfolgen (z. B. hat sich der Kurs bereits sehr weit vom berechneten Einstiegspunkt entfernt).

Im Moment kostet mich der Expert Advisor mehr als 100 Dollar und ich weiß, dass ich noch mehr hinzufügen werde. Das ist also die Rechnung:

10 Überarbeitungen zu 30 $ ergeben einen Aufwand von 300 $, während 10 zu 50 $ einen Aufwand von 500 $ ergeben. Eine Ersparnis von etwa 200 Dollar ist für mich sehr wichtig. Aber wenn ich damit zufrieden bin, kann ich meinen Expert Advisor von Grund auf neu bestellen(indem ich Unnötiges entferne), und das wird 80 Dollar kosten. Dieser Ansatz rechtfertigt sich, vor allem wenn die Entwicklung im Gange ist. Außer, dass man seine Nerven strapazieren muss... aber es ist eine Frage des Glücks.

Das ist der falsche Ansatz für Sie.

Sie bestellen den Code für den Tester, weisen auf die Bedeutung der Geschwindigkeit der Optimierung hin und nehmen die notwendigen Verbesserungen vor. Und erst wenn die Testversion fertig ist, bestellen Sie die echte Version mit vollständig getesteter Logik und allen Änderungen/Empfehlungen.

Sie werden viel mehr Geld sparen. Nein?

 
sergeev:

Sie müssen nicht erst nachschauen und herausfinden, was was ist.
Wenn jemand einen Hinweis gegeben hat, wie es sein sollte, und Sie finden einen Mangel im Code - wechseln Sie stillschweigend den Programmierer. Legen Sie keine Verzweigungen an.

die Anzahl der Terminals - die gleiche Anzahl von Threads zu senden. 10 Terminals senden 1 Auftrag - es werden 10 Aufträge erteilt.

Und was ist mit der Maklerfirma? Schließlich ist es das Terminal, das einen festgefahrenen Auftrag hat! Was ist dann der Grund für die Übermittlung einer Vielzahl von Aufträgen?

artmedia70:

Das ist ein falscher Ansatz von Ihrer Seite.

Sie geben den Code für den Tester in Auftrag, weisen ihn auf die Bedeutung der Geschwindigkeitsoptimierung hin und führen die notwendigen Verbesserungen ein. Und erst wenn die Testversion fertig ist, bestellen Sie die echte Version mit vollständig ausgetesteter Logik und allen notwendigen Änderungen/Empfehlungen.

Sie werden viel mehr Geld sparen. Nein?

Nun, zunächst einmal habe ich nicht behauptet, dass die Geschwindigkeit des Testens sehr stark vom Tester oder der tatsächlichen Umsetzung abhängt.

Und was den Rest betrifft, so ist es das, was ich tue: Testen, Verfeinern ... oder wollen Sie sagen, dass der Preis um ein Vielfaches niedriger sein wird, wenn ich sofort schreibe "Ich bin nicht echt, sondern teste"?

 
-Aleks-:

Was ist mit der DC? Schließlich ist er derjenige, der einen Auftragsstau hat!? Welchen Sinn hat es dann, ein Bündel von Aufträgen zu verschicken?

Wenn Sie nicht ein Dutzend Bestellungen auf einmal abschicken müssen, dann bestehe ich nicht darauf.

Sie können eine nach der anderen von einem Terminal aus senden und warten, bis der Kontext frei wird, usw.

Das ganze Dutzend kann in ein paar Minuten verschickt werden.

 
sergeev:

Nein, wenn Sie nicht ein Dutzend auf einmal hochladen müssen, dann bestehe ich nicht darauf.

Sie können eine nach der anderen von einem Terminal aus senden, warten, bis der Kontext freigegeben wird, und so weiter.

Vielleicht können Sie ein ganzes Dutzend in ein paar Minuten verschicken.

Ich frage deshalb, weil ich nicht weiß, wie die Aufträge von den Maklerfirmen bearbeitet werden - parallel oder sequentiell?

 
-Aleks-:

parallel oder sequentiell?

Die Gebote gehen nacheinander ein, aber es ist nicht sicher, dass der Kauf schneller ausgeführt wird als der nächste Verkauf, da es manchmal einen anderen Liquiditätsanbieter gibt.

Aber um die Welt zu vereinfachen - denken Sie immer, dass es in Serie geht.


Der einzige Grund für diese Informationen ist, dass wir beim Thema bleiben wollen.