Mt4 Ende der Unterstützung. - Seite 39

 
George Merts:

Es lässt sich darüber streiten, ob dies ein Vorteil ist.

Versehentlich ändert jemand die Flagge - und das hat Auswirkungen auf das Verhalten des TC.

Nun, es gibt keine Möglichkeit, gegen Unfälle gefeit zu sein. Der menschliche Faktor ist unaufhaltsam.)
 
Реter Konow:

Meine ursprüngliche Aufgabe: Aufzeigen effektiver Lösungen ohne OOP.


Die Essenz meiner Lösung: - Generierung eines globalen Arrays von Event Flags neuer Bars aller Symbole und Timeframes einmal pro Minute.

Vorteile:

1. automatische Befüllung des Feldes und automatische Löschung.

2. keine Systembelastung.

3. Direkter Zugriff auf das Array von jeder Funktion aus und Speichern des Ereignisflags, bevor das Array gelöscht wird.

Scheiße, bin endlich aufgewacht....
Sie verstehen, dass ein Balken eines beliebigen Symbols zu jedem Zeitpunkt kommen kann, und die Aufgabe besteht darin, dem System im gleichen Moment mitzuteilen, dass ein neuer Balken gekommen ist. Wie stellen Sie sich das vor, wenn Sie das System einmal pro Minute abfragen?

 
Реter Konow:
Nun, wir können nicht gegen Unfälle abgesichert sein. Der menschliche Faktor ist unaufhaltsam).

Das war's. Daher bin ich der Meinung, dass der Code so geschrieben werden sollte, dass mögliche menschliche Fehler so weit wie möglich eingeschränkt werden. Eben weil der menschliche Faktor nicht reduzierbar ist. Erst gestern habe ich einen Fehler in meinem Code gefunden, aufgrund dessen die Statistiken über Expert Advisor vom Beginn der Geschichte und nicht vom angegebenen Datum (Datum der EA-Erstellung) gesammelt wurden. Ich habe einfach vergessen, die Variable zu initialisieren, und sie blieb auf Null.

Daher habe ich den Analyzer jetzt so umgestaltet, dass man das Datum angeben muss, ab dem die Analyse durchgeführt wird, und die Teilefabrik des Expert Advisors nur das Erstellungsdatum und keine anderen Daten zurückgibt.

Jetzt ist es nicht mehr möglich, den Handelsverlauf vor dem Datum der Erstellung des Expert Advisors zu analysieren. Selbst wenn in der früheren Version Geschäfte getätigt wurden, werden sie jetzt nicht mehr in die Statistik aufgenommen.

 
Nikolai Semko:
Shit, endlich aufgewacht....
Sie wissen, dass der Balken eines beliebigen Symbols zu jedem beliebigen Zeitpunkt kommen kann, und die Aufgabe besteht darin, dem System im selben Moment mitzuteilen, dass ein neuer Balken eingetroffen ist. Wie stellen Sie sich das vor, wenn Sie das System einmal pro Minute abfragen?

Warum "in diesem Moment"?

Sie, meine Freunde, haben einfach unterschiedliche Herangehensweisen an den Handel. Wenn wir mit dem M1-Zeitrahmen arbeiten, sollten wir die Information erhalten, dass ein neuer Balken eingetroffen ist - nicht "im gleichen Moment", sondern bei Ankunft einer neuen Minute. Wenn wir mit dem S1-Zeitrahmen arbeiten (hallo, Volchansky) - sollten wir diese Information bei Ankunft einer neuen Sekunde erhalten. Wenn wir an jeder Zecke arbeiten, sollten die Informationen mit der Ankunft einer neuen Zecke kommen.

Und es gibt die Option "Arbeit nach Ereignis" - aber dann sollten wir nicht die IsNewBar() Funktion haben, sondern die OnNewBar() Funktion, die eigentlich eine "Untermenge" der OnTick() Funktion ist

 
Nikolai Semko:
Shit, endlich aufgewacht....
Sie wissen, dass ein Balken eines beliebigen Symbols jederzeit eintreffen kann, und die Aufgabe besteht darin, dem System genau in diesem Moment mitzuteilen, dass ein neuer Balken eingetroffen ist. Wie stellen Sie sich das vor, wenn Sie das System einmal pro Minute abfragen?

Die Funktion iBars() gibt immer die aktuelle Anzahl der Takte zurück. Wenn es sich seit dem letzten Aufruf geändert hat, wird ein neues Bar-Ereignis an das Array übergeben, wenn es sich nicht geändert hat, wird es nicht übergeben.
 
Nikolai Semko:
Scheiße, bin endlich aufgewacht....
Sie wissen, dass jeder Symbolbalken zu jedem Zeitpunkt kommen kann, und die Aufgabe besteht darin, dem System im gleichen Moment mitzuteilen, dass ein neuer Balken gekommen ist. Wie stellen Sie sich das vor, wenn Sie das System einmal pro Minute abfragen?

Es kann also sein, dass der Balken nicht bei der Anforderung von iBars eintrifft, sondern erst einen Moment nach der Anforderung. Dann wird es dem System fehlen. Genau das ist der Punkt.


Was dann, wenn man ständig darauf zugreift? - Das ist eindeutig nicht die beste Lösung.

 
Реter Konow:

Verstehe, die Bar kommt also vielleicht nicht zum Zeitpunkt der Wahl, aber einen Moment nach der Wahl. Dann wird es dem System fehlen. Genau das ist der Punkt.

Peter, ich schlage ein anderes Thema zur Diskussion vor, zum zweiten Mal. Sie brauchen nichts zu schreiben, nur Theorie.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Mt4 Ende Unterstützung.

Alexey Viktorov, 2017.09.11 13:08

Ich glaube, ich habe ein primitives Beispiel für die Brauchbarkeit von OOP gefunden. Hier ist eine Funktion, die ein Array mit einem bestimmten Wert füllt. Je nach Art des Arrays gibt es acht Varianten.

Stellen Sie sich vor, Sie müssen eine Funktion schreiben, die eine Reihe von Parametern übergeben muss, dann eine andere, dann eine dritte... Mit dem algorithmischen Ansatz erhalten Sie N verschiedene Funktionsnamen. Es scheint, dass es nichts falsch ist, können Sie 8 solche Funktionen wie ArrayInitializeInt()ArrayInitializeDouble() und so weiter zu schreiben.Aber es ist so schön, nicht über den Typ eines Arrays nachdenken zu müssen, sondern einfach nur eine Funktion zu verwenden, und es ist sicher, das Array zu verwechseln, das man dort einfügt...


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Peter, ich schlage ein anderes Thema zur Diskussion vor, zum zweiten Mal. Sie brauchen nichts zu schreiben, nur Theorie.


Bitte warten Sie noch ein wenig. Wir werden dieses Thema in vollem Umfang verstehen, und ich werde das zweite sorgfältig lesen.
 
Реter Konow:
Einen Moment bitte. Wir werden dieses Thema voll und ganz verstehen, und ich werde mir das zweite genauer ansehen.

Wie Sie sich erinnern, wurde das Thema der neuen Leiste aufgeworfen, um die Vorteile von OOP herauszufinden, aber in keiner Weise Programmiermöglichkeiten, geschweige denn Ihre Fähigkeiten. Aber die Bemerkungen zu Ihrem Code und Algorithmus im Allgemeinen haben die Diskussion in die falsche Richtung gelenkt. Ich denke also, dass es keinen Grund gibt, sie fortzusetzen.

 
Alexey Viktorov:

Wie Sie sich erinnern, wurde das Thema der neuen Leiste aufgeworfen, um die Vorteile von OOP herauszufinden, aber nicht die Programmiermöglichkeiten, geschweige denn Ihre Fähigkeiten. Aber die Bemerkungen zu Ihrem Code und Algorithmus im Allgemeinen haben die Diskussion in die falsche Richtung gelenkt. Ich denke also, dass es keinen Grund gibt, sie fortzusetzen.

Das heißt, Sie wollen, dass ich weiterhin die Vorteile von OOP herunterspiele, und jeder hat mich weiter getrollt?) Aber im Grunde haben Sie recht. Die Diskussion ist in die falsche Richtung gegangen.