---
title: "MetaTrader 5 build 1485: modos adicionales de simulación y gráficos en la biblioteca estándar - Últimas actualizaciones"
description: "Modificado el orden de representación de las entradas en los diarios de registro del terminal y del MetaEditor. - Últimas actualizaciones"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/es/releasenotes/terminal/1392"
---

# MetaTrader 5 build 1485: modos adicionales de simulación y gráficos en la biblioteca estándar

## Modificado el orden de representación de las entradas en los diarios de registro del terminal y del MetaEditor

24 noviembre 2016

### Terminal

1.  Modificado el orden de representación de las entradas en los diarios de registro del terminal y del MetaEditor. Antes, al inicio del diario se mostraban las entradas más recientes, ahora, las más antiguas. El orden inverso de clasificación hará la lectura del diario más cómoda y sencilla.

   ![](https://www.metatrader5.com/c/17/0/terminal_1__2.png)

   Además, a través del menú contextual del diario ahora se pueden ocultar las columnas "Hora" y "Fuente".
2.  En la historia comercial ahora se muestra el ticket de la posición cerrada de las órdenes y operaciones de cierre de posiciones en el modo de cobertura. Esto facilitará la búsqueda de las operaciones de apertura y cierre.

   ![](https://www.metatrader5.com/c/17/0/terminal_2__1.png)
3.  Corregido el error que provocaba el copiado de los nivles de SL/TP desde la posición disponible a la posición nueva del mismo instrumento. El error aparecía al usar funciones en el comercio con un click (por ejemplo, el panel en el gráfico, la ventana de Observación del mercado) en el modo de cobertura.
4.  Corregida la representación de los objetos-flechas en las pantallas de alta resolución (4К).

### MQL5

1.  Añadida la función [ArrayPrint](https://www.mql5.com/es/docs/array/arrayprint) para mostrar en el diario las matrices de los tipos simples y las estructuras.

   ```
   void  ArrayPrint(    const void&   array[],             // matriz mostrada    uint          digits=_Digits,      // número de decimales tras la coma    const string  separator=NULL,      // separador entre los valores de los campos de la estructura    ulong         start=0,             // índice del primer elemento mostrado    ulong         count=WHOLE_ARRAY,   // número de elementos mostrados    ulong         flags=ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_LIMIT|ARRAYPRINT_ALIGN        );
   ```

   ArrayPrint no muestra en el diario todos los campos de la matriz de estructuras, los campos-matrices y los campos-punteros de los objetos se omiten. Para mostrar todos los campos de esta estructura será necesaria una función propia de muestra masiva con el fotmato deseado.

   ```
   //--- muestra los valores de las 10 últimas barras    MqlRates rates[];    if(CopyRates(_Symbol,_Period,1,10,rates))      {       ArrayPrint(rates);       Print("Comprobando\n[time]\t[open]\t[high]\t[low]\t[close]\t[tick_volume]\t[spread]\t[real_volume]");       for(int i=0;i<10;i++)         {          PrintFormat("[%d]\t%s\t%G\t%G\t%G\t%G\t%G\t%G\t%I64d\t",i,          TimeToString(rates[i].time,TIME_DATE|TIME_MINUTES|TIME_SECONDS),          rates[i].open,rates[i].high,rates[i].low,rates[i].close,          rates[i].tick_volume,rates[i].spread,rates[i].real_volume);         }      }    else       PrintFormat("CopyRates failed, error code=%d",GetLastError()); //--- ejemplo de muestra /*                     [time]  [open]  [high]   [low] [close] [tick_volume] [spread] [real_volume]    [0] 2016.11.09 04:00:00 1.11242 1.12314 1.11187 1.12295         18110       10   17300175000    [1] 2016.11.09 05:00:00 1.12296 1.12825 1.11930 1.12747         17829        9   15632176000    [2] 2016.11.09 06:00:00 1.12747 1.12991 1.12586 1.12744         13458       10    9593492000    [3] 2016.11.09 07:00:00 1.12743 1.12763 1.11988 1.12194         15362        9   12352245000    [4] 2016.11.09 08:00:00 1.12194 1.12262 1.11058 1.11172         16833        9   12961333000    [5] 2016.11.09 09:00:00 1.11173 1.11348 1.10803 1.11052         15933        8   10720384000    [6] 2016.11.09 10:00:00 1.11052 1.11065 1.10289 1.10528         11888        9    8084811000    [7] 2016.11.09 11:00:00 1.10512 1.11041 1.10472 1.10915          7284       10    5087113000    [8] 2016.11.09 12:00:00 1.10915 1.11079 1.10892 1.10904          8710        9    6769629000    [9] 2016.11.09 13:00:00 1.10904 1.10913 1.10223 1.10263          8956        7    7192138000    Comprobando    [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]    [0] 2016.11.09 04:00:00 1.11242 1.12314 1.11187 1.12295 18110 10 17300175000    [1] 2016.11.09 05:00:00 1.12296 1.12825 1.1193 1.12747 17829 9 15632176000    [2] 2016.11.09 06:00:00 1.12747 1.12991 1.12586 1.12744 13458 10 9593492000    [3] 2016.11.09 07:00:00 1.12743 1.12763 1.11988 1.12194 15362 9 12352245000    [4] 2016.11.09 08:00:00 1.12194 1.12262 1.11058 1.11172 16833 9 12961333000    [5] 2016.11.09 09:00:00 1.11173 1.11348 1.10803 1.11052 15933 8 10720384000    [6] 2016.11.09 10:00:00 1.11052 1.11065 1.10289 1.10528 11888 9 8084811000    [7] 2016.11.09 11:00:00 1.10512 1.11041 1.10472 1.10915 7284 10 5087113000    [8] 2016.11.09 12:00:00 1.10915 1.11079 1.10892 1.10904 8710 9 6769629000    [9] 2016.11.09 13:00:00 1.10904 1.10913 1.10223 1.10263 8956 7 7192138000 */
   ```
2.  Corregido el error de concatenación de líneas S1=S2+S1
3.  Modificado el comportamiento de la función [ArrayResize](https://www.mql5.com/es/docs/array/arrayresize). Al transmitir el valor -1 como parámetro reserve_size, la función libera la memoria no utilizada (memoria reservada), si con ello no tiene lugar un aumento del tamaño de la matriz. El cambio de tamaño de la matriz a 0 con un valor reserve_size=-1 equivale a la llamada de ArrayFree. El nuevo comportamiento permite optimizar el uso de la memoria en los programas MQL5.

   ```
   void OnStart()   {    int arr[]; //--- cuánta memoria se ha usado al inicio     Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB"); //--- cuánta memoria se ha usado para la matriz con el tamaño 1, pero con reserva    ArrayResize(arr,1,1024*1024);    Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB"); //--- tras aumentar la matriz, el tamaño utilizado de la memoria no ha aumentado a cuenta de la reserva    ArrayResize(arr,1024*512,1024*1024);    Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB"); //--- tras disminuir la matriz, el tamaño de la memoria tampoco cambiará    ArrayResize(arr,1);    Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB"); //--- la memoria no utilizada por la matriz queda libre gracias a la eliminación de la reserva    ArrayResize(arr,1,-1);    Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");   }
   ```
4.  Se han añadido a la biblioteca estándar funciones para la construcción de gráficos. Para usarlas, incluya el archivo MQL5\Include\Graphics\Graphic.mqh en su proyecto.Construcción de un gráfico de 3 series de datos con la ayuda de GraphPlot:

   ```
   #include <Graphics/Graphic.mqh> double Func1(double x) { return MathPow(x,2); } double Func2(double x) { return MathPow(x,3); } double Func3(double x) { return MathPow(x,4); } void OnStart()   {    GraphPlot(Func1,Func2,Func3,-2,2,0.05,CURVE_LINES);   }
   ```

   Resultado:

   ![](https://www.metatrader5.com/c/17/0/terminal_8__2.png)

   Construcción de un gráfico usando una matriz de datos con la ayuda de GraphPlot:

   ```
   #include <Math/Stat/Binomial.mqh> #include <Graphics/Graphic.mqh> void OnStart(void)   {    double    vars[101];    double    results[101];    const int N=2000; //---      MathSequence(0,N,20,vars);    MathProbabilityDensityBinomial(vars,N,M_PI/10,true,results);    ArrayPrint(results,4);    GraphPlot(results); //---   }
   ```

   Resultado:

   ![](https://www.metatrader5.com/c/17/0/terminal_8_2__2.png)
5.  Actualizadas las funciones para trabajar con estadística matemática en la biblioteca estándar. Se ha puesto a prueba a gran escala la calidad y la precisión de todas las funciones tanto en la versión de MQL5, como en el lenguaje R fuente. Para controlar la precisión y la velocidad del funcionamiento, se distribuyen pruebas unitarias con la biblioteca estadística. Se encuentran en el catálogo \MQL5\Scripts\UnitTests\Stat.

     - TestStat.mq5 es el script principal de prueba para comprobar los resultados de los cálculos
     - TestPrecision.mq5 es el test de precisión de los cálculos
     - TestBenchmark.mq5 es el test con medición de la productividad de los cálculos

### Tester

1.  Ampliados los ajustes del retraso de ejecución de las solicitudes comerciales al realizar la simulación. Ahora es posible realizar una simulación con un robot teniendo en cuenta una variedad aún mayor de condiciones comerciales: desde un caso ideal sin retrasos, hasta considerando un retraso indicado por el usuario.

   ![](https://www.metatrader5.com/c/17/0/terminal_10__2.png)

   Antes solo estaba disponible el [modo de retraso aleatorio](https://www.metatrader5.com/es/terminal/help/algotrading/testing#settings).
2.  Corregido el error de formación del volumen de ticks de las barras al simular en el modo OHLC en М1.
3.  Corregida la inscripción de la hora de apertura de las órdenes y posiciones con una precisión de hasta un milisegundo al comerciar en el modo con cobertura.
4.  Corregido el error "old tick" (el tick ha expirado), que aparecía en la simulación multidivisa o de marco temporal múltiple en el modo de ticks reales.
5.  Acelerado el funcionamiento de la función CopyTicks en el caso de que los ticks hayan sido leídos de una base localizada en el disco.

### MetaEditor

1.  Los comandos para trabajar con el repositorio de versión de los códigos fuente MQL5 Storage han sido añadidos al menú contextual del archivo en el Navegador y al panel de instrumentos.

   ![](https://www.metatrader5.com/c/17/0/terminal_15__2.png)
2.  Corregido el error que rompía ocasionalmente la integridad de la base local MQL5 Storage al trabajar con más de 1024 archivos en el repositorio.
3.  Corregidos los errores de representación del árbol de archivos de MQL5 Storage.
4.  Corregida la representación un archivo tras la sustitución masiva de texto.

Documentación actualizada.

**Lea las noticias anteriores:**

- [MetaTrader 5 iOS build 1425](https://www.metatrader5.com/es/releasenotes/iphone/1391)
- [MetaTrader 5 build 1455: Biblioteca de funciones matemáticas en MQL5](https://www.metatrader5.com/es/releasenotes/terminal/1384)
- [Plataforma web MetaTrader 5: optimización del código y nuevas posibilidades de la interfaz](https://www.metatrader5.com/es/releasenotes/terminal/1382)
- [MetaTrader 5 iOS build 1403](https://www.metatrader5.com/es/releasenotes/iphone/1379)
- [MetaTrader 5 Android build 1372](https://www.metatrader5.com/es/releasenotes/android/1377)
