Discussione sull’articolo "Manuale MQL5: Controlli della finestra secondaria dell'indicatore - Pulsanti" - pagina 5

 
tol64:

Siete d'accordo ora? )

Onestamente, non capisco perché l'indicatore debba smettere di tracciare il movimento del mouse dopo aver disabilitato l'Expert Advisor. Dov'è il collegamento tra l'indicatore e l'Expert Advisor?
 
C-4:
Onestamente, non capisco perché l'indicatore debba smettere di tracciare il movimento del mouse dopo aver disabilitato l'Expert Advisor. Dov'è il collegamento tra l'indicatore e l'Expert Advisor?

Questo è il punto, potrebbe non esserci alcun collegamento tra loro, quindi ogni programma quando si scarica deve disabilitare ciò di cui altri programmi potrebbero non avere bisogno. In questo caso, se l'indicatore non ha bisogno di tracciare l'evento del movimento del mouse, perché intasare il flusso della coda di eventi?

Naturalmente non si può fare, non è necessario. Ma se parliamo di ottimizzazione, credo che sia necessario.

 
tol64:

Il punto è che potrebbe non esserci alcun collegamento tra loro, quindi ogni programma deve disattivare ciò che agli altri programmi non serve. In questo caso, se l'indicatore non ha bisogno di tracciare l'evento del movimento del mouse, perché intasare il flusso della coda di eventi?

Naturalmente non si può fare, non è necessario. Ma se parliamo di ottimizzazione, credo che sia necessario.

Vasiliy sta parlando, il programma non dovrebbe attivare/disattivare il tracciamento in modo insensato, ma:

  • Attivarlo solo se è disabilitato (questo non è critico).
  • Al termine del lavoro, tornare allo stato in cui si trovava (il tracciamento).

Cioè, la disabilitazione dovrebbe avvenire solo se il tracciamento era disabilitato all'avvio del programma.

In questo modo, qualsiasi combinazione di avvio/arresto di programmi con/senza tracciamento degli eventi del mouse funzionerà correttamente.

 
tol64:

Il punto è che potrebbe non esserci alcun collegamento tra loro, quindi ogni programma deve disattivare ciò che agli altri programmi non serve. In questo caso, se l'indicatore non ha bisogno di tracciare l'evento del movimento del mouse, perché intasare il flusso della coda di eventi?

Naturalmente non si può fare, non è necessario. Ma se parliamo di ottimizzazione, credo che sia necessario.

Nel vostro esempio, cioè, l'Expert Advisor ha deciso che l'indicatore non ha più bisogno di ricevere l'evento EVENT_MOVE_MOUSE e lo ha disattivato prima della sua uscita. Quindi, su quale base l'Expert Advisor decide cosa serve agli altri indicatori e cosa no? Non è che si prende troppe responsabilità?
 
komposter:

Vasily ha colto nel segno: il programma non dovrebbe attivare/disattivare il tracciamento in modo insensato, ma dovrebbe attivarlo solo se è disabilitato (questo non è critico):

  • Abilitarlo solo se è disabilitato (questo non è critico).
  • Al termine del lavoro, tornare allo stato in cui si trovava (il tracciamento).
Cioè, la disabilitazione deve essere fatta solo se il tracciamento era disabilitato all'avvio del programma.

Quindi ho fatto in questo modo.

Il programma in cui il tracciamento è abilitato all'avvio, lo disabilita allo scarico. Il programma che rimane sul grafico e ha bisogno del tracciamento controlla se è abilitato e, se è disabilitato, lo abilita.

È auspicabile fornire la propria variante sugli esempi di codice dell'Expert Advisor e dell'indicatore contenuti nel mio post alla pagina precedente, per escludere l'ambiguità delle affermazioni.

 
C-4:
Nel tuo esempio l'Expert Advisor ha deciso che l'indicatore non ha più bisogno di ricevere l'evento EVENT_MOVE_MOUSE e lo ha disattivato prima della sua uscita. Su quale base l'Expert Advisor decide cosa serve agli altri indicatori e cosa no? Non si assume troppe responsabilità?

L'esperto decide da solo. Ma in realtà mi piace di più la tua variante. Cioè, è più corretta. Non ho scritto di come farlo meglio, ma della necessità di farlo. Non è necessario girarla. Punto e basta.

 
tol64:
L'esperto decide da solo. Ma in realtà mi piace di più la tua opzione. Non stavo parlando del modo migliore per farlo, ma della necessità di farlo. Non c'è bisogno di girarlo. Non c'è bisogno di girarlo.
Quindi, se nessuno spegnerà questo evento, non c'è bisogno di controllare se è acceso ogni secondo. In un Expert Advisor si disattiva specificamente l'evento, in un altro si controlla la sua proprietà ogni secondo, mentre è più semplice e sicuro non scrivere nulla.
 
C-4:
Nel tuo esempio l'Expert Advisor ha deciso che l'indicatore non ha più bisogno di ricevere l'evento EVENT_MOVE_MOUSE e lo ha disattivato prima della sua uscita. Su quale base l'Expert Advisor decide cosa serve agli altri indicatori e cosa no? Non è che si fa carico di troppe cose?

Probabilmente si presume che tutti gli altri programmi siano organizzati secondo lo stesso principio e che lo attivino da soli se necessario.

Ma è così importante spegnere? Questo interruttore on/off si applica solo a un grafico. Penso che non sia un problema se lo si accende e non lo si spegne.

Poche persone si preoccuperebbero di questo. Quindi, per evitare problemi, accendetelo solo, ma non spegnetelo. Ma anche in questo caso qualcuno lo spegnerà. Quindi potete monitorarlo con un timer e accenderlo se necessario, ma non spegnerlo.

 
C-4:
Quindi se nessuno ha intenzione di spegnere questo evento...
Non c'è modo di saperlo.
 
C-4:
Quindi, se nessuno disabilita questo evento, non è necessario controllare ogni secondo se è abilitato. In un Expert Advisor si disattiva specificamente l'evento, in un altro si controlla la sua proprietà ogni secondo, mentre è più facile e sicuro non scrivere nulla.

Non necessariamente ogni secondo, c'è un'alternativa su un altro evento (già discusso). Per favore, fornisci un esempio migliore di come ho fatto qui. ) A partire dalla condizione che l'Expert Advisor ha bisogno di questo evento, ma l'indicatore no. In questo modo sarà più chiaro.

P.S. Correzione. Ho commesso un errore. )) La tua variante non è più corretta. Non si adatta affatto. Quindi è meglio fare un esempio basato sulla condizione di cui sopra.