Diskussion zum Artikel "Tipps von einem professionellen Programmierer (Teil II): Speichern und Austauschen von Parametern zwischen einem Expert Advisor, Skripten und externen Programmen" - Seite 2
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
...
Wie Sie wissen, wird der OnInit-Handler eines Expert Advisors nicht nur ausgelöst, wenn er gestartet wird, sondern auch, wenn der Zeitrahmen geändert wird. Tatsächlich werden bei jedem Wechsel des Zeitrahmens die Variablen zurückgesetzt und neu initialisiert, mit Ausnahme der Parameter des Expert Advisors.
...
Falsch. Genau das passiert im Indikator. Wenn Parameter geändert werden und das Symbol/Zeitrahmen des Charts geändert wird, wird der Expert Advisor nicht neu initialisiert.
Was nun den Informationstransfer zwischen Expert Advisors/Indikatoren/Diensten usw. angeht
Bleibt also nur EventChartCustom(...), mit all seinen Nachteilen.
Also, kreuzen Sie das Kästchen an, um den Import von dll zuzulassen und fangen Sie an, das Richtige zu tun, oder, besser, auf keinen Fall.
1) Der Artikel ist unzureichend entwickelt.
1) Ich wurde vom Moderator gelobt.
2) um die Balkenanalyse nicht wiederholt durchführen zu müssen
3) die Lebensdauer der Datei ist länger als die Lebensdauer der globalen Variablen
4) Ich habe eine der Möglichkeiten des Packens gezeigt
5) Ich benutze sie nicht
...
a) Falsch. Genau das passiert im Indikator. Wenn Parameter geändert werden und Symbol/Zeitrahmen des Charts geändert wird, wird der Expert Advisor nicht neu initialisiert.
Was nun den Informationstransfer zwischen Expert Advisors/Indikatoren/Diensten usw. betrifft.
b) Also, kreuzen Sie das Kästchen an, um den DLL-Import zuzulassen, und fangen Sie an, es richtig zu machen, oder, besser, gar nicht.
a) Ich stimme zu, dass die Reinitialisierung von Expert Advisor-Variablen nicht durchgeführt wird.
1-2) wir sprechen über den Austausch zwischen Ihrem EA und Skripten. Wenn Sie wollen, können Sie die Informationen verschlüsseln ;-)
3) der DC kann im MT4 etwas am Ende hinzufügen. Im MT5 gibt es so etwas nicht, zumindest bei mir ;-)
4) Nun, ich benutze normalerweise das Flag FILE_SHARE_READ.
b) wenn Sie es für sich selbst machen, dann wie man sagt "Flag in your hands....".
Wenn man es für den Markt macht, gehen DLLs dort nicht durch.
(a) vereinbart, dass es keine Reinitialisierung von EA-Variablen gibt
1-2) es geht um den Austausch zwischen dem Expert Advisor und Skripten. Sie können die Informationen verschlüsseln, wenn Sie wollen ;-)
3) in MT4 am Ende etwas hinzuzufügen. In MT5 gibt es so etwas nicht, zumindest nicht für mich.
4) Nun, ich benutze normalerweise das Flag FILE_SHARE_READ
b) wenn Sie es für sich selbst machen, dann, wie man sagt, "flag in your hands....".
Wenn Sie es für den Markt tun, DLLs nicht dort passieren.
1-2) Also verschlüsseln oder nicht verschlüsseln, aber man kann es immer noch ändern/löschen)))))
3) Wenn nicht ausdrücklich gesagt wird, dass man das nicht kann, dann ... Ich persönlich bin mir nicht sicher, ob ich dazu in der Lage sein werde.
4) Ich spreche nicht davon, ich spreche von der Situation der Daten-"Rennen", wenn eine Ressource von verschiedenen Threads gemeinsam genutzt wird. Führen Sie die beiden angehängten Skripte auf verschiedenen Graphen aus. Führen Sie zuerst das Schreiben aus. Dies ist die Antwort auf meine seit langem gestellte Frage zu Metaquotes. Und wieder im Zusammenhang mit dem Testergebnis, zu dem ich endlich gekommen bin (dank TC) und der Frage an sie: Wo sind die nativen Synchronisationsprimitive?
Das ist auch die Antwort darauf, warum es für einen Profi irgendwie mau ist, so etwas auf dem Markt zu machen, ohne die Kunden in großen Briefen zu warnen.
....
Alle Beispiele aus meinen Artikeln, ich habe sie arbeiten gut für mich (in meinem EA und Skripte)
Alle Beispiele aus meinen Artikeln, ich habe sie arbeiten gut für mich (in meinem EA und Skripte)
In meinem Beitrag geht es nicht darum, was nicht funktioniert, sondern um die Tatsache, dass die Sicherheit und Integrität der Daten nicht gewährleistet ist. Bei der Verwendung aller oben genannten Methoden der Datenübertragung ist die Zuverlässigkeit des Mechanismus nicht gewährleistet. Außerdem hängt dies nicht mit möglichen Fehlern von Drittsystemen zusammen (Terminal, Betriebssystem, Hardwarefehler), sondern mit der Methode selbst: Kollision von Namen oder Benutzeraktionen im Falle globaler Terminalvariablen, gleiche + Löschfunktionen für grafische Objekte, fehlende Synchronisierung für Operationen zum Lesen und Schreiben einer Datei aus verschiedenen Threads.
Ja, die Wahrscheinlichkeit dafür kann auf sehr niedrige Werte reduziert werden, aber nicht auf 0. Das sollten Sie im Hinterkopf behalten)
In meinem Beitrag geht es nicht darum, was nicht funktioniert, sondern darum, dass die Sicherheit und Integrität der Daten nicht gewährleistet ist. Bei der Verwendung aller oben genannten Methoden der Datenübertragung ist die Zuverlässigkeit des Mechanismus nicht gewährleistet. Außerdem hängt es nicht mit möglichen Fehlern von Drittsystemen zusammen (Terminal, Betriebssystem, Hardwarefehler), sondern mit der Methode selbst: Kollision von Namen oder Benutzeraktionen bei globalen Terminalvariablen, gleiche + Löschfunktionen für grafische Objekte, fehlende Synchronisierung für Operationen zum Lesen und Schreiben einer Datei aus verschiedenen Threads.
Ja, die Wahrscheinlichkeit dafür kann auf sehr niedrige Werte reduziert werden, aber nicht auf 0. Das sollten Sie im Hinterkopf behalten)
Das Speichern von Parametern in Dateien bietet 100%ige Zuverlässigkeit. Alle Ihre "Kollisionen" werden durch Präfixe von Objektnamen, einschließlich globaler Variablen, gelöst.
Zum Beispiel werden die Level-Parameter in Files\Cayman\Params\128968168864101576\exp_05_Lev607A160E_H4.txt gespeichert. Dabei ist 128968168864101576 die ChartID. Niemand außer dem Analysator dieser bestimmten Ebene kennt diese Datei. Nehmen Sie ein beliebiges Stück Code aus dem Artikel und versuchen Sie, es zu "brechen" ;-) Wenn Sie ihn brechen, werde ich Ihnen zeigen, wo Sie einen Fehler gemacht haben ;-)
Etwas wie dieses Skript in einem beliebigen EA/Indikator/Skript/Dienst, das von einem neugierigen Benutzer ausgeführt wird, und Sie haben wochenlang Spaß bei der Suche nach einem nicht reproduzierbaren Fehler, der nicht existiert)))))