Diskussion zum Artikel "Das MQL5-Kochbuch: Steuerelemente des Indikatorunterfensters - Die Schaltflächen" - Seite 4
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
Und die Tatsache, dass "Schaltflächenfunktionen in der OnInit-Funktion platziert werden" ist sehr lustig!
Aber vielleicht verstehen Sie nicht, worüber wir reden? Wenn Sie eine Taste drücken, sollte eine Benutzerfunktion ausgelöst werden, die eine Mikroaufgabe ausführt.
Also gut, lasst uns lachen. Der Artikel wurde von Ihnen geschrieben, "niemand hat Ihnen die Sprache verschlagen".
Die Erklärung in Form von Zitaten für das Unerklärliche ist also zumindest respektlos gegenüber Ihren Lesern. Fragen sollten mit Beispielen und Links zu Primärquellen beantwortet werden.
Verwirrender und überladener Code mit unnötigen Funktionen führt "Anfänger" nur in die Irre.
Und die Tatsache, dass "Schaltflächenfunktionen in der OnInit-Funktion platziert werden" ist sehr lustig!
Niemand hat Sie an der Nase herumgeführt. Willst du mir Beweise liefern? Oder besser gesagt, eine Widerlegung meiner Aussage? Zu Ihrer Information: Es ist noch nicht alles im Handbuch beschrieben. Ich meine, die Arbeit an dem Handbuch ist im Gange, es werden Ergänzungen und Korrekturen vorgenommen. Sie sollten immer alles selbst überprüfen.
Glauben Sie mir, der Code aus Ihrem Artikel ist viel "verwirrender" für Anfänger und nicht nur, was in der Diskussion zu Ihrem Artikel zu sehen ist.
Vielleicht verstehen Sie aber auch nicht, wovon wir sprechen? Wenn Sie auf eine Schaltfläche klicken, sollte eine Benutzerfunktion ausgelöst werden, um eine Mikroaufgabe auszuführen.
Ja, das habe ich wörtlich genommen. Stellen Sie Ihre Fragen etwas genauer. Aber ich rechne damit, dass meine Antwort von Ihnen ins Lächerliche gezogen werden wird, da Sie anscheinend heute eine solche Funktion haben.
In diesem Fall bestand die "Mikroaufgabe" darin, die Farbe der Schaltfläche zu ändern. Ich habe absichtlich keine zusätzlichen Funktionen hinzugefügt, um nichts Überflüssiges zu haben. Nur um den Code nicht zu überfrachten.
Eigentlich ist das Thema des Artikels nicht nur auf Schaltflächen beschränkt. Das meiste dreht sich um Diagrammereignisse. Es gibt nur wenige solcher Beispiele, also habe ich beschlossen, eines zu schreiben.
Lieber Autor des Artikels, Sie haben ihn nicht für mich geschrieben, sondern für Anfänger. Ich bin in der Tat nicht an Ihren Lösungen interessiert, aber wir sprechen über diejenigen, die die Sprache gerade erst kennenlernen. Von welchen "anderen Programmen" ist die Rede? Und wie kann die OnDeinit-Funktion eines Programms die Funktionen anderer Programme beeinflussen?
Wir diskutieren über einen Artikel und warum sind Sie so entrüstet?
Versuchen Sie, die Fragen nicht für mich, sondern für Anfänger zu beantworten - damit sie verstehen, warum und wie.
Lieber Autor des Artikels, Sie haben ihn nicht für mich geschrieben, sondern für Anfänger.
Genau so ist es.
Ich bin in der Tat nicht an Ihren Lösungen interessiert, aber wir sprechen über diejenigen, die die Sprache gerade erst kennenlernen.
Aber Sie stellen Fragen.
Von welchen "anderen Programmen" ist die Rede?
Von denen, die Sie zuvor verlinkt haben. Und Sie versuchen, meine Aussage durch Andeutungen zu widerlegen, ohne einen Beweis zu liefern.
Und wie kann die OnDeinit-Funktion eines Programms die Funktionen anderer Programme beeinflussen?
Sie tut es. Ich habe darüber geschrieben. Der Redakteur, der den Artikel veröffentlicht hat, hat es bestätigt. Sie können es auch nachprüfen und sich selbst davon überzeugen.
Wir diskutieren über den Artikel und was stört Sie so sehr daran?
Nichts. Ich warte auf eine Erwiderung auf meine Behauptung. )
Versuchen Sie, Fragen nicht für mich, sondern für Neulinge zu beantworten - damit sie verstehen, warum und wie.
Bisher gab es keine Fragen von Neulingen. Und es kann auch keine Fragen geben. Alles ist sehr klar und jede Zeile des Codes ist ausführlich kommentiert.
Wir stören das zuerst:
Das heißt, wir verfolgen jetzt keine Mausereignisse, richtig?
Führen Sie Ihren Code auf dem Diagramm aus:
Jetzt führen wir "ein anderes Programm" aus, und zwar wieder Ihren Code:
Ich vermute, da ist etwas schief gelaufen, oder ist es das, was wir tun sollen?
Jetzt löschen wir einen der Indikatoren und laut dem Autor des Codes haben wir die "Mausverfolgung" verloren, aber das passiert nicht:
Wenn Sie sich nicht qualifizieren, weiß ich nicht, wer es dann tut? Danald Knuth? Bill Gates?
Ich habe nur versucht, ein Kompliment zu bekommen. Es hat funktioniert.)
Ich verstehe. Aber was nicht klar ist, ist, dass die führenden Produkte des Marktes, die von Ihnen geschaffen wurden, nicht Ihnen gehören. Ist das nicht eine Schande?
1. Es ist noch nicht Abend)
2. Mein Kunsthandwerk ist auch ständig an der Spitze, obwohl es in keinem Vergleich mit der Tafel steht.
3. Der Erfolg der Tafel ist größtenteils auf die Bemühungen des Urhebers der Idee zurückzuführen, so dass es nicht richtig ist zu sagen, dass es mein Produkt ist.
4. Ich habe nicht umsonst gearbeitet)
...
jetzt löschen wir einen der Indikatoren und laut dem Autor des Codes haben wir die "Mausverfolgung" verloren, aber das passiert nicht:
Prüfen Sie nun, ob das Ereignis OnDeinit() in den Indikatoren ausgelöst wird. Das ist der interessante Punkt, den ich bereits erwähnt habe. :) Nämlich in OnDeinit(), im Beispiel aus dem Artikel, ist das Motion Tracking Event deaktiviert. Seit einigen Builds scheint OnDeinit() in Indikatoren überhaupt nicht mehr zu funktionieren. Das ist ein Bug und wir sollten die Entwickler darüber informieren.
Um sicherzugehen, dass meine Aussage korrekt ist, müssen wir einen leeren Expert Advisor erstellen (die Funktion OnDeinit() funktioniert in Expert Advisors), in dem es ausreicht, diese Codezeile (hervorgehoben) hinzuzufügen:
//---
Wenn Sie nun den Expert Advisor entfernen, während sich der Indikator aus dem Artikel im Chart befindet, wird die Verfolgung des Bewegungsereignisses im Indikator ebenfalls deaktiviert sein.
Zu diesem Punkt:
Da muss etwas schief gelaufen sein, oder ist das so vorgesehen?
Es ist bekannt. Es ist nicht so konzipiert, es ist nur in diesem Artikel nicht berücksichtigt. Der Artikel ist, wie immer, ein einfaches Beispiel, keine fertige Lösung für alle Fälle. )
Generell scheint dieser Code sehr problematisch zu sein. Es gibt keinen wirklichen Grund, die Verfolgung der Mausbewegungen beim Deaktivieren des Expert Advisors/Indikators auszuschalten. Wenn Sie sich so viel Mühe machen wollen, sollten Sie den Zustand wiederherstellen, der vor dem Start des Expert Advisors bestand:
Im Allgemeinen scheint dieser Code recht problematisch zu sein. Es gibt keinen wirklichen Grund, die Verfolgung von Mausbewegungen auszuschalten, wenn der Expert Advisor/Indikator deaktiviert wird.
Nein, Sie liegen falsch. Es gibt echte Gründe, die Mausverfolgung zu deaktivieren. Und ich werde es jetzt beweisen. )
Sie haben zum Beispiel zwei Programme in einem Chart laufen. Den Expert Advisor, bei dem Sie die Mausbewegung verfolgen müssen. Und einen Indikator, bei dem Sie das Mausbewegungsereignis nicht verfolgen müssen, aber einige andere Chart-Ereignisse verfolgen müssen.
Führen Sie nun diesen Code des Expert Advisors aus:
Darin ist während der Initialisierung in der Funktion OnInit() die Verfolgung des Mausbewegungsereignisses aktiviert. Die Zeile in der Funktion OnDeinit(), in der dieses Tracking deaktiviert werden soll, ist jedoch absichtlich auskommentiert.
Laden Sie den Indikator auch in den Chart. Hier ist sein Code:
Sowohl das erste als auch das zweite Programm gibt eine Meldung in das Protokoll aus, dass das Ereignis empfangen wurde. Entfernen Sie nun den Expert Advisor aus dem Chart. Nehmen wir an, dass Sie einige Berechnungen mit seiner Hilfe durchgeführt haben und ihn nicht mehr benötigen. Da das Ereignis zur Verfolgung der Mausbewegung nicht deaktiviert wurde, empfängt der Indikator dieses Ereignis auch nach seiner Entfernung weiterhin. Und Sie brauchen es nicht mehr.
Sind Sie jetzt einverstanden? )