Proyectos

Los productos de software, por regla general, se desarrollan dentro del ciclo de vida estándar:

  • Recopilación y adición de requisitos
  • Diseño
  • Desarrollo
  • Simulación
  • Explotación

Como resultado de la mejora y ampliación constantes de la funcionalidad, suele ser necesario sistematizar los archivos fuente, los recursos y las bibliotecas de terceros (aquí nos referimos no sólo a las bibliotecas en formato binario, sino, en un sentido más general, a cualquier conjunto de archivos, por ejemplo, los encabezados). Es más, los programas individuales se integran en un producto común que encarna una idea aplicada.

Estructura y ciclo de vida del proyecto

Estructura y ciclo de vida del proyecto

Por ejemplo, cuando se desarrolla un robot de trading, a menudo es necesario conectar indicadores ya hechos o personalizados, el uso de algoritmos externos de aprendizaje automático implica escribir un script para exportar datos de cotización y un script para reimportar modelos entrenados, y los programas relacionados con el intercambio de datos a través de Internet (por ejemplo, señales de trading) pueden requerir un servidor web y su configuración en otros lenguajes de programación, al menos para depurar y probar, si no para desplegar un servicio público.

Todo el conjunto de varios productos interrelacionados, junto con sus «dependencias» (es decir, los recursos y bibliotecas utilizados, escritos independientemente o tomados de fuentes de terceros), forman un proyecto de software.

Cuando un programa supera cierto tamaño, su desarrollo cómodo y eficaz resulta difícil sin herramientas especiales de gestión de proyectos. Esto se aplica plenamente a los programas basados en MQL5, ya que muchos operadores utilizan sistemas de trading complejos.

MetaEditor admite el concepto de proyectos de forma similar a otros paquetes de software. Actualmente, esta funcionalidad está al principio de su desarrollo, y para cuando se publique el libro, probablemente cambiará.

Cuando trabaje con proyectos en MQL5, tenga en cuenta que el término «proyecto» en la plataforma se utiliza para dos entidades diferentes:

  • Proyecto local en forma de archivo mqproj
  • Carpetas en el almacenamiento en la nube MQL5

Un proyecto local permite sistematizar y reunir toda la información sobre códigos fuente, recursos y configuraciones necesarias para construir un determinado programa MQL. Un proyecto de este tipo solo está en su ordenador y puede hacer referencia a archivos de diferentes carpetas.

El archivo con la extensión mqproj tiene un formato de texto JSON (JavaScript Object Notation) ampliamente utilizado y universal. Es cómodo, sencillo y muy adecuado para describir datos de cualquier área temática: toda la información se agrupa en objetos o arrays con propiedades nombradas, con compatibilidad para valores de distintos tipos. Todo esto hace que JSON sea conceptualmente muy cercano a los lenguajes de programación orientada a objetos (POO); también proviene de JavaScript orientado a objetos, como se puede adivinar fácilmente por el nombre.

El almacenamiento en la nube funciona sobre la base de un sistema de control de versiones y el trabajo colectivo en un software llamado SVN (Subversion). En este caso, un proyecto es una carpeta de nivel superior dentro del directorio local MQL5/Shared Projects, a la que se asigna otra carpeta que tiene el mismo nombre pero que se encuentra en el servidor MQL5 Storage. Dentro de una carpeta de proyecto, puede organizar una jerarquía de subcarpetas. Como su nombre indica, los proyectos en red pueden compartirse con otros desarrolladores y, en general, hacerse públicos (el contenido puede ser descargado por cualquier persona registrada en mql5.com).

El sistema proporciona sincronización bajo demanda (mediante comandos de usuario especiales) entre la imagen de la carpeta en la nube y en la unidad local, y viceversa. Puede tanto «extraer» los cambios de proyectos de otras personas a su ordenador, como «empujar» sus ediciones a la nube. Se pueden sincronizar tanto la imagen completa de la carpeta como archivos selectivos, incluidos, por supuesto, archivos mq5, archivos de encabezado mqh, multimedia, ajustes (archivos set), así como archivos mqproj. Para obtener más información sobre el almacenamiento en la nube, lea la documentación de MetaEditor y los sistemas SVN.

Es importante señalar que la existencia de un archivo mqproj no implica la creación de ningún proyecto en la nube sobre su base, del mismo modo que la creación de una carpeta compartida no obliga a utilizar un proyecto mqproj.

En el momento de escribir esto, un archivo mqproj sólo puede describir la estructura de un programa, no de varios. Sin embargo, dado que este requisito es habitual cuando se desarrollan proyectos complejos, es probable que esta funcionalidad se añada a MetaEditor en el futuro.

En este capítulo describiremos las principales funciones para crear y organizar proyectos mqproj y daremos una serie de ejemplos.