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

 
C-4:
MT5 ha un aggiornamento asincrono delle proprietà del grafico. In altre parole, il fatto che si imposti una proprietà non significa che il terminale la rilevi immediatamente. La funzione ChartRedraw() viene utilizzata per far rileggere tutte le proprietà al terminale. È inoltre possibile utilizzare le funzioni ChartGet... ObjectGet, in questo caso anche le proprietà verranno rilette.
Non ho trovato queste informazioni da nessuna parte. Mi ci sono imbattuto, ho trovato la soluzione, ora lo saprò.
 
komposter:
Non ho trovato queste informazioni da nessuna parte. Mi ci sono imbattuto, ho trovato la soluzione e ora la saprò.

Che cos'è? All'inizio della sezione Operazioni con i grafici:

Funzioni per lavorare con i grafici. Tutte le operazioni con i grafici sono applicabili solo agli Expert Advisor e agli script.

Le funzioni che impostano le proprietà di un grafico servono in realtà a inviare comandi per modificarlo. Se queste funzioni vengono eseguite con successo, il comando viene inserito nella coda degli eventi generali del grafico. La modifica di un grafico viene eseguita durante l'elaborazione della coda di eventi del grafico in questione.

Per questo motivo, non ci si deve aspettare un aggiornamento visivo immediato del grafico dopo aver chiamato queste funzioni. In generale, l'aggiornamento del grafico viene eseguito automaticamente dal terminale in base agli eventi di cambiamento (arrivo di una nuova quotazione, modifica delle dimensioni della finestra del grafico, ecc. Per aggiornare forzatamente l'aspetto del grafico, utilizzare il comando ChartRedraw() per ridisegnare il grafico.

 
komposter:
Non ho trovato queste informazioni da nessuna parte. Mi sono imbattuto in essa, ho trovato la soluzione e ora la saprò.
Naturalmente, perché queste informazioni non sono disponibili da nessuna parte (si è scoperto che ci sono, vedi sopra:))). Io stesso sono stato tormentato da questo problema, finché non mi sono rivolto al servizio di assistenza. Mi hanno detto che le modifiche alle proprietà degli oggetti sul grafico avvengono in modo asincrono. E a giudicare dal vostro esempio, si tratta delle proprietà del grafico stesso.
 
Rosh:

Che cos'è esattamente? Qui all'inizio della sezione Operazioni con grafici:

Non ho detto che non c'è, solo che non l'ho incontrato (o l'ho dimenticato). Grazie.

Che ne dite del mio suggerimento di generare un evento CHART_CHANGE quando si cambiano le proprietà del grafico, come il flag di tracciamento degli eventi del mouse? Forse si può fare?

 
C-4:
Naturalmente, perché questa informazione non è disponibile da nessuna parte (si è scoperto che lo è, vedi sopra:))). Anch'io sono stato tormentato da questo problema, finché non mi sono rivolto all'assistenza. Mi hanno detto che le modifiche alle proprietà degli oggetti sul grafico avvengono in modo asincrono. E a giudicare dal vostro esempio si tratta delle proprietà del grafico stesso.

Per saperne di più, consultare la sezione Oggetti grafici:

Un gruppo di funzioni progettate per lavorare con gli oggetti grafici relativi a qualsiasi grafico specificato.

Le funzioni che specificano le proprietà degli oggetti grafici e le operazioni di creazione degli oggetti ObjectCreate() e di spostamento degli oggetti ObjectMove() sul grafico sono utilizzate per inviare comandi al grafico. Se queste funzioni vengono eseguite con successo, il comando viene inserito nella coda generale degli eventi del grafico. La modifica visiva delle proprietà degli oggetti grafici viene eseguita durante l'elaborazione della coda di eventi di un determinato grafico.

Per questo motivo, non ci si deve aspettare un aggiornamento visivo immediato degli oggetti grafici dopo aver chiamato queste funzioni. In generale, l'aggiornamento degli oggetti grafici sul grafico viene eseguito automaticamente dal terminale in base agli eventi di modifica (arrivo di una nuova quotazione, modifica delle dimensioni della finestra del grafico, ecc. Per l'aggiornamento forzato degli oggetti grafici, utilizzare il comando ChartRedraw() per ridisegnare il grafico.

 
Rosh:

Altro nella sezione Oggetti grafici:

Gli oggetti sono chiari e familiari, ma mi aspettavo qualcosa di diverso dalle proprietà del grafico.

Non dovrei ripetere il mio suggerimento? O dovrei sottoporlo a un servizio di assistenza?

 
All'autore un profondo ringraziamento per l'ottimo articolo.
 
MetaQuotes Software Corp.:

È stato pubblicato un nuovo articolo MQL5 Bylaw Manual: Controlli della sottofinestra dell'indicatore - Pulsanti:

Autore: Anatoli Kazharsk

Un tutorial molto bello, spero davvero che pubblicherai un po' di più su questo argomento, grazie mille!

 

Anatoli,

Voglio ringraziarti per i tuoi contributi alla comunità MQL5. I tuoi esempi mi hanno fatto progredire di diversi mesi nello sviluppo del mio codice. Ancora una volta, molte grazie.

Ho la necessità di utilizzare questo "indicatore" per i pulsanti Open Long, Open Short, Close All e Set Trailing Stop. Il mio problema è che devo interagire con il mio EA in modo da poter

1) accedere a queste funzioni all'interno dell'EA e

2) ottenere le raccomandazioni dell'EA facendo lampeggiare il pulsante "Open Long" quando il pSAR, il CCI, il MACD o altri indicatori si attivano.

Ecco la mia domanda: Come posso far comunicare l'EA con i pulsanti degli indicatori e far sì che i pulsanti degli indicatori si interfaccino con l'EA?

Grazie in anticipo,

CipherPips

 
CipherPips:

Grazie!

Credo che questa sia la versione che ti piace di più: Interfacce grafiche I: Preparazione della struttura della libreria (Capitolo 1)

Seguite la continuazione di questa serie. Ci saranno molti esempi dettagliati.