Nueva versión de la plataforma MetaTrader 5 build 5100: migración a Git y al hub de desarrolladores MQL5 Algo Forge, tema oscuro y mejoras en la interfaz

En esta versión hemos rediseñado sustancialmente el editor de código fuente MetaEditor. El repositorio versionado MQL5 Storage incorporado ahora utiliza Git en lugar de Subversion. Junto con la transición al nuevo sistema, hemos abierto un nuevo portal para la gestión de proyectos en línea: MQL5 Algo Forge

5 junio 2025

MetaEditor

  • Hemos actualizado completamente el repositorio de código fuente MQL5 Storage. Ahora usa Git en lugar de Subversion como sistema de control de versiones. Se trata de un estándar para desarrolladores de todo el mundo que ofrece fiabilidad y flexibilidad en la gestión del código.

    • Bifurcación y fusión flexibles: cree ramas independientes para nuevas funciones o experimentos y, a continuación, combine fácilmente estas en la versión principal del proyecto.
    • Operaciones de repositorio más rápidas: a diferencia de Subversion, Git almacena todos los datos de manera local, lo cual hace que las operaciones (confirmaciones, cambio entre versiones, comparación de cambios) resulte mucho más rápidas.
    • Trabajo sin conexión: ahora no necesita una conexión constante al servidor; podrá confirmar los cambios localmente y enviarlos al repositorio en línea cuando le convenga.
    • Seguimiento avanzado de cambios: Git facilita la visualización de la historia de cambios, el seguimiento de quién ha realizado los mismos y cuándo, así como la vuelta a versiones anteriores sin complicaciones.
    • Mejor fusión de cambios: el sistema avanzado de comparación y combinación de código permite minimizar los conflictos y gestionar fácilmente el desarrollo colaborativo.

    Desarrollo conjunto a un nuevo nivel
    Junto con la transición a Git, hemos abierto un nuevo portal para la gestión de proyectos en línea: MQL5 Algo Forge. No se trata solo de una lista con sus proyectos, es toda una red social para desarrolladores, una especie de GitHub para tráders algorítmicos. Suscríbase a autores interesantes, cree equipos y dirija cómodamente proyectos de colaboración.




    Vea los detalles del proyecto: estructura, archivos, commits, ramas, etc. Monitoree la contribución de cada integrante, cree documentación y comparta el proyecto en línea.




    Lleve un registro de todos los cambios en el código: líneas nuevas, modificadas y eliminadas. Al detectar problemas, pida al desarrollador que los solucione directamente en el proyecto.




    Para trabajar con Git, hemos rediseñado el menú Navegador y la ventana activa de edición de código. También hemos añadido un menú Git independiente al panel superior del MetaEditor:




    Todos los detalles sobre el trabajo con Git estarán pronto en la documentación.

Terminal

  1. Añadida la compatibilidad con el esquema de colores oscuros de la interfaz para todos los componentes: el terminal comercial, el MetaEditor y el simulador visual. El tema oscuro le permitirá trabajar con la plataforma más cómodamente por la noche. Utilice el menú «Ver» para cambiar al tema oscuro:




    Adaptando la interfaz para que admita diferentes temas, hemos introducido muchas mejoras en la visualización de las ventanas de diálogo, menús, paneles y botones para que la experiencia resulte más cómoda. En el MetaEditor, la información sobre la posición actual del cursor en la ventana activa, así como el indicador del modo de entrada de texto (INS/OVR) se muestran en la esquina superior derecha. Para ahorrar espacio de trabajo, la barra de estado en la parte inferior de la ventana ya no se muestra.

  2. Añadida la posibilidad de alquilar un VPS durante 12 meses. Comprando el hosting de una sola vez y a largo plazo, ahorrará un tercio del coste.




  3. Optimizado el consumo de memoria, ahora se utilizan menos recursos de la computadora para ejecutar el terminal.
  4. Optimizada la visualización de la historia comercial de la cuenta. Ahora la plataforma puede mostrar correctamente millones de entradas.
  5. Añadido el comando «Por defecto» al menú «Ventana». Este retorna todos los elementos de la interfaz (gráficos, Navegador, Simulador de estrategias, etc.) a su posición original.
  6. Corregido el error que, en algunos casos, provocaba el bloqueo de la ventana de diálogo de cambio de posición.
  7. Corregido el cálculo del coste de las posiciones abiertas al darse precios negativos.
  8. Corregido el cálculo del importe de garantía en las especificaciones de un instrumento comercial cuando se dan precios negativos.
  9. Corregido el cálculo de los valores actuales y la visualización de los gráficos MFE y MAE en el informe comercial.
  10. Corregido el escalado de los osciladores en las subventanas de los gráficos. La escala vertical de los mismos se muestra ahora correctamente.
  11. Corregida la ocultación y visualización de la profundidad de mercado y las tablas de opciones al cambiar al modo de pantalla completa.
  12. Añadida la visualización del ticket de la posición en la historia comercial de la cuenta. Utilice el menú contextual para activar la columna.
  13. Corregido el cálculo del valor de liquidación en la pestaña «Activos» para futuros y opciones.
  14. Corregido el copiado al portapapeles de los datos de las facturas creadas. En la última etapa del registro de una cuenta de demo o preliminar, el usuario obtiene los datos de la cuenta: el nombre de usuario, las contraseñas, etc. Estos se pueden copiar en el portapapeles para guardarlos en un archivo independiente. El comando correspondiente funciona ahora correctamente en macOS.
  15. Corregida la visualización de la sección de registro de VPS. En algunos casos, la página mostraba un error.
  16. Corregida la compatibilidad con monitores HiDPI al trabajar en Linux.
  17. Actualizadas las traducciones de la interfaz de usuario.

MQL5

  1. Añadido el operador de multiplicación de matrices @. Funciona según las reglas del álgebra lineal y permite multiplicar matrices y vectores, además de ejecutar el producto escalar de vectores.

    Multiplicación de matrices (matriz × matriz)
    matrix A(2, 3);
    matrix B(3, 2);
    matrix C = A @ B; // Resultado: matriz C con un tamaño [2,2]
    Multiplicación de matrices (matriz × vector)
    matrix M(2, 3);
    vector V(3);
    vector R = M @ V; // Resultado: vector R de 2 elementos
    Multiplicación de matrices (vector × matriz)
    matrix M(2, 3);
    vector V(1, 2);
    vector R = V @ M; // Resultado: vector R de 3 elementos
    Producto escalar (vector × vector)
    vector V1(1, 3), V2(1, 3);
    double r = V1 @ V2; // Resultado: escalar
  2. Añadido el parámetro ddof a los métodos Std, Var y Cov. Determina el número de grados de libertad que se restan del divisor al calcular la desviación típica. El parámetro por defecto para Std y Var será 0, y para Cov será 1.

    Cómo influye el ddof:

    • Por defecto, ddof=0 y la desviación típica se calcula para toda la población (desviación típica poblacional).
    • Si ddof=1, se usará la desviación típica de la muestra, que ajustará la estimación para la muestra final (se utiliza en estadística al trabajar con un subconjunto de datos).

  3. Añadidos nuevos métodos OpenBLAS:

    Cálculo de valores y vectores propios

    • EigenTridiagonalDC — calcula los valores y vectores propios de una matriz simétrica tridiagonal utilizando el algoritmo «divide y vencerás» (función STEVD de LAPACK).
    • EigenTridiagonalQR — calcula los valores y vectores propios de una matriz simétrica tridiagonal utilizando el algoritmo QR (función LAPACK de STEV).
    • EigenTridiagonalRobust — calcula los valores y vectores propios de una matriz simétrica tridiagonal utilizando el algoritmo MRRR (Multiple Relatively Robust Representations) (función LAPACK de STEVR).
    • EigenTridiagonalBisect — calcula los valores y vectores propios de una matriz simétrica tridiagonal utilizando el algoritmo de bisección (función LAPACK de STEVX).
    • ReduceToBidiagonal — reduce una matriz general real o compleja de tamaño m×n a una forma bidiagonal superior o inferior B utilizando una transformación ortogonal: Q**T * A * P = B. Si m≥n, entonces B es una matriz bidiagonal superior, en caso contrario será una matriz bidiagonal inferior. (función GEBRD de LAPACK).
    • ReflectBidiagonalToQP — genera matrices ortogonales Q y P**T (o P**H para tipos complejos) definidas por el método ReduceToBidiagonal al reducir la matriz real o compleja A a la forma bidiagonal: A = Q * B * P**T.  Q y P**T son los productos de los reflectores elementales H(i) o G(i), respectivamente. (funciones LAPACK ORGBR, UNGBR).
    • ReduceSymmetricToTridiagonal — reduce una matriz real simétrica o hermitiana compleja A a una forma tridiagonal B utilizando una transformación ortogonal de similitud: Q**T * A * Q = B.  (funciones LAPACK SYTRD, HETRD).
    • ReflectTridiagonalToQ — genera una matriz ortogonal Q, que es el producto de n-1 reflectores elementales de orden n devueltos por la función ReduceSymmetricToTridiagonal.

    • LinearEquationsSolution — calcula un sistema de ecuaciones lineales con una matriz cuadrada de coeficientes A y varias partes derechas.
    • LinearEquationsSolutionTriangular — calcula un sistema de ecuaciones lineales con una matriz triangular cuadrada de coeficientes A y múltiples partes derechas.
    • LinearEquationsSolutionSy — calcula un sistema de ecuaciones lineales con matriz A simétrica o hermitiana conjugada y varias partes derechas.
    • LinearEquationsSolutionComplexSy - calcula un sistema de ecuaciones lineales con matriz simétrica compleja A y varias partes derechas.
    • LinearEquationsSolutionGeTrid — calcula un sistema de ecuaciones lineales con una matriz A simétrica o hermitiana conjugada definida positivamente y varias partes derechas.
    • LinearEquationsSolutionSyPD — calcula un sistema de ecuaciones lineales con una matriz tridiagonal general (asimétrica) de coeficientes A y varias partes derechas.
    • LinearEquationsSolutionSyTridPD — calcula un sistema de ecuaciones lineales con una matriz A simétrica tridiagonal definida positivamente y varias partes derechas.
    • FactorizationQR — calcula la descomposición QR de una matriz general de tamaño m por n: A = Q * R (función LAPACK GEQRF).
    • FactorizationQRNonNeg — calcula la descomposición QR de una matriz general de tamaño m por n: A = Q * R, donde R es una matriz triangular superior con elementos no negativos en la diagonal (función LAPACK GEQRFP).
    • FactorisationQRPivot — calcula la descomposición QR de una matriz general de tamaño m por n con permutación de columnas: A * P = Q * R (función LAPACK GEQP3).
    • FactorisationLQ — realiza una descomposición LQ de una matriz general de tamaño m en n: A = L * Q (función LAPACK de GELQF).
    • FactorisationQL — realiza una descomposición QL de una matriz general de tamaño m en n: A = Q * L (función LAPACK de GEQLF).
    • FactorisationRQ — realiza una descomposición RQ de una matriz general de tamaño m en n: A = R * Q (función LAPACK de GERQF).
    • FactorizationPLU — calcula la descomposición LU de una matriz general A de tamaño m por n usando la selección parcial del elemento principal y permutaciones de filas (función LAPACK GETRF).
    • FactorizationPLUGeTrid — calcula la descomposición LU de una matriz tridiagonal general (asimétrica) A de tamaño n por n utilizando la selección parcial del elemento principal y permutaciones de filas (función LAPACK de GTTRF).
    • FactorizationLDL — calcula la descomposición de una matriz real simétrica o hermitiana compleja A utilizando la selección diagonal del elemento principal por el método de Bunch-Kaufman (funciones LAPACK SYTRF y HETRF).
    • FactorizationLDLSyTridPD — calcula la descomposición de una matriz tridiagonal A simétrica definida positivamente (para datos reales) o hermitiana definida positivamente (para datos complejos) (función LAPACK PTTRF).
    • FactorizationCholesky — calcula la descomposición para una matriz real simétrica o hermitiana compleja positiva-definida A (función LAPACK POTRF).
    • FactorizationCholeskySyPS — calcula la descomposición de Cholesky con pivoteo completo para una matriz real simétrica (o hermitiana compleja) positiva semidefinida A de tamaño n por n (función LAPACK PSTRF).

  4. Añadida la función y el método Random para rellenar vectores y matrices con valores aleatorios. Los valores aleatorios se generan uniformemente dentro del rango establecido.
    static vector vector::Random(
      const ulong   size,       // longitud del vector
      const double  min=0.0,    // valor mínimo
      const double  max=1.0     // valor máximo
       );
    
    static matrix matrix::Random(
      const ulong   rows,       // número de filas
      const ulong   cols        // número de columnas
      const float   min=0.0,    // valor mínimo
      const float   max=1.0     // valor máximo
       );
  5. Añadido soporte para pseudónimos adicionales de tipo entero. Esto facilitará la portabilidad de código de otros lenguajes, como C y C++.

    Estos pseudónimos no introducen nuevos tipos, sino que son nombres alternativos de tipos ya existentes en MQL5. Pueden utilizarse en todos los contextos en los que son aplicables los tipos básicos.

    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t

  6. Añadidas funciones para definir el esquema de colores del terminal:


    Utilice el manejador OnChartEvent para determinar si el esquema de color ha cambiado. El evento CHARTEVENT_CHART_CHANGE se llama dos veces al cambiar el patrón.

  7. Corregido el error que provocaba que MetaEditor se bloqueara al compilar código con el método Array::Reserve. El método Reserve no cambia el tamaño del array, sino que reserva espacio para el número especificado de elementos para evitar la sobreasignación de memoria al añadir nuevos elementos.
  8. Corregido el método Array::Push que añade nuevos elementos al final del array. El error se producía en los arrays que tenían una reserva en el búfer.
  9. Corregidas las funciones para trabajar con OpenCL.

MetaTester

  1. Acelerada la optimización de las estrategias comerciales.
  2. Corregido el error que en algunos casos provocaba un consumo excesivo de RAM por parte de los agentes de prueba al ejecutar tareas desde la red MQL5 Cloud Network.

Terminal web

  1. Corregida la opción de guardar contraseña en la ventana de diálogo de conexión de cuentas.
  2. Corregido el funcionamiento de los botones para desplazar el gráfico. En algunos casos, al usar estos, el gráfico podía desaparecer.
  3. Corregida la validación del campo «Patronímico» en el formulario de solicitud de cuentas reales. Ahora no es obligatorio rellenarlo.
  4. Corregida la apertura de cuentas demo. En algunos casos, al abrir una cuenta, se daba un redireccionamiento incorrecto al sitio web del bróker.
  5. Corregida la visualización de los botones de apertura de cuentas demo y reales. Ahora los botones están ocultos si la función correspondiente ha sido desactivada por el bróker.
  6. Corregido el funcionamiento del campo «Depósito» en el formulario de apertura de cuentas demo.
  7. Corregida la visualización del campo «Trading» en las especificaciones del contrato.
  8. Corregido el campo de búsqueda de símbolos en la ventana «Observación del mercado». Ahora muestra un botón «X» para salir del modo de búsqueda.
  9. Corregida la información sobre herramientas del campo en el que se introduce el código de confirmación de correo electrónico en el formulario de apertura de cuenta.