Fehler, Irrtümer, Fragen - Seite 1493

 
zaskok3:
In MQL4++ komme ich nicht ohne extern aus, wenn ich Eingabeparameter programmatisch ändern muss. Wenn ich zum Beispiel einen Standardindikator in einen interaktiven Indikator umwandle, muss ich input durch extern ersetzen. Der Compiler behandelt Eingabevariablen als const und beschwert sich, wenn versucht wird, sie zu ändern. Mit extern gibt es solche Probleme nicht.
Für mich tun sie das. Ich habe auch vor langer Zeit im Handbuch gelesen, dass extern programmatisch geändert werden kann. Störung auf Störung, es ändert sich jetzt und dann nicht, es scheint, dass sie beim Einschalten zurückgesetzt werden. Ich habe aufgegeben und Kopien von extern nach global gemacht. Ich lese und kopiere nur einmal beim Programmstart und verwende global nur innerhalb des Programms. Sofort funktionierte alles wie am Schnürchen.
 
zaskok3:
Es ist schade, dass die Architektur so starr ist, dass nicht einmal eine einfache Flexibilität möglich ist. Die Interaktivität in MQL5 wird also eine Krücke benötigen. Die Frage ist, wo dann der Vorteil liegt, wenn die Sprache die Möglichkeiten einschränkt...

Du verstehst das nicht. Mit unserer Architektur haben wir eine Menge Speicherplatz eingespart.

Fragen Sie Ihre Mitmenschen, was wichtiger ist: die Schwierigkeit, 5 Zeilen Code zu kopieren, oder der Speichergewinn? Wir haben zum Beispiel nicht den geringsten Gedanken daran verschwendet

 
Slawa:

...

Was raten Sie den Besitzern von mehreren Monitoren? Wie können Sie einen effizienten Betrieb des Terminals organisieren?
 
Slawa:

Du verstehst das nicht. Mit unserem architektonischen Entwurf haben wir eine Menge Speicherplatz gespart.

Das stimmt, das verstehe ich nicht. Es gibt nur sehr wenige Informationen von Ihnen über die interne Architektur. Ehrlich gesagt kann ich nicht verstehen, wie man durch Hinzufügen des Modifikators const zu Eingabevariablen eine viel bessere Architektur mit enormen Speichereinsparungen schaffen kann. Gleichzeitig scheint es, dass eine Krücke in Form von Überschreitungen bei der Speicherzuweisung diese Einsparung noch immer bewirkt. Sie können die Vertonung automatisch erstellen und die Eingabe so behandeln, wie sie jetzt ist. Ich versuche mir nur schwer vorzustellen, was für eine Architektur es ist, die es ermöglicht, in einem so einfachen Fall "viel Speicherplatz zu sparen". Sieht aus, als würden Sie einen Vergleich mit der MT4-Architektur anstellen, die in vielerlei Hinsicht redundant und alles andere als ressourceneffizient war (z. B. bei der Neuberechnung von Zeitrahmen). Aber wir sprechen über die Angemessenheit der Architektur im Allgemeinen, nicht im Vergleich zu einem Produkt von vor N-Zehnteln eines Jahrhunderts.


Und was die Architektur anbelangt. Ich verstehe nicht, warum es kein OnMarketwatch gibt, wie bei fast allen anderen Handelsplattformen. Aus irgendeinem Grund gibt es Krücke Lösungen mit Timer oder noch mehr perverse OnChartEvent. Diese Aufgabe ist gefragt und scheint für alle Händler, die ATS erstellen, selbstverständlich zu sein. Und das geschieht absichtlich, um die interne Architektur sehr effektiv zu gestalten?


Es handelt sich nicht um eine Kritik um der Kritik willen. Ich möchte verstehen und kein Amateur sein, der sagt: "Ich weiß es nicht, die wissen es am besten".

 
zaskok3:

Ehrlich gesagt, kann ich nicht verstehen, wie das Hinzufügen eines Const-Modifikators zu Eingabevariablen eine viel bessere Architektur mit enormen Speichereinsparungen schafft.


Zwei Beiträge weiter oben wurde deutlich gesagt

Globale Speicherung von Indikatoren in der MT5 History Base. Für sie sind die Eingabeparameter entscheidend. Wenn Sie die Eingabeparameter ändern, wird der Indikator mit den alten Parametern zerstört und der gleiche Indikator mit den geänderten Parametern neu erstellt.

Was ist nicht klar? Eingabeparameter sind Schlüsselparameter für die Speicherung von Indikatorinstanzen. Wenn Sie den Schlüsselwert von innen heraus ändern, gibt es einen Widerspruch zum Index - der Index sagt eine Sache, aber in Wirklichkeit sagt er etwas anderes. Nun, Sie können externe Parameter nicht intern ändern.

Ich werfe Ihnen nicht vor, dass Sie das falsch verstanden haben - es ist ein ganz natürlicher Wunsch: "Mach es gut für mich - die anderen sind mir egal".

 

Slawa:

Es ist ein ganz natürlicher Wunsch: "Ich fühle mich gut. Ich bin es, dem die anderen egal sind".

Leider ist dieser Wunsch in der heutigen Gesellschaft ganz natürlich. Allerdings sollten Sie nicht alles über einen Kamm scheren.

Ich danke Ihnen für die wiederholte Klarstellung:

Die Eingabeparameter sind der Schlüssel zum Speichern von Indikatorinstanzen. Wenn Sie den Schlüsselwert intern ändern, gibt es einen Widerspruch zum Index - der Index sagt eine Sache, aber in Wirklichkeit sagt er etwas anderes.

Es ist nun klar, welche Architektur gewählt wird und warum sie die Unveränderlichkeit der Eingabevariablen erfordert. Ich würde auch nicht wegen eines unzufriedenen Forenfurzes eine bereits implementierte Architektur ändern. Der Furz wird es schon irgendwie schaffen, sich zu lösen... Ich möchte wissen, wie die interne Indikatorenküche in MT4 organisiert ist.


Übrigens sind Eingaben in EAs und Skripten gerade wegen der architektonischen Eigenschaft der Speicherung von Indikatoren const?


Ich würde es auch begrüßen, wenn das Fehlen von OnMarketwatch geklärt werden könnte, das von etwas mehr Menschen nachgefragt wird als der vorherige Punkt.

 
zaskok3:

Eine Erklärung für das Fehlen von OnMarketwatch, das von etwas mehr Menschen nachgefragt wird als der vorige Punkt, wäre ebenfalls sehr willkommen.

Was ist OnMarketWatch?
 
Slawa:
Was ist OnMarketWatch?
Der Fall, dass ein neuer Tick in Marketwatch ankommt. Ähnlich wie OnTick, reagiert aber nur auf neue Ticks nicht eines einzelnen Symbols, sondern aller im Market Watch eingetragenen Symbole.
 
Slawa:

...

Was raten Sie den Besitzern von mehreren Monitoren? Wie können Sie einen effizienten Betrieb des Terminals organisieren?

 
zaskok3:
Der Fall, dass ein neuer Tick in Marketwatch ankommt. Ähnlich wie OnTick, reagiert aber nicht auf neue Ticks eines Symbols, sondern auf alle Ticks, die im "Market Watch" eingetragen sind.
Meiner Meinung nach können Sie OnTimer() verwenden, um dieses Ereignis alle X Millisekunden aufzurufen.