Diskussion zum Artikel "Das MQL5-Kochbuch: Steuerelemente des Indikatorunterfensters - Die Schaltflächen" - Seite 5

 
tol64:

Sind Sie jetzt einverstanden? )

Um ehrlich zu sein, verstehe ich nicht, warum der Indikator aufhören sollte, die Mausbewegung zu verfolgen, nachdem er den Expert Advisor deaktiviert hat? Wo ist die Verbindung zwischen dem Indikator und dem Expert Advisor?
 
C-4:
Um ehrlich zu sein, verstehe ich nicht, warum der Indikator nach dem Deaktivieren des Expert Advisors die Mausbewegung nicht mehr verfolgen sollte? Wo ist die Verbindung zwischen dem Indikator und dem Expert Advisor?

Das ist der Punkt, es kann keine Verbindung zwischen ihnen geben, so dass jedes Programm beim Entladen deaktivieren muss, was andere Programme nicht brauchen. In diesem Fall, wenn der Indikator die Verfolgung der Mausbewegung nicht braucht, warum den Fluss der Ereigniswarteschlange blockieren?

Sie dürfen es natürlich nicht tun, es ist nicht notwendig. Aber wenn wir über Optimierung sprechen, halte ich es für notwendig.

 
tol64:

Der Punkt ist, dass es möglicherweise keine Verbindung zwischen ihnen gibt, so dass jedes Programm deaktivieren muss, was andere Programme nicht brauchen. In diesem Fall, wenn der Indikator nicht das Mausbewegungsereignis verfolgen muss, warum den Fluss der Ereigniswarteschlange blockieren?

Sie dürfen es natürlich nicht tun, es ist nicht notwendig. Aber wenn wir über Optimierung sprechen, halte ich es für notwendig.

Vasiliy spricht davon, dass das Programm das Tracking nicht gedankenlos aktivieren/deaktivieren sollte, sondern:

  • es nur dann einschalten, wenn es deaktiviert ist (dies ist nicht kritisch)
  • nach Beendigung der Arbeit wieder in den Zustand zurückkehren, in dem es (Tracking) war.

D.h. die Deaktivierung sollte nur erfolgen, wenn das Tracking beim Start des Programms deaktiviert war.

Dann funktioniert jede Kombination von Start/Stopp von Programmen mit/ohne Mausereignisverfolgung korrekt.

 
tol64:

Der Punkt ist, dass es möglicherweise keine Verbindung zwischen ihnen gibt, so dass jedes Programm deaktivieren muss, was andere Programme nicht brauchen. In diesem Fall, wenn der Indikator nicht das Mausbewegungsereignis verfolgen muss, warum den Fluss der Ereigniswarteschlange blockieren?

Sie dürfen es natürlich nicht tun, es ist nicht notwendig. Aber wenn wir über Optimierung sprechen, halte ich es für notwendig.

Aha, d.h. in Ihrem Beispiel hat der Expert Advisor entschieden, dass der Indikator das Ereignis EVENT_MOVE_MOUSE nicht mehr empfangen muss, und hat es vor seinem Beenden deaktiviert. Auf welcher Grundlage entscheidet der Expert Advisor also, was andere Indikatoren brauchen und was nicht? Nimmt er nicht zu viel auf sich?
 
komposter:

Vasily hat ein gutes Argument: Das Programm sollte das Tracking nicht willkürlich aktivieren/deaktivieren, sondern:

  • Aktivieren Sie es nur, wenn es deaktiviert ist (dies ist nicht entscheidend).
  • nach Beendigung der Arbeit den Zustand wiederherstellen, in dem es sich befand (Tracking).
D.h. die Deaktivierung sollte nur dann erfolgen, wenn das Tracking beim Start des Programms deaktiviert war.

Ich habe es also folgendermaßen gemacht.

Das Programm, bei dem die Nachverfolgung beim Start aktiviert ist, deaktiviert sie beim Entladen. Und das Programm, das auf der Karte verbleibt und Tracking benötigt, prüft, ob es aktiviert ist, und wenn es deaktiviert ist, aktiviert es es.

Es ist wünschenswert, Ihre Variante zu den Beispielen des Expert Advisors und des Indikator-Codes aus meinem Beitrag auf der vorherigen Seite zu geben , um Mehrdeutigkeit der Aussagen auszuschließen.

 
C-4:
Aha, d.h. in Ihrem Beispiel hat der Expert Advisor entschieden, dass der Indikator das Ereignis EVENT_MOVE_MOUSE nicht mehr benötigt und hat es vor dem Beenden deaktiviert. Auf welcher Grundlage entscheidet der Expert Advisor, was andere Indikatoren brauchen und was nicht? Nimmt er nicht zu viel auf sich?

Der Experte entscheidet für sich selbst. Aber Ihre Variante gefällt mir eigentlich besser. Das heißt, sie ist richtiger. Ich habe nicht darüber geschrieben, wie man es besser machen kann, sondern über die Notwendigkeit davon. Man muss es nicht umdrehen. Punktum.

 
tol64:
Der Experte entscheidet selbst. Aber eigentlich gefällt mir Ihre Option besser. Ich habe nicht davon gesprochen, wie man es am besten macht, sondern davon, dass es notwendig ist. Sie müssen es nicht umdrehen. Punktum.
Wenn also niemand dieses Ereignis ausschaltet, ist es nicht nötig, jede Sekunde zu prüfen, ob es eingeschaltet ist. In einem Expert Advisor deaktivieren Sie das Ereignis ausdrücklich, und in einem anderen überwachen Sie seine Eigenschaft jede Sekunde, während es einfacher und sicherer ist, überhaupt nichts zu schreiben.
 
C-4:
Aha, d.h. in Ihrem Beispiel hat der Expert Advisor entschieden, dass der Indikator das Ereignis EVENT_MOVE_MOUSE nicht mehr benötigt und hat es vor dem Beenden deaktiviert. Auf welcher Grundlage entscheidet der Expert Advisor, was andere Indikatoren brauchen und was nicht? Nimmt er nicht zu viel auf sich?

Man geht wohl davon aus, dass alle anderen Programme nach dem gleichen Prinzip aufgebaut sind und ihn bei Bedarf selbst einschalten.

Aber ist es denn so wichtig, abzuschalten? Dieser Ein/Aus-Schalter gilt nur für eine Karte. Ich denke, es ist keine große Sache, wenn Sie ihn nur einschalten und nicht ausschalten.

Nur wenige Leute würden sich daran stören. Um also Probleme zu vermeiden, schalten Sie ihn nur ein, aber nicht aus. Andererseits wird jemand das Gerät ausschalten. Sie können ihn also mit einer Zeitschaltuhr überwachen und ihn bei Bedarf einschalten, aber nicht ausschalten.

 
C-4:
Wenn also niemand dieses Ereignis abschalten wird...
Das kann man nicht wissen.
 
C-4:
Wenn also niemand dieses Ereignis deaktiviert, ist es nicht notwendig, jede Sekunde zu prüfen, ob es aktiviert ist. In einem Expert Advisor deaktivieren Sie das Ereignis ausdrücklich, in einem anderen überwachen Sie seine Eigenschaft jede Sekunde, während es einfacher und sicherer ist, überhaupt nichts zu schreiben.

Nicht unbedingt jede Sekunde, es gibt eine Alternative bei einem anderen Ereignis (bereits diskutiert). Geben Sie bitte ein besseres Beispiel dafür, wie ich es hier gemacht habe. ) Ausgehend von der Bedingung, dass der Expert Advisor dieses Ereignis braucht, der Indikator aber nicht. So wird es klarer.

P.S. Berichtigung. Ich habe einen Fehler gemacht. )) Ihre Variante ist nicht mehr korrekt. Sie passt überhaupt nicht. Gib also besser ein Beispiel, das auf der obigen Bedingung basiert.