Discusión sobre el artículo "MQL para "Dummies": Cómo Diseñar y Construir Clases de Objetos" - página 2

 

Acabo de actualizar el terminal a uno descargable para estar seguro.

actualizado la biblioteca, eso es seguro.

ejecuté el terminal, abrí el archivo y aquí está.

Me gustó mucho la agrupación de los botones =))))))

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

Podrias por favor subir todos los archivos necesarios para esta aplicacion en 1 archivo y respetar la estructura para que haya una carpeta MQL5.

He comprobado que todos los archivos se abren normalmente y tienen contenido legible.

 
CoreWinTT:

Podrias por favor subir todos los archivos necesarios para esta aplicacion en 1 archivo y respetar la estructura para que haya una carpeta MQL5.

He comprobado que todos los archivos se abren normalmente y tienen contenido legible.

enviado a usted en un mensaje privado.
 

Gracias.

Ahora todo funciona, compila con normalidad, quizás el problema estaba en un archivo bit que o bien se subió mal al servidor, o puede que tuviera un error al descargarlo, pero no me di cuenta.

En general es muy incómodo descargar individualmente el número de archivos superior a 5, sería genial hacer un archivo comprimido o un programa de instalación completo.

Voy a seguir para entender y tratar de ponerlo en alguna parte, voy a informar sobre los resultados.

En general, me gusta mucho el funcionamiento del botón de cruz.

pero el botón de minimizar es decepcionante ........

no funciona, y en idea, según he entendido debería minimizar por debajo de las siguientes líneas?

 

En general, bastante informativo artículo. sólo un montón de referencias a "wikipedia".

Y por lo que resulta ser un constructor profesional para un menú de este tipo, en el que todo se hace clic y se añade, en general, funciona.

También sería muy bueno tener algún manual sencillo sobre cómo acceder a las células de este milagro.

y supongamos que el Asesor Experto lee los valores de las celdas en el evento tick.

y estas celdas se llenarían con parámetros de entrada durante el proceso oninit.

¿O tengo que escribir tal cosa yo mismo????

y esto sirve como un constructor visual?

 

Gracias por los valiosos comentarios. Ya he reflexionado sobre ellos e intentaré solucionar la mayoría.

 

del tipo para formar un conjunto de estructuras

que estará disponible para todo el programa

y que almacenará datos en este formato

y poder referirse a estos valores

como Cabecera[1].2 columna.

al menos con el tipo de datos string

Veo que aquí ya existe algo similar.

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

como un array bidimensional.

y regaña si haces algo como esto.

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


probablemente getter y setter no puede dividir la encapsulación.

 

Cada celda tiene su propio nombre. Puede verlo situando el cursor del ratón sobre el objeto. El archivo ClassMasterWindowsEXE.mqh muestra cómo acceder a las celdas.

//+------------------------------------------------------------------+
//| Método de interceptar y procesar eventos OnChartEvent() ||
//+------------------------------------------------------------------+
void CMasterWindowsEXE::OnEvent(const int id,
                                const long &lparam,
                                const double &dparam,
                                const string &sparam)
  {
   if(on_event) // la gestión de eventos está activada
     {
      //--- pulsando el botón START en la ventana principal
      if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }
      //--- editar variables en el 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("¡El nombre del archivo no debe contener un punto!","Error de nombre de archivo".,MB_OK);
           }
         else nameFile=textedit;
        }
 

pero aquí todos los parámetros de cadena resultan ser

y es que para cada botón habrá que escribir un evento como

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

para el botón +

extraer el valor de la cadena tal y tal, convertirlo a entero, sumarle uno y volverlo a poner.

y en el evento ontic

justo entonces

extraer valor de cadena tal y tal allí convertir a entero etc. etc.

en general, si hubiera tal cosa como una estructura, para que pueda establecer el tipo de objetos almacenados, y el módulo de transferencia de valor en una cadena podría ser implementado dentro de la clase.

He entendido bien que el seguimiento de una celda más, por ejemplo, se puede hacer mediante la inserción de código en un evento.

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

 
y también me pregunto si funcionará el botón de minimizar.