Diskussion zum Artikel "Das MQL5-Kochbuch: Steuerelemente des Indikatorunterfensters - Die Schaltflächen" - Seite 6
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
Nicht notwendigerweise jede Sekunde, es gibt eine Alternative auf einem anderen Ereignis dort (bereits diskutiert). Bitte geben Sie mir ein Beispiel, wie ich es hier gemacht habe. ) Ausgehend von der Bedingung, dass der Expert Advisor dieses Ereignis benötigt, der Indikator aber nicht. So wird es klarer.
P.S. Korrektur. Ich habe einen Fehler gemacht. )) Ihre Variante ist nicht mehr korrekt. Sie passt überhaupt nicht. Es ist also besser, ein Beispiel zu geben, das auf der obigen Bedingung basiert.
Wenn der Indikator dieses Ereignis nicht benötigt, verarbeitet er es einfach nicht. Außerdem sollte der Expert Advisor keine Ereignisse deaktivieren, die er nicht braucht. Er kann sie einschalten, aber nicht ausschalten. Denn es geht ihn nichts an, welche Ereignisse durch sein Fenster laufen und wer sie brauchen könnte.
Wenn der Indikator dieses Ereignis nicht benötigt, verarbeitet er es einfach nicht. Auch sollte der Expert Advisor keine Ereignisse deaktivieren, die er nicht benötigt. Er kann sie einschalten, aber nicht ausschalten. Denn es geht ihn nichts an, welche Ereignisse durch sein Fenster laufen und wer sie brauchen könnte.
Der Punkt ist, dass dieses Ereignis unbearbeitet sein kann (man kann es einfach vergessen). Das bedeutet aber nicht, dass die Ereignis-Warteschlange in der OnChartEvent()-Funktion nicht mit Dingen gefüllt wird, die zu einem bestimmten Zeitpunkt nicht benötigt werden.
Und das bedeutet Tausende von unnötigen Ereignissen pro Minute. Und wenn es mehrere Programme auf dem Diagramm gibt? Kein Argument?
Es werden viel weniger Ressourcen verschwendet, wenn Sie sogar jede Sekunde prüfen, ob ein Ereignis aktiviert ist, und es aktivieren, wenn es derzeit nicht aktiviert ist, aber benötigt wird. Auch kein Argument? Dann machen Sie es auf Ihre Art.
Ich habe keine Argumente mehr. ) Ich bleibe bei meiner Meinung, denn ich habe nichts gehört, was meine Meinung ändern könnte.
Nun gut. Dann habe ich eine Frage an diejenigen, die der Meinung sind, dass dieses Ereignis nicht durch das Programm, das es aktiviert hat, deaktiviert werden muss.
Warum eigentlich? )
Das ist so:
1. Warum etwas belassen, das nicht benötigt wird (Tausende von Ereignissen pro Minute)?
2. (in einer anderen Formulierung) Warum mehr Ressourcen ausgeben, wenn man weniger ausgeben kann?
Optionen wie "wenn ein Ereignis nicht benötigt wird, dann verarbeite es einfach nicht" gefallen mir persönlich überhaupt nicht. Das eine kann man nicht abschalten, das andere auch nicht, und was hat man dann davon?
Sehr geehrter Autor des Artikels, Sie versuchen vergeblich, die inneren Widersprüche Ihrer Produkte zu erklären, die Sie zu bekämpfen und "Anfängern" beizubringen versuchen.
Also, der Autor hat die schlüpfrigen Momente gezeigt, die die korrekte Arbeit seines Indikators stören können. Gut, jetzt ist es für den "Anfänger" klar:
1. Warum sollte man das, was man nicht braucht (Tausende von Ereignissen pro Minute), stehen lassen?
2. (in einer anderen Formulierung) Warum mehr Ressourcen ausgeben, wenn man weniger ausgeben kann?
Optionen wie "wenn ein Ereignis nicht benötigt wird, dann verarbeite es einfach nicht" gefallen mir persönlich überhaupt nicht. Man kann weder das eine noch das andere abschalten und was hat man davon?
Sie erhalten einen vollständig kontrollierten Code.
Sie betonen die Leistung, aber sinkt sie so sehr mit diesem aktivierten Ereignis? Um diese Frage zu beantworten, habe ich eigens einen einfachen Expert Advisor geschrieben, der dieses Ereignis testet. Nachdem ich verschiedene Kombinationen getestet habe, erhielt ich die folgende Tabelle:
Wie Sie sehen, steigt die tatsächliche Last nur dann an, wenn die eigentliche Verarbeitung dieses Ereignisses stattfindet. Es ist bemerkenswert, dass MetaTrader, gemessen an der CPU-Last, die Mausposition verfolgt, unabhängig davon, ob das Abonnement für dieses Ereignis aktiviert ist oder nicht. Im Allgemeinen stellt sich heraus, dass es sinnlos ist, hypothetische Ressourcen zu sparen, da die Mausverfolgung ohnehin durchgeführt wird.
Testen Sie den Code des Expert Advisors:
1. Sie sollten immer den Fall in Betracht ziehen, dass ein Ereignis auf dem Stapel ausgelassen wird. Wenn in dem Fall, in dem ein Ereignis ausgelassen wird, etwas Kritisches passieren kann, ist das sehr schlecht.
2. Die Anpassung des Charts an die eigenen Bedürfnisse ist schlecht. Das ist in etwa so, als würde man mit einer automatischen Handelsmaschine ohne Magie handeln.
Sehr geehrter Autor des Artikels, Sie versuchen vergeblich, die inneren Widersprüche Ihrer Produkte zu erklären, die Sie zu bekämpfen und "Anfängern" beizubringen versuchen.
Also, der Autor hat die schlüpfrigen Momente gezeigt, die die korrekte Arbeit seines Indikators stören können. Gut, jetzt ist es für einen "Anfänger" klar, dass:
...
Sie können sich noch 20 weitere Regeln einfallen lassen, um Ihre Selbstherrlichkeit zu rechtfertigen, und dann werden Sie sich definitiv selbst verwirren und Anfängern "helfen". Widersprüche und Missverständnisse wurden in diesem Fall von Ihnen beobachtet. )
Sie werden einen vollständig kontrollierten Code erhalten.
...
Er wird kontrolliert, wenn Sie ihn kontrollieren. In diesem Fall schlagen Sie vor, alles unkontrolliert zu lassen, d.h. ein Ereignis zu lassen, das im Moment nicht benötigt wird und sehr oft reproduziert werden kann. Bei einfachen Beispielen fällt es vielleicht nicht auf. Vielleicht werden Sie bei komplexeren Programmen die Notwendigkeit erkennen, alles zu deaktivieren, was nicht benötigt wird.
1. Sie sollten immer den Fall in Betracht ziehen, dass ein Ereignis auf dem Stapel ausgelassen wird. Wenn in dem Fall, in dem ein Ereignis ausgelassen wird, etwas Kritisches passieren kann, ist das sehr schlecht.
...
tol64:
Verzeihung, störe ich Sie zufällig beim Schreiben eines weiteren Tutorials oder Rezepts?
Wenn nicht, lassen Sie uns weiter über Ihren Artikel über die Steuerung im Unterfenster des Indikators diskutieren. Sie bieten also eine Massenlösung (oder eine Idee) an, wie man ein bequemes Menü in einem Indikator erstellen kann. Gut, der Zweck des Artikels ist sehr würdig! Aber wie kann ein "Anfänger" Programmierer verwenden alle dieses Arsenal? Wo kann man benutzerdefinierte Funktionen platzieren? Zeigen Sie es an einem Beispiel. Und erklären Sie gleichzeitig, was Sie im Code ändern müssen, um z. B. 5 Schaltflächen zu verwenden? Betrachten Sie es als eine Anfängerfrage.
Zum Beispiel, wenn die Ereigniswarteschlange überläuft?