MetaTrader 5 build 3260: Operaciones masivas, funciones de matrices y vectores y mejoras en el chat

En el menú contextual de la sección de comercio ha aparecido un nuevo apartado: "Operaciones masivas". La lista de comandos disponibles se forma en él de forma inteligente, dependiendo de la operación seleccionada y el tipo de cuenta del usuario

15 abril 2022

Terminal

  1. Añadidos los comandos necesarios para el cierre de posiciones y la eliminación de órdenes pendientes de forma masiva.

    En el menú contextual de la sección de comercio ha aparecido un nuevo apartado: "Operaciones masivas". La lista de comandos disponibles se forma en él de forma inteligente, dependiendo de la operación seleccionada y el tipo de cuenta del usuario.




    En el menú siempre están disponibles los comandos:
    • Cierre de todas las posiciones. Para las cuentas de cobertura, el sistema primero intenta cerrar las posiciones con posiciones opuestas; las posiciones restantes se cierran según el procedimiento habitual.
    • Cierre de todas las posiciones rentables y perdedoras
    • Eliminación de todas las órdenes pendientes
    • Eliminación de todas las órdenes pendientes por tipos: Límite, Stop, Stop Limit

    Si seleccionamos una posición, aparecerán comandos adicionales en el menú:
    • Cierre de todas las posiciones del mismo símbolo
    • Cierre de todas las posiciones en la misma dirección (para cuentas de cobertura)
    • Cierre de posiciones opuestas del mismo símbolo (para cuentas de cobertura)
    • Viraje de posición (para cuentas de compensación)

    Si seleccionamos una orden pendiente, aparecerán comandos adicionales en el menú:
    • Eliminación de todas las órdenes pendientes para el mismo símbolo
    • Eliminación de todas las órdenes pendientes del mismo tipo para el mismo símbolo

    Para que estos comandos funcionen, el usuario deberá habilitar el comercio con un solo clic en la configuración de la plataforma: Servicio \ Ajustes \ Comercio.
  2. Ampliadas las funciones del chat incorporadas:
    • Añadida la capacidad de responder a un mensaje. El texto del mensaje original se incluirá como una cita en la respuesta.
    • Añadida la capacidad de crear mensajes con diferentes tipos de contenido: imágenes con texto, texto con archivos adjuntos, etc.
    • Corregida la representación del separador de mensajes leídos y no leídos.
    • Asimismo, se han corregido diferentes errores y se ha aumentado la estabilidad del funcionamiento.



  3. Optimizado y sustancialmente acelerado el funcionamiento del sistema gráfico del terminal. Ahora se gastarán menos recursos en mostrar la interfaz.
  4. Corregido el cálculo del cambio de precio diario para los futuros. Si el bróker transmite el precio de clearing, el cálculo se realizará a partir de él.
    ((Last - Precio de clearing)/Precio de clearing)*100
    Podrá encontrar una descripción completa del cálculo para todos los tipos de instrumentos en la documentación.

  5. Corregidos los errores sucedidos al comprar servicios MQL5:
    • En algunos casos, los sistemas de pago podían mostrar mensajes de error incorrectos para transacciones exitosas.
    • En etapas intermedias del alquiler de un producto en el Mercado, podía mostrarse un precio incorrecto en la página.

  6. Corregido el funcionamiento del botón "Iniciar" en la página del producto comprado/descargado en el Mercado. Ahora inicia correctamente la aplicación en el primero de los gráficos abiertos.
  7. Corregido el registro de algunos tipos de transacciones al formarse la historia de posiciones.

MQL5

  1. Añadidas nuevas funciones para trabajar con matrices y vectores:

    • Median — retorna la mediana de los elementos de una matriz o vector
    • Quantile — retorna el q-ésimo cuantil de los elementos de matriz/vector o los elementos a lo largo del eje de matriz indicado
    • Percentile — retorna el q-ésimo percentil de los elementos de matriz/vector o los elementos a lo largo del eje de matriz indicado
    • Std — calcula la desviación estándar de los elementos de una matriz o vector
    • Var — calcula la varianza de los elementos de una matriz o vector
    • CorrCoef — calcula el coeficiente de correlación de una matriz o vector
    • Correlate — calcula la correlación cruzada de dos vectores
    • Convolve — retorna la convolución lineal discreta de dos vectores
    • Cov — calcula la matriz de covarianza

  2. Hemos comenzado a añadir métodos incorporados para arrays numéricos. Esto hará que el código sea más fácil de escribir, más compacto y mejorará la compatibilidad con otros lenguajes.

    Actualmente, hay tres métodos disponibles:

    • ArgSort: ordena el array según la dimensión indicada, por defecto, según la última (axis=-1).
    • Rango — retorna el número de elementos en la dimensión de array especificada. Análogo de ArrayRange.
    • Size — retorna el número de elementos un array. Análogo de ArraySize.

    Ejemplo:
    void OnStart()
      {
       int arr[4][5]=
         {
            {22, 34, 11, 20,  1},
            {10, 36,  2, 12,  5},
            {33, 37, 25, 13,  4},
            {14,  9, 26, 21, 59}
         };
       ulong indexes[4][5];
    //--- Sort the array
       arr.ArgSort(indexes,-1,0);
       Print("indexes");  
       ArrayPrint(indexes);
      }
    
    // Result log:
    // indexes
    //     [,0][,1][,2][,3][,4]
    // [0,]   4   2   3   0   1
    // [1,]   2   4   0   3   1
    // [2,]   4   3   2   0   1
    // [3,]   1   0   3   2   4

  3. Hemos comenzado a añadir métodos incorporados para cadenas.
    En estos momentos, están disponibles los siguientes métodos:
    • BufferSize — retorna el tamaño de un búfer distribuido para una cadena.
    • Compare — compara entre sí dos cadenas y retorna el resultado de la comparación como número entero.
    • Length — retorna el número de caracteres en una cadena.
    • Find — busca una subcadena en la cadena.
    • Upper — pasa una cadena a mayúsculas.
    • Lower — pasa una cadena a minúsculas.
    • Replace — realiza la sustitución de una subcadena.
    • Reserve — reserva un búfer para una subcadena.

    Todos los métodos funcionan de forma similar a las funciones string.

      Ejemplo:
      void OnStart()
        {
         string test="some string";
         PrintFormat("String length is %d",test.Length());
        }
      
      // Result log:
      // String length is 11
    • Añadido el valor SYMBOL_SUBSCRIPTION_DELAY a la enumeración ENUM_SYMBOL_INFO_INTEGER: la magnitud del retardo en las cotizaciones transmitidas de un símbolo.

      Se usa solo para instrumentos que funcionan por suscripción, generalmente cuando se transmiten datos en el modo de prueba gratuito.

      La propiedad solo se puede solicitar para los símbolos seleccionados en la Observación de Mercado. De lo contrario, obtendremos el error ERR_MARKET_NOT_SELECTED (4302).

    • Añadida la propiedad ACCOUNT_HEDGE_ALLOWED a la enumeración ENUM_ACCOUNT_INFO_INTEGER: el permiso para abrir posiciones opuestas y órdenes pendientes. Se usa solo para las cuentas de cobertura, permitiendo así implementar los requisitos de algunos reguladores, cuando está prohibido tener posiciones opuestas en la cuenta, pero sí se permite tener varias posiciones de un símbolo en una dirección.

      Si esta opción está deshabilitada, estará prohibido tener posiciones y órdenes multidireccionales en las cuentas para el mismo instrumento al mismo tiempo. Por ejemplo, si en la cuenta tenemos una posición Buy, el usuario no podrá abrir una posición Sell o colocar una orden pendiente de venta. Si el usuario intenta hacer esto, ocurrirá el error TRADE_RETCODE_HEDGE_PROHIBITED.

    • Añadidas nuevas propiedades a la enumeración ENUM_SYMBOL_INFO_DOUBLE:
      • SYMBOL_SWAP_SUNDAY
      • SYMBOL_SWAP_MONDAY
      • SYMBOL_SWAP_TUESDAY
      • SYMBOL_SWAP_WEDNESDAY
      • SYMBOL_SWAP_THURSDAY
      • SYMBOL_SWAP_FRIDAY
      • SYMBOL_SWAP_SATURDAY

      Esta propiedades permitirán obtener la tasa de cálculo de swaps para cada día de la semana. 1 — swap único, 3 — triple, 0 — sin swap.

    • Corregido el funcionamiento de las funciones CopyTicks y CopyTicksRange. Un error podía provocar el retorno de datos obsoletos al pasar la medianoche. El error ocurría cuando no se proporcionaban ticks para el instrumento financiero.
    • Correcciones de crash logs.