Versión beta de la plataforma MetaTrader 5 build 1910: Arrastre libre de gráficos y bibliotecas .Net en MQL5

 

El 14 de octubre de 2018 se lanzará la versión actualizada de la plataforma MetaTrader 5 en el modo beta. Vamos a actualizar nuestro servidor demo público MetaQuotes-Demo, que se encuentra en la dirección access.metatrader5.com:443. 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 1910 de la plataforma MetaTrader 5, basta con conectarse al servidor access.metatrader5.com:443.

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: Ahora el usuario podrá sacar los gráficos de los instrumentos financieros de los límites de la ventana del terminal comercial.

    Esto resulta muy cómodo al trabajar con varios monitores. Por ejemplo, podemos ubicar en uno de ellos la ventana principal de la plataforma y monitorear el estado de la cuenta, mientras que en otro hacemos un seguimiento de los gráficos para la valorar la situación del mercado. Para separar un gráfico del terminal, desactive la función "Fijado" en su menú contextual. A continuación, coloque el gráfico en el monitor deseado.



    Para que no tener que alternar entre monitores para aplicar los objetos analíticos o indicadores, los gráficos separados disponen de su propio panel de instrumentos. Para cambiar el conjunto de comandos u ocultar el panel de instrumentos, utilice su menú contextual.

  2. Terminal: Chats incorporados completamente actualizados. Ahora dan soporte a ventanas de diálogo y canales grupales. Usted podrá conversar en privado con un cierto grupo de gente en un único espacio, sin tener que alternar entre diferentes ventanas de diálogo; asimismo, podrá crear canales temáticos a su gusto, en el idioma que desee. Comuníquese con colegas y amigos en MQL5.community sin visitar el sitio web.

    Cada chat grupal y canal puede ser público o privado. El propio autor decide si es posible unirse a él libremente o solo por invitación. Además, en los canales es posible designar un moderador para controlar la comunicación de manera adicional.



  3. Terminal: Añadido el soporte de volúmenes de precisión aumentada para el comercio con criptomonedas. Ahora el volumen mínimo posible para las operaciones comerciales es 0.00000001 de lote. Se ha añadido a la profundidad de mercado, la banda de operaciones y otros elementos de la interfaz la posibilidad de representar los volúmenes con una precisión de 8 dígitos decimales.

    El volumen mínimo y su salto de cambio dependerá de los ajustes del instrumento financiero en el lado del bróker.




  4. Terminal: Añadida a la ventana "Instrumentos" una pestaña con los artículos publicados en MQL5.community. Más de 600 materiales detallados sobre el desarrollo de estrategias comerciales en MQL5, ahora disponibles sin salir del terminal. Cada semena se publican nuevos artículos.



  5. Terminal: Añadido el soporte de autorización ampliada con uso de certificados al trabajar con Wine.
  6. Terminal: Corregida la representación de la profundidad de mercado al limitar su profundidad a un nivel.
  7. Terminal: Añadido al panel de instrumentos "Estándar" el comando "Guardar como imagen". Ahora resulta aún más fácil hacer capturas de los gráficos y compartirlas en la comunidad.




  8. Terminal: Corregido el uso del desplazamiento temporal al importar barras y ticks. Anteriormente, el desplazamiento no se aplicaba en ciertos casos.



  9. MQL5: Añadido el soporte nativo de las bibliotecas .NET con importación "inteligente" de funciones. Ahora las bibliotecas .NET se pueden usar sin necesidad de escribir envoltorios especiales: el MetaEditor se encarga de ello.

    Para trabajar con las funciones de una biblioteca .NET, basta con importar la propia DLL sin indicar funciones concretas. El MetaEditor importará automáticamente todas las funciones con las que se pueda trabajar:
    • Las estructuras simples (POD, plain old data)
    • Las estructuras con tipos de datos sencillos
    • Las funciones estáticas públicas en cuyos parámetros se usan solo tipos sencillos y estructuras POD o sus matrices

    Para llamar las funciones de una biblioteca, solo tiene que importarlas:
    #import "TestLib.dll"
    
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       int x=6;
       TestClass::Inc(x);
       Print(x);
      }
    El código C# de la función Inc de la clase TestClass tiene el aspecto siguiente:
    public class TestClass
    {
       public static void Inc(ref int x)
       {
        x++;
       }
    }
    Como resultado de la ejecución, el script retornará el valor 7.

  10. MQL5: Añadido el soporte de los especificadores inline, __inline, __forceinline al realizar el análisis sintáctico del código. La presencia de estos especificadores en el código no provocará error, pero tampoco influirá en la compilación. En estos momentos, esto permite transferir con mayor facilidad el código С++ a MQL5.
    Podrá encontrar información más detallada sobre los especificadores en MSDN.

  11. MQL5: Se ha realizado una optimización sustancial de los programas MQL5. En algunos casos, el incremento del rendimiento puede alcanzar el 10%. Para lograr un incremento de la velocidad, compile de nuevo sus programas en la nueva versión del MetaEditor.
    Por desgracia, la optimización adicional ha provocado la pérdida de la compatibilidad de los nuevos programas con las anteriores versiones del terminal. Todos los programas compilados en el MetaEditor de la versión 1910 y superiores no se iniciarán en los terminales de la versión 1880 e inferiores. En este caso, además, los programas compilados anteriormente en las anteriores versiones del MetaEditor funcionarán en los nuevos terminales.

  12. MQL5: Se ha realizado un enorme trabajo de optimización de multitud de funciones MQL5.
  13. MQL5: Añadidas nuevas propiedades para fijar/separar gráficos de la ventana principal del terminal y gestionar su posición.

    A la enumeración ENUM_CHART_PROPERTY_INTEGER se han añadido:

    • CHART_IS_DOCKED — ventana del gráfico fijada. Si establecemos el valor false, podremos arrastrar el gráfico fuera de los límites del terminal.
    • CHART_FLOAT_LEFT — coordenada izquierda del gráfico desprendido con respecto a la pantalla virtual.
    • CHART_FLOAT_TOP — coordenada superior del gráfico desprendido con respecto a la pantalla virtual.
    • CHART_FLOAT_RIGHT — coordenada derecha del gráfico desprendido con respecto a la pantalla virtual.
    • CHART_FLOAT_BOTTOM — coordenada inferior del gráfico desprendido con respecto a la pantalla virtual.

    A la enumeración ENUM_TERMINAL_INFO_INTEGER se han añadido:

    • TERMINAL_SCREEN_LEFT — coordenada izquierda de la pantalla virtual. La pantalla virtual es un rectángulo que abarca todo el monitor. Si en el sistema hay dos monitores y su orden se ha establecido de derecha a izquierda, la coordenada izquierda de la pantalla virtual puede encontrarse en el límite de los dos monitores.
    • TERMINAL_SCREEN_TOP — coordenada superior de la pantalla virtual.
    • TERMINAL_SCREEN_WIDTH — anchura del terminal.
    • TERMINAL_SCREEN_HEIGHT — altura del terminal.
    • TERMINAL_LEFT — coordenada izquierda del terminal con respecto a la pantalla virtual.
    • TERMINAL_TOP — coordenada superior del terminal con respecto a la pantalla virtual.
    • TERMINAL_RIGHT — coordenada derecha del terminal con respecto a la pantalla virtual.
    • TERMINAL_BOTTOM — coordenada inferior del terminal con respecto a la pantalla virtual.

  14. MQL5: Añadido el campo volume_real a las estructuras MqlTick y MqlBookInfo. Dicho campo ha sido pensado para trabajar con el volumen de precisión aumentada. El valor "volume_real" tiene mayor prioridad, en comparación con "volume". El servidor usará precisamente este valor, si se ha indicado.

    struct MqlTick
      {
       datetime         time;          // Hora de la última actualización de precios
       double           bid;           // Precio Bid actual
       double           ask;           // Precio Ask actual
       double           last;          // Precio actual de la última transacción (Last)
       ulong            volume;        // Volumen para el precio Last actual
       long             time_msc;      // Hora de la última actualización de precios en milisegundos
       uint             flags;         // Banderas de los ticks
       double           volume_real;   // Volumen para el precio Last actual con precisión aumentada
      };

    struct MqlBookInfo
      {
       ENUM_BOOK_TYPE   type;            // tipo de solicitud de la enumeración ENUM_BOOK_TYPE
       double           price;           // precio
       long             volume;          // volumen
       double           volume_real;     // volumen con precisión aumentada
      };

  15. MQL5: A la enumeración ENUM_SYMBOL_INFO_DOUBLE se han añadido nuevas propiedades:

    • SYMBOL_VOLUME_REAL — volumen de la última transacción ejecutada;
    • SYMBOL_VOLUMEHIGH_REAL — valor máximo del volumen de la transacción ejecutada en el día actual;
    • SYMBOL_VOLUMELOW_REAL — valor mínimo del volumen de la transacción ejecutada en el día actual;

    Para obtener estas propiedades, use la función SymbolInfoDouble.

  16. MQL5: A la enumeración ENUM_MQL_INFO_INTEGER se le ha añadido la propiedad MQL_FORWARD, la bandera que indica que el programa se encuentra en el modo de simulación en tiempo real (forward-testing).
  17. MQL5: Se han suavizado los requisitos de conversión de las enumeraciones. Al realizar una conversión implícita, el compilador sustituirá automáticamente el valor de la enumeración correcta y mostrará una advertencia.

    Para el código siguiente:
    enum Main
      {
       PRICE_CLOSE_,
       PRICE_OPEN_
      };
    
    input Main Inp=PRICE_CLOSE;
    //+------------------------------------------------------------------+
    //| Start function                                                   |
    //+------------------------------------------------------------------+
    void OnStart()
      {
      }
    El compilador mostrará la advertencia:
    implicit conversion from 'enum ENUM_APPLIED_PRICE' to 'enum Main'
    'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used
    Anteriormente, en este caso se mostraba el error:
    'PRICE_CLOSE' - cannot convert enum
    El compilador seguirá mostrando el error, si las enumeraciones se usan incorrectamente en los parámetros de las funciones.

  18. MQL5: Corregidos los errores de compilación de las funciones de plantilla. Ahora, al usar las funciones de plantilla sobrecargadas, se instalará solo la sobrecarga necesaria, y no todas las disponibles.
    class X {  };
    
    void f(int)  {  }
      
    template<typename T>
    void a(T*) { new T(2); }  // antes, en este lugar el compilador daba error
      
    template<typename T>
    void a()  { f(0); }
      
      
    void OnInit()  { a<X>(); }  
    
  19. MQL5: Optimizados ciertos casos de acceso a la historia de ticks a través de la función CopyTicks*.
  20. Tester: Corregido el registro de precisión de la divisa del depósito al simular/optimizar y formar los informes correspondientes.
  21. Tester: Optimizado y acelerado el funcionamiento del simulador de estrategias.
  22. MetaEditor: Corregida la búsqueda de palabras completas. Ahora, al realizar la búsqueda, el subrayado se considera un carácter normal, y no un separador de palabras.
  23. Documentación actualizada.