Al momento la libreria è personalizzata per un solo pannello del grafico.
Se si tenta di aggiungere due pannelli, gli eventi vengono catturati in modo errato: gli elementi hanno lo stesso Id e l'Id del genitore non viene controllato.
Per verificarlo, ho preso il file demo Controls.mq5 e ho duplicato il pannello: tutti gli eventi sono duplicati in entrambi i pannelli, anche se non dovrebbero esserlo.
ObjCAppDialog.Create(chart,name,subwin,x1,y1,x2,y2))invece di
CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))?
Nella voce "Riempimento del pannello di visualizzazione" è possibile invece utilizzare qualcosa come ?
Buon giorno, forse si può dire che cosa fare.
Il tuo esempio ekspert Controlli.
Quando si passa a un periodo diverso l'esperto viene scaricato, provato a rimuovere ExtDialog.Destroy(reason); in OnDeinit().
Potete dirmi cosa devo fare per far sì che la finestra di dialogo continui a funzionare quando si passa ad altri periodi?
- www.mql5.com
Buongiorno, forse potete dirmi cosa fare.
Il tuo esempio è un Expert Advisor Controls.
Quando si passa a un altro periodo l'Expert Advisor viene scaricato, ho provato a rimuovere ExtDialog.Destroy(reason); in OnDeinit().
Può dirmi cosa devo fare per far sì che la finestra di dialogo continui a funzionare quando si passa ad altri periodi?
IMHO, penso che sia più facile creare librerie a mano, per sapere dove e come usarle o per correggerle se qualcosa non va.
Esempio di scrittura di un pannello senza utilizzare classi standard: VirtualTradePad PositionsStyle
Ci si può chiedere perché l'uso di MQL5 Wizard per costruire una classe produca un codice che non si compila:

Come indicato nell'articolo, è necessario aggiungere manualmente questa riga di codice, il che è un po' strano per un Wizard destinato ai non-codificatori.
#include <Controls\Dialog.mqh>Inoltre :
This article will demonstrate how easy it is to create your own display panels in a separate chart subwindow using the Standard Library classes.
Penso che questo sia uno scherzo, non ?
- 2011.01.11
- MetaQuotes Software Corp.
- www.mql5.com
"Questo è un po' strano per una procedura guidata destinata ai non-codificatori".
Non credo che questa procedura guidata sia destinata ai non-codificatori.
Potrebbe far sì che voi (programmatori alle prime armi) mettiate un piede nei primi passi necessari per creare qualcosa.
Il framework MQL5 offre un sacco di potenzialità e alcune di esse potrebbero essere scoperte con le creazioni guidate
ma credo che per ottenere qualcosa di più complesso come questo esempio sia sempre necessario avere le basi della programmazione.
Ma sono d'accordo che dovrebbe essere necessario includere le cose ovvie se si deriva da una classe base...
" Questo è un po' strano per una procedura guidata destinata ai non-codificatori".
Non credo che questa procedura guidata sia destinata ai non-codificatori.
Potrebbe far sì che voi (programmatori alle prime armi) mettiate un piede nei primi passi necessari per creare qualcosa.
Il framework MQL5 offre un sacco di potenzialità e alcune di esse potrebbero essere scoperte con le creazioni guidate
ma credo che per ottenere qualcosa di più complesso come questo esempio sia sempre necessario avere le basi della programmazione.
Ma sono d'accordo che dovrebbe essere necessario includere le cose ovvie se si deriva da una classe base...
Probabilmente hai ragione, ma pensavo che MQL5 Wizard fosse stato progettato prima di tutto per i non-codificatori. In ogni caso il problema è come un bug, in quanto è necessario aggiungere codice manualmente per compilare il codice creato da Wizard.
- 2011.01.11
- MetaQuotes Software Corp.
- www.mql5.com
Ho notato che nella libreria delle GUI utente (pannelli) è copiato un modello di eventi a mio parere non del tutto riuscito:
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { ... }
Innanzitutto, non tutti gli eventi hanno un insieme di variabili corrispondenti a int, long, double e string. Da qualche parte possono esserci più variabili che descrivono l'evento, da qualche parte meno, da qualche parte non coincidono con i tipi base proposti. Infatti, vediamo conversioni costanti come int -> bool, string -> int, double -> int, ecc. E se dal punto di vista della programmazione procedurale non si può fare praticamente nulla (perché non si possono creare 1.000.000 di funzioni sovraccaricate per ogni caso ipotetico), nell'ambito dell'OOP tutto può essere fatto in modo molto più semplice ed elegante.
Ma il problema principale di OnEvent è che questo gestore di eventi è destinato a gestire gli eventi ricevuti dal grafico, mentre l'evento può essere qualsiasi cosa, come l'apertura di una nuova posizione o il cambio di quotazione. In generale, OnEvent(...) non sembra un gestore di eventi universale, IMHO. Forse gli sviluppatori sono riusciti in qualche modo a gestire i propri eventi sulla base del CWnd esistente, ma per me utilizzare la libreria standard dei pannelli è ancora problematico.
- 2010.11.10
- Samuel
- www.mql5.com
Grazie, l'ho studiato, è utile! Un momento: c'è in programma di creare una sorta di costruttore, in modo che i pannelli possano essere assemblati nel costruttore del modulo come in VS? perché non è molto comodo contare tutto a mano, forse è un segno di professionalità, ma ci vuole molto tempo)).
con le macro hanno ovviamente esagerato...
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Crea i Tuoi Pannelli Grafici in MQL5 è stato pubblicato:
L'usabilità del programma MQL5 è determinata sia dalla sua ricca funzionalità che da un'elaborata interfaccia utente grafica. La percezione visiva a volte è più importante del funzionamento rapido e stabile. Ecco una guida step-by-step per la creazione di pannelli di visualizzazione sulla base delle classi della Libreria Standard.
Definiamo prima i termini. Il pannello di Visualizzazione è un termine che useremo per descrivere una visualizzazione personalizzata della finestra separata che non ha buffer di disegno. Tale pannello mostra semplicemente le informazioni richieste utilizzando gli oggetti grafico integrati nel Terminale. Le informazioni possono essere visualizzate:
Daremo uno sguardo dettagliato ad ogni passaggio richiesto e creeremo un pannello grafico come segue:
Autore: MetaQuotes