Discussione sull’articolo "MQL per "Duri di Comprendonio": Come Progettare e Costruire Classi di Oggetti" - pagina 2

 

Ho appena aggiornato il terminale con uno scaricabile per essere sicuro.

ho aggiornato la libreria, questo è certo.

Ho avviato il terminale, ho aperto il file ed eccolo qui.

Mi piace molto il raggruppamento dei pulsanti =))))))

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 

Potresti caricare tutti i file necessari per questa applicazione in un unico archivio e rispettare la struttura in modo che ci sia una cartella MQL5.

Ho controllato che tutti i file si aprano normalmente e abbiano un contenuto leggibile.

 
CoreWinTT:

Potresti caricare tutti i file necessari per questa applicazione in un unico archivio e rispettare la struttura in modo che ci sia una cartella MQL5.

Ho controllato che tutti i file si aprano normalmente e abbiano un contenuto leggibile.

inviatovi in un messaggio privato.
 

Grazie.

Ora funziona tutto, compila normalmente, forse il problema era in un file bit che era stato caricato sul server in modo errato, oppure potrei aver avuto un errore durante il download, ma non me ne sono accorto.

In generale è molto scomodo scaricare singolarmente un numero di file superiore a 5, sarebbe bello fare un archivio o un intero programma di installazione.

Continuerò a capire e cercherò di inserirlo da qualche parte, riferirò sui risultati.

Nel complesso, mi piace molto il funzionamento del pulsante di selezione.

ma il pulsante di minimizzazione è deludente ........

non funziona e, a quanto ho capito, dovrebbe ridursi a icona sotto le seguenti righe?

 

In generale, un articolo abbastanza informativo. solo un sacco di riferimenti a "wikipedia".

E così risulta essere un costruttore professionale per un menu di questo tipo, sul quale tutto viene cliccato e aggiunto, in generale funziona.

Sarebbe anche molto bello avere un semplice manuale su come accedere alle celle di questo miracolo.

Supponiamo che l'Expert Advisor legga i valori dalle celle all'evento tick.

e che queste celle vengano riempite con i parametri di input durante il processo di oninit.

Oppure devo scrivere io stesso una cosa del genere????

e questo serve come costruttore visivo?

 

Grazie per i preziosi commenti. Ho già riflettuto su di essi e cercherò di risolverne la maggior parte.

 

del tipo per formare una serie di strutture

che sarà disponibile per l'intero programma

e che memorizzerà i dati in questo formato

e di poter fare riferimento a questi valori

come colonna Header[1].2.

almeno con il tipo di dati stringa

Vedo che qui esiste già qualcosa di simile.

string Mstr[][3]=
  {
     {"MACD","",""},
     {"NEW1","metod",""},
     {"elders","new2",""},
     {"Fast","new3",""},
     {"Slow","new4",""},
     {"Signal","new5",""},
     {}
  };

come un array bidimensionale.

e si rimprovera se si fa qualcosa del genere.

     {"NEW1",""+TrailingStop+"",""},


Probabilmente getter e setter non possono dividere l'incapsulamento.

 

Ogni cella ha un nome univoco. È possibile vederlo passando il cursore del mouse sull'oggetto. Il file ClassMasterWindowsEXE.mqh mostra come accedere alle celle.

//+------------------------------------------------------------------+
//| Metodo di intercettazione ed elaborazione degli eventi OnChartEvent() |
//+------------------------------------------------------------------+
void CMasterWindowsEXE::OnEvent(const int id,
                                const long &lparam,
                                const double &dparam,
                                const string &sparam)
  {
   if(on_event) // la gestione degli eventi è abilitata
     {
      //--- premendo il pulsante AVVIO nella finestra principale
      if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }
      //-- modificare le variabili nell'editor EDIT STR18
      if(id==CHARTEVENT_OBJECT_ENDEDIT
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR18",0)>0)
        {
         string textedit=ObjectGetString(0,sparam,OBJPROP_TEXT);
         if(StringFind(textedit,".",0)>=0)
           {
            ObjectSetString(0,sparam,OBJPROP_TEXT,"");
            ChartRedraw();
            MessageBox("Il nome del file non deve contenere un punto fermo!".,"Errore nel nome del file".,MB_OK);
           }
         else nameFile=textedit;
        }
 

ma qui tutti i parametri di stringa risultano essere

e cioè, per ogni pulsante sarà necessario scrivere un evento del tipo

  if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,CWin1.STR2.RowType3.Button3,0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }

per il pulsante +

estrarre il valore dalla stringa tale e quale, convertirlo in intero, aggiungere un valore e rimetterlo a posto.

e nell'evento ontic

solo allora

estrarre il valore dalla stringa tale e quale e convertirlo in intero, ecc. ecc.

in generale, se ci fosse una cosa come una struttura, in modo da poter impostare il tipo di oggetti memorizzati, e il modulo di trasferimento del valore in stringa potrebbe essere implementato all'interno della classe.

Ho capito bene che il tracciamento, ad esempio, di una cella più può essere fatto inserendo del codice in un evento.

  if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1.STR2.RowType3.Button3",0)>=0)
        {
         Generator();
        }

 
e mi chiedo anche se il pulsante di minimizzazione funzionerà.