Versión beta de la plataforma MetaTrader 5 build 1995: Calendario económico, programas MQL5 como servicios y API para el lenguaje R

 

El 15 de febrero de 2019 se lanzará la versión actualizada de la plataforma MetaTrader 5 en el modo beta. Animamos a todos los tráders a unirse a la puesta a prueba de la nueva versión de la plataforma, para chequear todas sus posibilidades de manera independiente y ayudar a los desarrolladores a corregir los posibles errores que se vayan localizando.

Para actualizar al nuevo build 1995 de la plataforma MetaTrader 5, basta con pulsar "Ayuda \ Comprobar actualizaciones del escritorio \ Última versión beta":

Después de finalizar esta etapa de la puesta a prueba de la beta, se lanzará el build final de la nueva plataforma MetaTrader 5.

La actualización contiene los siguientes cambios:

  1. Terminal: El calendario económico incorporado ha sido completamente actualizado.

    El calendario económico es un desarrollo propio. En él encontrará más de 600 índices e indicadores de las mayores economías del mundo: Estados Unidos, la Unión Europea, Japón, Reino Unido, Canadá, Australia, China, etc. Los datos se recopilan en tiempo real a partir de fuentes públicas.

    Aparte de las actualizaciones del contenido, en el calendario ahora tendrá a su disposición diversos filtros de eventos ampliados: por tiempo, prioridad, divisas y países.

    En breve, los usuarios tendrán acceso a los datos del calendario desde los programas MQL5.



  2. Terminal: Añadido un nuevo tipo de programas MQL5: los Servicios. Estos programas permiten crear nuestros propias fuentes de datos de precios para el terminal y transmitir los precios de sistemas externos en tiempo real igual que los servidores comerciales de los brókeres.

    A diferencia de los asesores, indicadores y scripts, los servicios no están vinculados a un gráfico concreto. Los servicios funcionan en segundo plano, y comienzan a funcionar automáticamente al iniciarse el terminal (si no han sido detenidos forzosamente).

    Para gestionar los servicios, se ha añadido al Navegador una subsección aparte:





    Creación de servicios
    Para crear la plantilla de un servicio, use el punto correspondiente del Wizard MQL5. Los servicios tienen un punto de entrada OnStart, de forma análoga a los scripts. En él usted podrá organizar un ciclo constante de obtención y procesamiento de datos con la ayuda de las funciones de red.

    Inicio de servicios
    Para iniciar varias copias de un asesor o indicador con diferentes parámetros, basta con superponerlo a diferentes gráficos. En este caso, además, se crearán varios ejemplares del programa, que funcionarán independientemente unos de otros. Los servicios no están vinculadas a los gráficos, por eso se ha previsto un mecanismo aparte para crear sus ejemplares.

    Elija un servicio en el navegador y pulse "Añadir servicio" en el menú contextual del mismo. Se abrirá una ventana de diálogo estándar del programa MQL5, donde usted podrá permitir/prohibir el comercio y el acceso a las señales, así como establecer los parámetros necesarios.




    Para iniciar e instalar un ejemplar del servicio, utilice el menú del mismo. Para gestionar todos los ejemplares, utilice el menú del propio servicio.

  3. Terminal: Añadido sistema de aprendizaje.

    Ahora, los principiantes podrán aprender fácilemnete a trabajar con la plataforma. Hemos añadido más de 100 consejos interactivos sobre sus funciones principales.

    • Los consejos no le distrairán del trabajo de la plataforma, ya que han sido cuidadosamente incorporados en el panel de herramientas en forma de barra de progreso.
    • Los consejos se muestran solo para las acciones que usted no ha ejecutado en la plataforma.
    • En los consejos se incorporan enlaces interactivos para entrar en diferentes elementos de la interfaz de la plataforma. Por ejemplo, desde un consejo es posible abrir directamente una ventana de diálogo o un menú con el comando necesario.

    A medida que transcurra el aprendizaje y se ejecuten acciones en la plataforma, la barra de progreso se irá llenando.




  4. Terminal: La historia de la cuenta comercial puede mostrarse como posiciones: la plataforma reúne los datos de las trasacciones relacionadas con la posición (apertura, incremento, cierre parcial y total), y agrupa estos datos en una entrada única. Esto le permitirá mirar con facilidad la hora de apertura y cierre de la posición, su volumen, el precio y el resultado total. Ahora esta representación también está disponible en los informes de la historia exportados a los archivos.




  5. Terminal: Añadida una API para solicitar datos del terminal MetaTrader 5 a través de aplicaciones que usan el lenguaje R.

    Para el trabajo, hemos preparado un paquete MetaTraderR especial. En este hay una DLL para la interacción entre R y el terminal MetaTrader 5, así como documentación y archivos r auxiliares. En este momento, el paquete se encuentra en proceso de registro en el repositorio CRAN, y en breve estará disponible para la descarga y la instalación.




    Para instalar el paquete, use el siguiente comando:
    R CMD INSTALL --build MetaTraderR
    Actualmente, para solicitar los datos, tiene a su disposición los siguientes comandos:

    • MT5Initialize — iniciar e instalar la conexión con el terminal MetaTrader 5. Al ejecutar el comando, el terminal se inicia en caso necesario.
    • MT5Shutdown — desinicializar e interrumpir la conexión con el terminal MetaTrader 5.
    • MT5Version — obtener la versión del terminal MetaTrader 5.
    • MT5TerminalInfo — obtener el estado y los parámetros de conexión del terminal con servidor del bróker (número de cuenta y dirección del servidor).
    • MT5WaitTerminal — esperar 2 minutos para la conexión del terminal MetaTrader 5 con el servidor del bróker.
    • MT5CopyTicksFrom(symbol, from, count, flags) — copiar los ticks con la fecha indicada, en el número establecido. La fecha se indica en milisegundos desde 1970.01.01.
    • MT5CopyTicksRange(symbol, from, to, flags) — copiar los ticks del intervalo de fechas indicado. Las fechas se indican en milisegundos desde 1970.01.01.
    • MT5CopyRatesFrom(symbol, timeframe, from, count) — copiar las barras de minuto con la fecha indicada, en el número establecido. La fecha se indica en segundos desde 1970.01.01.
    • MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) — copiar las barras de minuto con la posición indicada desde la última barra.
    • MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) — copiar las barras del intervalo de fechas indicado. Las fechas se indican en segundos desde 1970.01.01.

    En el futuro, se ampliará la lista de comandos soportados.

  6. Terminal: Optimizada la ventana de diálogo de cierre de una posición comercial con otra opuesta. Ahora su funcionamiento no se ralentiza cuando existe un gran número de posiciones abiertas.
  7. Terminal: Corregido el error de cálculo de los instrumentos sintéticos, que provocaba la formación de omisiones de datos.
  8. Terminal: Ahora, al eliminar un instrumento personalizado, se eliminan los archivos de su historia de barras y de ticks. Esto permite evitar la acumulación de datos utilizados en el disco duro.
  9. MQL5: Corregido y acelerado significativamente el trabajo con las historias de ticks y de barras.
  10. MQL5: Corregidas y significativamente aceleradas las funciones de cambio de la historia de ticks y de barras en los instrumentos comerciales personalizados CustomTicks* y CustomRates*.
  11. MQL5: Añadidas nuevas funciones de conversión de datos.

    CharArrayToStruct - Copia una matriz de tipo uchar en una estructura POD.
    bool  CharArrayToStruct(
       void&         struct_object,    // estructura
       const uchar&  char_array[],     // matriz
       uint          start_pos=0       // posición inicial en la matriz
       );
    StructToCharArray - Copia una estructura POD en una matriz de tipo uchar.
    bool  StructToCharArray(
       const void&  struct_object,     // estructura
       uchar&       char_array[],      // matriz
       uint         start_pos=0        // posición inicial en la matriz
       );

  12. Añadida la función MathSwap para cambiar el orden del byte en los valores ushort, uint y ulong.
    ushort MathSwap(ushort value);
    uint   MathSwap(uint   value);
    ulong  MathSwap(ulong  value);

  13. MQL5: Añadidas funciones de red para crear conexiones TCP con hostings remotos a través de sockets de sistema:

    • SocketCreate — crea un socket con las banderas indicadas y retorna su manejador
    • SocketClose — cierre el socket
    • SocketConnect — ejecuta la conexión al servidor, con control de límite de tiempo
    • SocketIsConnected — comprueba si está conectado el socket en el momento actual
    • SocketIsReadable — obtiene el número de bytes que se pueden leer desde el socket
    • SocketIsWritable — comprueba si es posible registrar datos en el socket en el momento actual
    • SocketTimeouts — establece el límite de tiempo para obtener y enviar los datos para el objeto de sistema del socket
    • SocketRead — lee los datos desde el socket
    • SocketSend — registra los datos en el socket
    • SocketTlsHandshake — inicia una conexión TLS (SSL) protegida con el host indicado según el protocolo TLS Handshake
    • SocketTlsCertificate — obtiene los datos sobre el certificado usado para proteger la conexión de red
    • SocketTlsRead — lee los datos de una conexión TLS protegida
    • SocketTlsReadAvailable — lee todos los datos disponibles de una conexión TLS protegida
    • SocketTlsSend — envía los datos a través de una conexión TLS protegida

    La dirección del host al que se realiza la conexión con la ayuda de funciones de red se deberá añadir explícitamente a la lista de permitidas en los ajustes del terminal.

    Para trabajar con las funciones de red se han añadido nuevos códigos de errores:

    • ERR_NETSOCKET_INVALIDHANDLE (5270) — a la función se ha transmitido un puntero incorrecto del socket
    • ERR_NETSOCKET_TOO_MANY_OPENED (5271) — se han abierto demasiados sockets (128 como máximo)
    • ERR_NETSOCKET_CANNOT_CONNECT (5272) — error al conectar con el host remoto
    • ERR_NETSOCKET_IO_ERROR (5273) — error de envío/recepción de datos del socket
    • ERR_NETSOCKET_HANDSHAKE_FAILED (5274) — error al establecer una conexión protegida (TLS Handshake)
    • ERR_NETSOCKET_NO_CERTIFICATE (5275) — no hay datos sobre el certificado con el que se protege la conexión

  14. MQL5: Añadidas nuevas funciones para trabajar con cadenas:

    StringReserve — reserva en la memoria para la cadena un búfer del tamaño indicado.
    bool  StringReserve(
       string&        string_var,          // cadena
       uint           new_capacity         // tamaño del búfer para guardar la cadena
       );
    StringSetLength — establece para una cadena la longitud indicada en símbolos.
    bool  StringSetLength(
       string&        string_var,          // cadena
       uint           new_length           // nueva longitud de la cadena
       );

  15. MQL5: Añadidas nuevas funciones para trabajar con matrices:

    ArrayRemove — Elimina de la matriz el número indicado de elementos, comenzando por el índice indicado.
    bool  ArrayRemove(
       void&         array[],              // matriz de cualquier tipo
       uint          start,                // desde qué índice comenzamos a eliminar
       uint          count=WHOLE_ARRAY     // número de elementos
       );
    ArrayInsert — Inserta en la matriz-receptor el número indicado de elementos, comenzando por el índice establecido.
    bool  ArrayInsert(
       void&         dst_array[],          // matriz-receptor
       const void&   src_array[],          // matriz-fuente
       uint          dst_start,            // índice en la matriz-receptor para la inserción
       uint          src_start=0,          // índice en la matriz-fuente para el copiado
       uint          count=WHOLE_ARRAY     // número de elementos insertados
       );
    ArrayReverse — Invierte en la matriz el número indicado de elementos, comenzando por el índice indicado.
    bool  ArrayReverse(
       void&         array[],              // matriz de cualquier tipo
       uint          start=0,              // desde qué índice comenzamos a invertir la matriz
       uint          count=WHOLE_ARRAY     // número de elementos
       );

  16. MQL5: A las funciones CustomRatesUpdate, CustomRatesReplace, CustomTicksAdd y CustomTicksReplace se añade el parámetro "uint count" para indicar el número de elementos de la matriz transmitida que serán utilizados. Por defecto, para el parámetro se usa el valor WHOLE_ARRAY. Eso significa que se utilizará toda la matriz.
  17. MQL5: Añadida la función CustomBookAdd — transmite el estado de la profundidad de mercado del instrumento personalizado. La función permite retransmitir la profundidad de mercado como si llegase desde el servidor del bróker.
    int  CustomBookAdd(
       const string        symbol,            // nombre del símbolo
       const MqlBookInfo&  books[]            // matriz con las descripciones de los elementos de la profundidad de mercado
       uint                count=WHOLE_ARRAY  // número de elementos que se usarán
       );
  18. MQL5: Añadida la sobrecarga de la función CustomSymbolCreate, que permite crear un instrumento comercial personalizado basado en uno ya existente. Después de crearlo, cualquier propiedad del símbolo se puede cambiar por el valor necesario con las funciones correspondientes.
    bool  CustomSymbolCreate(
       const string        symbol_name,       // nombre del símbolo personalizado
       const string        symbol_path="",    // nombre del grupo en el que se creará el símbolo
       const string        symbol_origin=NULL // nombre del símbolo sobre cuya base se creará el símbolo personalizado
       );
    Nombre del símbolo desde el que se copiarán las propiedades del símbolo personalizado creado, se indica en el parámetro "symbol_origin".

  19. Actualizada la función StringToTime, que convierte una cadena con una fecha/hora en un valor del tipo datetime. Ahora da soporte a los siguientes formatos de fecha:

    • yyyy.mm.dd [hh:mi]
    • yyyy.mm.dd [hh:mi:ss]
    • yyyymmdd [hh:mi:ss]
    • yyyymmdd [hhmiss]
    • yyyy/mm/dd [hh:mi:ss]
    • yyyy-mm-dd [hh:mi:ss]

  20. MQL5: Añadida a la enumeración ENUM_TERMINAL_INFO_INTEGER la propiedad TERMINAL_VPS, señal de que el terminal ha sido iniciado en el servidor virtual MetaTrader Virtual Hosting (MetaTrader VPS). Si el programa está iniciado en el hosting, usted podrá desactivar todas sus funciones visuales, puesto que en el servidor virtual no hay interfaz gráfica de usuario.
  21. MQL5: Añadida a la enumeración ENUM_SYMBOL_INFO_INTEGER la nueva propiedad SYMBOL_EXIST — señal de que existe un símbolo con ese nombre.
  22. MQL5: Corregida la tipificación al usar la declaración preliminar de una función de plantilla.
  23. MQL5: Añadida la reinicialización de los indicadores al cambiar la cuenta comercial.
  24. MQL5: Optimizado el funcionamiento de la función StringSplit.
  25. MQL5: Corregidos errores en la biblioteca estándar.
  26. Tester: Añadida la función TesterStop, la finalización anticipada estándar del asesor en un agente de simulación. Ahora usted puede interrumpir forzosamente la simulación al alcanzar el número establecido de reducción o de acuerdo con cualquier otro criterio.

    La simulación realizada con la ayuda de esta función, se considera exitosa. Después de llamarla, al terminal se le transmite la historia comercial obtenida como resultado de la simulación, así como todas las estadísticas comerciales.

  27. Tester: Desactivada la posibilidad de simular y optimizar expertos a través de MQL5 Cloud Network en el modo de uso de ticks reales. Este modo se puede usar solo en agentes locales y farms en la red local.
  28. Tester: Mejorado el trabajo con los indicadores en el modo visual. Ahora el gráfico de precio y las líneas del indicador se dibujan sincrónicamente incluso con la máxima velocidad de visualización.
  29. Tester: Optimizada y acelerada significativamente la simulación y optimización.
  30. Tester: Corregida la depuración de los indicadores con los datos históricos. Ahora las funciones OnInit y OnDeinit de los indicadores se puede depurar correctamente.
  31. Tester: Acelerado el acceso a los datos históricos al simular expertos multidivisa.
  32. Tester: Corregidos los errores que provocaban el congelamiento del simulador visual al depurar con datos históricos.
  33. Tester: Acelerado el inicio de las pasadas de optimización al procesar con un agente un paquete de tareas.
  34. Tester: Modificada la política de distribución de paquetes a los agentes de simulación. El tamaño del paquete ha sido aumentado, lo que ha provocado una reducción significativa de los gastos en operaciones de red.
  35. Tester: Modificado el comportamiento de la opción de uso de agentes locales, de red y en la nube. Ahora, al desactivar estas opciones, las tareas distribuidas se ejecutan hasta el final, mientras que las nuevas se dejan de distribuir. Anteriormente, estas opciones funcionaban de forma análoga al comando "Desactivar", que interrumpía de inmediato el funcionamiento de los agentes.




  36. MetaEditor: Añadido el soporte para símbolos no-ANSI en el depurador. Ahora, las expresiones observadas se procesan correctamente, incluso si el nombre de la variable se indica en cirílico.
  37. Añadida la traducción de la interfaz al croata.
  38. Documentación actualizada.
La actualización estará disponible a través del sistema LiveUpdate.
Razón de la queja: