Terminal
- Corregida la visualización de los ajustes de margen
en las especificaciones del instrumento comercial. Antes, al utilizarse
el apalancamiento flotante (por ejemplo, según el volumen de las
posiciones en la cuenta), en algunos casos la configuración del margen
en las especificaciones del contrato se mostraba incorrectamente.
- Corregida
la clasificación de las órdenes en la pila, si el símbolo permite
comerciar con precios negativos. Las solicitudes con precios positivos,
negativos y cero ahora se muestran correctamente y en el orden
correcto.
- Añadido al manual del terminal el apartado Cómo el simulador descarga los datos históricos
En él hemos reunido la información básica necesaria para comprender el
trabajo del simulador de estrategias con la historia comercial. El
simulador carga siempre un "búfer histórico previo al arranque" para
garantizar la estabilidad de los cálculos:
- D1 y siguientes
desde principios del año anterior. Esto ofrece una reserva de al menos 1
año de historia. Por ejemplo, si la fecha de inicio de la prueba es el
01.03.2023, el simulador descargará los datos del terminal histórico a
partir del 01.01.2022. Es decir, 14 meses antes de la fecha de inicio de
las pruebas.
- W1 - 100 barras semanales (~2 años).
- MN1 - 100 barras mensuales (~8 años).
Si
existen menos datos, el simulador desplazará la fecha de inicio real a
la fecha disponible más próxima en la que se cumplan las condiciones.
Debido
a estos requisitos, a veces sucede que las pruebas no empiezan en la
fecha especificada, sino en una fecha posterior. Y esto se ve acompañado
de un mensaje en el diario del simulador:
start time changed to 2024.03.15 00:00 to provide data at beginning
MQL5
- Añadido 5 nuevos métodos a OpenBLAS: la nueva sección Matrix Balance, que amplía las posibilidades de trabajar con matrices cuadradas. El nuevo conjunto de funciones ofrece:
- Equilibrado de matrices para mejorar la precisión de los cálculos de valores propios.
- Recuperación de los vectores propios tras las transformaciones pertinentes.
- Reducción a la forma de Hessenberg y la descomposición de Schur, incluida la generación de matrices ortogonales.
Con estas herramientas, los desarrolladores conseguirán un ciclo de
transformación completo: desde el preentrenamiento de la matriz hasta el
cálculo preciso y estable de su espectro.
Para ello, se
utilizan algoritmos LAPACK de eficacia probada (GEBAL, GEBAK, GEHRD,
ORGHR, HSEQR) que garantizan un alto rendimiento y fiabilidad:
- MatrixBalance
equilibra las matrices cuadradas (reales o complejas) usando
permutaciones y/o escalado de filas y columnas. Reduce la norma 1,
mejorando la precisión del cálculo posterior de los valores/vectores
propios (usando como base la función LAPACK GEBAL).
- EigenVectorsBackward
— forma vectores propios (derechos o izquierdos) de la matriz original
después de equilibrar, ejecuta la transformación inversa (basada en GEBAK).
- ReduceToHessenbergBalanced — convierte la matriz equilibrada a la forma de Hessenberg triangular superior usando una transformación ortogonal (GEHRD).
- ReflectHessenbergBalancedToQ — genera una matriz ortogonal Q, que es el producto de matrices reflexivas formadas por reducción a la forma de Hessenberg (ORGHR).
- EigenHessenbergBalancedSchurQ
— realiza la descomposición de Schur: calcula los valores propios de la
matriz de Hessenberg, así como las matrices T (forma de Schur
triangular superior) y Z (matriz vectorial), y de ser necesario,
actualiza Q (HSEQR).
- Añadidos dos nuevos métodos a la sección Eigen Values.
Ambas funciones permiten obtener eficientemente los vectores propios
tras la descomposición de Shur y complementan el conjunto completo de
herramientas de álgebra lineal en MQL5:
- EigenVectorsTriangularZ
— calcula los vectores propios de una matriz real cuasi-triangular
superior o compleja triangular superior (forma de Schur). Utiliza la
descomposición A = Q · T · Qᴴ (TREVC). Se caracteriza por su gran precisión.
- EigenVectorsTriangularZBlocked — variante en bloque del cálculo de vectores propios (TREVC3). Funciona más rápido que EigenVectorsTriangularZ, pero puede resultar menos precisa.
- Introducido un cambio importante en la herencia: la regla de method hiding.
Antes, si una clase o estructura derivada definía un método con el mismo nombre que en la clase básica, se producía la sobrecarga:
todas las variantes de los métodos (tanto del ancestro como del
descendiente) estaban disponibles en el descendiente. Ahora, los métodos
con el mismo nombre en el descendiente ocultan los métodos del ancestro (method hiding).
Si necesita llamar a un método ancestro oculto, deberá especificar explícitamente el ámbito al llamarlo: class Base
{
public:
void Print(int x) { ::Print("Base int: ", x); }
void Print(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
void Print(string s){ ::Print("Derived string: ", s); }
};
void OnStart()
{
Derived d;
d.Print("text");
d.Print(10);
d.Base::Print(10);
}
Durante algún tiempo, el compilador MQL5 generará una
advertencia si un método ancestro oculto es más adecuado según los
parámetros de llamada que un método descendiente disponible. El ejemplo
para el código anterior es d.Print(10): call resolves to 'void Derived::Print(string)' instead of 'void Base::Print(int)' due to new rules of method hiding
see declaration of function 'Derived::Print'
see declaration of function 'Base::Print'
implicit conversion from 'number' to 'string'
- Añadido el operador using para recuperar sobrecargas de métodos ancestros.
Para gestionar el nuevo comportamiento, en MQL5 ha aparecido el operador using. Este permite "atraer" al ámbito de una clase o estructura todas las sobrecargas de métodos del tipo básico:
class Base
{
protected:
void Print(int x) { ::Print("Base int: ", x); }
void Print(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
void Print(string s){ ::Print("Derived string: ", s); }
using Base::Print;
};
void OnStart()
{
Derived d;
d.Print("text");
d.Print(42);
d.Print(3.14);
}
Si eliminamos using Base::Print;, las llamadas d.Print(42) y
d.Print(3.14) no estarán disponibles, solo quedará el método
Derived::Print(string)
Además, en el ejemplo anterior, podemos
ver que los métodos protegidos del ancestro ahora están disponibles en
el descendiente (protected ha cambiado a public)
De este modo,
los desarrolladores tienen ahora un control más flexible y predecible
sobre las jerarquías de las clases y pueden determinar exactamente qué
sobrecargas de los métodos del ancestro deben permanecer disponibles en
el descendiente.
MetaEditor
- Acelerados los cálculos hash SHA-1 para operaciones Git al trabajar con Algo Forge. El resultado es un aumento de la productividad de más de un 40% en las operaciones masivas.
- Corregida la lógica de comprobación de las modificaciones de archivos
para operaciones Git. Si solo hemos cambiado la hora de modificación
pero el contenido sigue siendo el mismo, el archivo ya no se considerará
modificado. Esto eliminará las falsas detecciones y evitará conflictos
con el repositorio remoto.
Publicada la
Guía de trabajo con MQL5 Algo Forge. Con ella, aprenderá todas las ventajas clave de Git, sin su complejidad:
- almacenamiento seguro de la historia de versiones y la gestión de ramas
- experimentación rápida y fusión segura de los cambios,
- repositorios propios o bifurcaciones del proyecto de otra persona con un solhttps://www.mql5.com/go?link=https://forge.mql5.io/help/en/guideo clic,
- trabajo en equipo transparente en el que se registrará la contribución de todos,
- catálogo de proyectos abiertos y la oportunidad de aprender de los demás.
Clonación de proyectos ajenos
En forge.mql5.io, vaya al proyecto que desea clonar y ejecute el comando Fork. Rellene el nombre de la bifurcación que está creando con su correspondiente descripción, y guarde luego los cambios:

A continuación, vaya a MetaEditor con la misma cuenta MQL y ejecute el comando (Refresh) en el Navegador. El proyecto clonado aparecerá en la carpeta Shared projects. Ahora cárguelo desde el portal Algo Forge con el comando Git Clone.
Descargará no solo todos los archivos del proyecto, sino también toda
la historia de confirmaciones y todas las ramas de ese proyecto. Es
decir, podrá seguir trabajando en la bifurcación con toda la historia
del proyecto clonado.

Web Terminal
- Corregida la visualización de la hora de la sesión de trabajo y de cotización en las especificaciones del símbolo
- Corregida la visualización de la configuración de márgenes en las especificaciones del símbolo
- Modificada la visualización de las sesiones de los instrumentos comerciales en las especificaciones del símbolo
- Añadido soporte para cuentas comerciales de tipo Contest, estas cuentas se muestran en color azul, las Demo, en verde.
- Corregida la precisión de los cálculos de márgenes con apalancamiento flotante en algunos casos.
- Corregido
el siguiente error al abrir una cuenta nueva: en algunos casos, el
botón "Next" para pasar al siguiente paso no funcionaba.
- Corregido el error que impedía colocar una orden límite entre los precios de compra y venta en el modo de ejecución bursátil.
- Corregido
el error de visualización del precio de ejecución de una orden. Tras el
envío de la orden, en la ventana se mostrará el resultado de su
ejecución: la ejecución con éxito de la operación comercial o el rechazo
con la descripción del motivo donde se explica porqué no ha sido
ejecutada. En algunos casos, el precio de ejecución aparecía como "0".
- Corregido el error que impedía mostrar el botón de cierre rápido de posiciones.

- Corregida la visualización de las divisas de las cuentas comerciales en la ventana de selección de la lista de cuentas.
Lea las noticias anteriores, por favor: