MetaTrader 5 build 1525: presentación de la historia en forma de posiciones y mejoras en el simulador

¿Qué novedades tiene MetaTrader 5?

27 enero 2017

Terminal

  1. Añadida la presentación de la historia comercial en forma de posiciones. El terminal recopila los datos de las transacciones relacionadas con una posición (apertura, crecimiento, cierre parcial y total) y agrupa estos datos en una única entrada, donde se puede ver:

    • La hora de apertura y cierre de la posición, definidas por la primera y la última transacción, respectivamente
    • El volumen de la posición; si la posición está parcialmente cerrada, se muestra el volumen cerrado y el volumen original
    • El precio de apertura medio ponderado y el precio de cierre de la posición
    • El resultado financiero total de las transacciones relacionadas con la posición




    Para las cuentas con cobertura, este tipo de presentación de las posiciones es casi análogo a la historia de la cuenta en MetaTrader 4.




  2.   Se ha añadido un comando para visualizar la historia de las transacciones en el gráfico de un símbolo concreto.

    • Para mostrar todas las transacciones solo del símbolo de la posición/transacción elegida, pulse "Añadir transacciones de [Nombre del símbolo]". Las transacciones se añadirán a todos los gráficos abiertos en este momento de este símbolo. Si no hay gráficos semejantes, se abrirá uno nuevo.
    • Para mostrar las transacciones de todos los símbolos de la historia de la cuenta, pulse "Añadir todas las transacciones". A todos los gráficos abiertos se añadirán todas las transacciones de los símbolos correspondientes.




  3. Añadida la muestra del nombre internacional del instrumento financiero en las especificaciones del contrato, así como la posibilidad de buscar sobre el mismo en la ventana de gestión de instrumentos.




  4. Añadida la posibilidad de establecer rápidamente la resolución de la ventana del terminal. La función es cómoda para aquellos que realizan vídeos. En el menú están disponibles las resoluciones más populares para la publicación en servicios de vídeo como YouTube.



  5. las plantillas y perfiles de los gráficos se han trasladado desde [catálogo de datos del terminal\Profiles] a [catálogo de datos del terminal\MQL5\Profiles]. Ahora resulta muy sencillo añadir plantillas al repositorio MQL5 Storage y usarlas desde cualquier computadora que tenga.

MQL5

  1. Añadido el soporte de variables de recurso. El uso de estas variables puede facilitar significativamente la escritura de algunos programas. Por ejemplo, podrá escribir el código OpenCL en un archivo CL aparte, y después incluir este archivo en forma de línea en los recursos de su programa MQL5. Antes, en lugar de esto, había que describir el código como una gran variable de línea.

    Declaración de la variable de recurso
    #resource ruta_al_archivo_del_recurso as tipo_de_variable_de_recurso nombre_de_la_variable_de_recurso

    Particularidades
    • Para los archivos de línea se define la codificación de forma automática mediante BOM (encabezamiento). Si no hay BOM, la codificación se determina por el contenido del archivo. Tienen soporte las codificaciones ANSI, UTF-8 y UTF-16. Todas las líneas se transforman en Unicode.
    • Solo podemos recurrir a los datos de este recurso a través de una variable. El direccionamiento automático a través de "::<resource name>" no funciona.
    • El tipo especial de variable de recurso bitmap indica al compilador que el recurso es una imagen gráfica. La variable de recurso en este caso recibe el tipo uint.
    • Al usar una imagen de 24 bits, para todos sus píxeles del componente del canal alfa se establece en el valor 255.
    • Al usar una imagen de 32 bits sin canal alfa, para todos sus píxeles del componente del canal alfa también se establece en el valor 255.
    • Al cargar una imagen de 32 bits con canal alfa, no tiene lugar ninguna manipulación con los píxeles.
    • La matriz-variable de recurso del tipo bitmap puede tener dos dimensiones. En este caso, el tamaño de la matriz se definirá como [altura_de_la_imagen][anchura_de_la_imagen].
    • En el caso de que la matriz sea unidimensional, el número de elementos se establecerá como altura_de_la_imagen*anchura_de_la_imagen.
    • Si el tamaño del archivo del recurso no es múltiplo del tamaño del elemento de la matriz, el resto de los datos se cortará. Por ejemplo, si el archivo tiene un tamaño de 14 bytes, para la matriz int el número de elementos será 3, y los 2 bytes restantes (14 - sizeof(int)*3) se descartarán.

    Ejemplos de uso
    #resource "data.bin" as int ExtData[]             // declaración de matriz de tipo numérico que contiene los datos del archivo data.bin
    #resource "data.bin" as MqlRates ExtData[]        // declaración de matriz de estructuras sencillas que contiene los datos del archivo data.bin
    
    #resource "data.txt" as string ExtCode            // declaración de línea que contiene los datos del archivo data.txt
    #resource "data.txt" as string ExtCode[]          // declaración de matriz de línea que contiene los datos del archivo data.txt
    
    #resource "image.bmp" as bitmap ExtBitmap[]       // declaración de matriz unidimensional que contiene el ráster del archivo BMP, tamaño de la matriz = height * width
    #resource "image.bmp" as bitmap ExtBitmap2[][]    // declaración de matriz bidimensional que contiene el ráster del archivo BMP, tamaño de la matriz [height][width]

  2. Añadida la propiedad CHART_SHOW para desactivar la representación del gráfico. Para obtener e instalar las propiedades se usan las funciones ChartGetInteger y ChartSetInteger.

    Si se establece false, se desactivará el dibujado de cualquier atributo del gráfico de precio y se eliminarán los márgenes en los bordes del gráfico: la escala de tiempo y precio, la barra de navegación rápida, los eventos del Calendario, los signos de las operaciones, las sugerencias de los indicadores y barras, las subventanas de los indicadores, los histogramas de volumen, etcétera.

    La desactivación del dibujado es una solución ideal para crear una interfaz de programa personalizada usando los recursos gráficos.

    Los objetos gráficos se dibujan siempre, independientemente del valor establecido en la propiedad CHART_SHOW.

  3. Añadida la propiedad CHART_KEYBOARD_CONTROL para activar/desactivar el control del gráfico con la ayuda de las teclas ("Home", "End", "PageUp", "+", "-", "Flecha arriba", etcétera). La definición  CHART_KEYBOARD_CONTROL=false permite desactivar el desplazamiento y el escalado del gráfico, pero manteniendo intacta la posibilidad de obtener los eventos de pulsación de estas teclas en OnChartEvent.

    Para obtener e instalar las propiedades se usan las funciones ChartGetInteger y ChartSetInteger.

  4. Añadidas nuevas funciones y propiedades para trabajar con OpenCL.

    Nuevas propiedades para trabajar con la memoria
    Con la ayuda de CLGetInfoIntegrer ahora es posible obtener cuatro nuevas propiedades:
    • CL_DEVICE_MAX_WORK_GROUP_SIZE — número total de grupos locales de trabajo disponibles para un dispositivo OpenCL.
    • CL_KERNEL_WORK_GROUP_SIZE — número total de grupos locales de trabajo disponibles para un programa OpenCL.
    • CL_KERNEL_LOCAL_MEM_SIZE — tamaño de la memoria local en bytes usada por un programa OpenCL para todas las tareas paralelas en el grupo. Use CL_DEVICE_LOCAL_MEM_SIZE para obtener el máximo disponible.
    • CL_KERNEL_PRIVATE_MEM_SIZE — tamaño mínimo de la memoria privada en bytes usada por cada tarea en el núcleo del programa OpenCL.

    bool CLExecutionStatus(int kernel)
    Retorna el estado de ejecución del programa OpenCL. Como parámetro se transmite el manejador del núcleo del programa OpenCL.

    bool CLSetKernelArgMemLocal(int kernel_handle,int arg_index,ulong local_mem_size)
    Define el búfer local como argumento de la función núcleo. Como parámetro se transmite el manejador del núcleo del programa OpenCL, el número del argumento openCL de la función y el tamaño del búfer.

  5. Añadido el código de respuesta TRADE_RETCODE_LIMIT_POSITIONS. El número de posiciones abiertas que podemos tener simultáneamente en la cuenta puede estar limitado por los ajustes del servidor. Al alcanzar el límite, como respuesta a la colocación de una orden, el servidor retornará el error TRADE_RETCODE_LIMIT_POSITIONS. La limitación funciona de forma diferente dependiendo del tipo de registro de posiciones en la cuenta:

    • Sistema de compensación - se registra el número de posiciones abiertas. Al alcanzar el límite, la plataforma no permite colar nuevas órdenes que den como resultado el aumento del número de posiciones abiertas. De hecho, la plataforma permite colocar órdenes solo de aquellos símbolos de los que ya existen órdenes abiertas. En el sistema de compensación, al comprobar el límite no se tienen en cuenta las órdenes pendientes actuales, puesto que su ejecución puede provocar el cambio de las posiciones actuales, pero no el aumento de su número.
    • Sistema de cobertura - aparte de las posiciones abiertas, se tienen en cuenta las órdenes pendientes colocadas, puesto que su activiación siempre causará la apertura de una nueva posición. Al alcanzar el límite, la plataforma no permitirá colocar órdenes de mercado de apertura de posiciones, así como órdenes pendientes.

  6. Corregido el error que en ocasiones provocaba la omisión de ticks en la historia de ticks.
  7. Corregido el error de tipado indirecto de plantillas.
  8. Actualizada la biblioteca de trabajo con las estadísticas matemáticas.
  9. Añadida la función TranslateKey, que retorna  un símbolo Unicode según el código virtual de una tecla, teniendo en cuenta el idioma de entrada actual y el estado de las teclas de control. La función utiliza ToUnicodeEx para transformar las teclas pulsadas por el usuario en símbolos Unicode.
    void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
      {
       if(id==CHARTEVENT_KEYDOWN)
         {
          short sym=TranslateKey((int)lparam);
          //--- si el símbolo introducido se ha transformado con éxito en Unicode
          if(sym>0)
             Print(sym,"'",ShortToString(sym),"'");
          else
             Print("Error in TranslateKey for key=",lparam);
         }
      }

Market

  1. Market: Corregida la apertura de la página del producto al descargar la versión demo.

Tester

  1. Después de finalizar la optimización, los resultados ahora se clasifican de forma automática en la columna "Resultado".
  2. En el menú contextual de la pestaña de resultados de optimización y el diario se ha añadido una opción para pasar a los resultados después de finalizar la optimización.
  3. El simulador de estrategias permanecerá en el modo de optimización después de iniciar una simulación única. Antes, si se iniciaba una simulación única desde la pestaña de resultados, el simulador de estrategias pasaba plenamente al modo de simulación única. Para realizar de nuevo la optimización era necesario incluirla de nuevo en los ajustes.
  4. Ahora los conjuntos de parámetros se pueden guardar no solo en forma de archivos set, sino también como ajustes del simulador de estrategias local, con fácil acceso a los mismos a través del menú contextual.




  5. Añadida la traducción de la interfaz al mongol, húngaro, rumano y urdu.

MetaEditor

  1. Añadida la posibilidad de cambiar el orden de las expresiones observadas en la ventana de depuración. Solo tendrá que arrastrar la expresión con el ratón a la posición adecuada.




  2. Corregido el error de detección de la codificación de los archivos fuente.
  3. Corregida la búsqueda por archivos en la codificación UTF-8.
  4. Corregido el error de selección del texto con el ratón cuando hay en el mismo signos de tabulación.
  5. Añadida la traducción de la interfaz al húngaro y el rumano.

Actualización de la documentación.