MetaTrader 5 build 1860: funciones para el trabajo con barras en MQL5 y mejoras en el simulador de estrategias

¿Qué novedades tiene MetaTrader 5?

15 junio 2018

Terminal

  1. Se ha modificado por completo la ventana de diálogo para la apertura de cuentas. Ahora el usuario elige en primer lugar el bróker que le interesa, y después el tipo de cuenta que desea abrir. Gracias a ello, la lista de brókeres es ahora más compacta, puesto que muestra solo los nombres de las compañías, y no todos los servidores disponibles.

    Asimismo, para facilitar la búsqueda, se han añadido a la lista los logotipos de las empresas. Si el bróker deseado no se encuentra en la lista, solo tendrá que teclear el nombre de la compañía o la dirección del servidor en la línea de búsqueda y pulsar "Encontrar su bróker".




    Para ayudar a los tráders principiantes, las descripciones de los tipos de cuenta han sido añadidas a la ventana de diálogo. Además, en relación con la actualización de la General Data Protection Regulation (GDPR), al abrir una cuenta, es posible que se muestren enlaces a los diferentes acuerdos y políticas de las compañías de corretaje:




    Se han ampliado significativamente las posibilidades de apertura de cuentas reales. La función de descarga de documentos para confirmar la identidad y la dirección, que se presentaba anteriormente en los terminales móviles, ahora está disponible en la versión de escritorio. Los brókeres regulados por MiFID ahora pueden solicitar todas la información necesaria para identificar a un cliente, incluyendo los datos sobre su ocupación, sus ingresos, su experiencia comercial, etc. Todo esto hará que sea más fácil y más rápido para usted conseguir cuentas reales, y también le evitará trámites burocráticos innecesarios.




  2. Se ha añadido a la historia de transacciones la representación de los valores de Stop Loss y Take profit. Para las transacciones de entrada y de viraje, estos se establecen de acuerdo con los valores de las órdenes Stop Loss y Take Profit, como resultado de las cuales se ejecutaron. Para las transacciones de salida, se usan los valores de Stop Loss y Take Profit de las posiciones relevantes al momento del cierre. Este último permite guardar y mostrar información sobre los valores de Stop Loss y Take Profit que tenía la posición en el momento de su cierre. Anteriormente, dicha información no se guardaba en ningún lugar, ya que la posición después del cierre desaparece, y el historial de posiciones en el terminal se basa en las transacciones.




  3. Se ha añadido a la historia de posiciones la representación de los valores de Stop Loss y Take profit. Se cubren de acuerdo con el valor de las transacciones de Stop Loss y Take Profit que abren y cierran las posiciones correspondientes.




  4. Ahora, al representar las órdenes pendientes en el gráfico, se usa el volumen actual de la orden, en lugar del inicialmente solicitado.




  5. Se ha optimizado y acelerado significativamente la representación de la profundidad de mercado en el modo ampliado con la muestra de spread activada.
  6. Optimizado el procesamiento de los resultados de ejecución de las solicitudes comerciales. En algunos casos, esto puede proporcionar una aceleración significativa del procesamiento.
  7. Corregido el error de funcionamiento del Trailing Stop, que en algunos casos causaba al envío de varias solicitudes de cambio de nivel de Stop Loss de una posición.
  8. Corregido el establecimiento del volumen mínimo y máximo, y también del salto de volumen en las propiedades de las herramientas personalizadas.
  9. Corregido el error que provocaba que la opción "fijar escala" no se tuviera en cuenta al aplicar la plantilla al gráfico de un instrumento comercial.
  10. Corregido el error que provocaba en algunos casos que la historia de ticks se acumulara incorrectamente.

MQL5

  1. Aumentada la velocidad de funcionamiento de los programas MQL5, gracias a la optimización adicional del código fuente al realizar la compilación. Para aumentar la velocidad de sus programas, compílelos otra vez en la nueva versión del MetaEditor.
    Por desgracia, la optimización adicional ha provocado la pérdida de compatibilidad de los nuevos programas con las versiones anteriores del terminal. Todos los programas compilados en el MetaEditor de versión 1860 o posteriores no se inciarán en los terminales con una versión por debajo de 1860. En este caso, además, los programas compilados antes en las versiones anteriores del MetaEditor, funcionarán en los nuevos terminales.

  2.  Añadidas las funciones iTime, iOpen, iHigh, iLow, iClose, iVolume, iBars, iBarShift, iLowest, iHighest, iRealVolume, iTickVolume, iSpread. Estas funciones son análogas a las utilizadas en MQL4. De esta forma, para los usuarios será más sencillo transferir el código de los programas comerciales a la plataforma de quinta generación.

    Anteriormente, la mayoría de las tareas resueltas por estas funciones se podía ejecutar fácilmente usando las funciones Copy*. Sin embargo, para buscar los valores máximos/mínimos en el gráfico y buscar las barras por tiempo, el usuario tenía que implementar sus propias funciones. Ahora es posible hacer esto con la ayuda de las funciones iHighest, iLowest e iBarShift.

    iTime
    Retorna el valor del tiempo de apertura de la barra (indicada por el parámetro shift) del gráfico correspondiente.
    datetime  iTime(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              shift            // desplazamiento
       );

    iOpen
    Retorna el valor del precio de apertura de la barra (indicada por el parámetro shift) del gráfico correspondiente.
    double  iOpen(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              shift            // desplazamiento
       );

    iHigh
    Retorna el valor del precio máximo de la barra (indicada por el parámetro shift) del gráfico correspondiente.
    double  iHigh(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              shift            // desplazamiento
       );

    iLow
    Retorna el valor del precio mínimo de la barra (indicada por el parámetro shift) del gráfico correspondiente.
    double  iLow(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              shift            // desplazamiento
       );

    iClose
    Retorna el valor del precio de cierre de la barra (indicada por el parámetro shift) del gráfico correspondiente.
    double  iClose(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              shift            // desplazamiento
       );

    iVolume
    Retorna el valor del volumen de ticks de la barra (indicada por el parámetro shift) del gráfico correspondiente.
    long  iVolume(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              shift            // desplazamiento
       );

    iBars
    Retorna el número de barras en la historia según el símbolo y el periodo correspondientes.
    int  iBars(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe        // periodo
       );

    iBarShift
    Busca la barra según el tiempo. La función retorna el índice de la barra en el que entra el tiempo especificado.
    int  iBarShift(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       datetime         time,            // hora y fecha
       bool             exact=false      // modo
       );

    iLowest
    Retorna el índice del menor valor encontrado (desplazamiento relativo a la barra actual) del gráfico correspondiente.
    int  iLowest(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              type,            // identificador de la serie temporal
       int              count,           // número de elementos
       int              start            // índice
      );

    iHighest
    Retorna el índice del mayor valor encontrado (desplazamiento relativo a la barra actual) del gráfico correspondiente.
    int  iHighest(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              type,            // identificador de la serie temporal
       int              count,           // número de elementos
       int              start            // índice
      );

    iRealVolume
    Retorna el valor del volumen real de la barra (indicada por el parámetro shift) del gráfico correspondiente.
    long  iRealVolume(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              shift            // desplazamiento
       );

    iTickVolume
    Retorna el valor del volumen de ticks de la barra (indicada por el parámetro shift) del gráfico correspondiente.
    long  iTickVolume(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              shift            // desplazamiento
       );

    iSpread
    Retorna el valor del spread de la barra (indicada por el parámetro shift) del gráfico correspondiente.
    long  iSpread(
       string           symbol,          // símbolo
       ENUM_TIMEFRAMES  timeframe,       // periodo
       int              shift            // desplazamiento
       );
  3. Añadida la función TesterHideIndicators. Esta indica el modo en que se muestran/ocultan los indicadores usados en el experto. La funcion se ha diseñado para gestionar la visibilidad de los indicadores utilizados solo en la simulación. Indique la bandera true si es necesario ocultar los indicadores creados, de lo contrario, indique false.
    void  TesterHideIndicators(
       bool      hide     // bandera
       );
  4. Añadida la generación del evento CHARTEVENT_CLICK al clicar con el ratón en los niveles comerciales del gráfico.
  5. Corregido y optimizado el funcionamiento de las funciones CopyTicks.
  6. Corregido el valor dado por la función SymbolInfoDouble para la propiedad SYMBOL_TRADE_LIQUIDITY_RATE.
  7. Corregido el error de copiado de matrices de línea con áreas de memoria superpuestas.
  8. Corregido el error al destacar una matriz de línea en la función FileReadArray.
  9. Corregida una serie de errores en la biblioteca estándar MQL5.

Tester

  1. Actualizado por completo el sistema de trabajo con la caché de optimización. La caché constituye los datos sobre las pasadas de optimización calculadas con anterioridad. El simulador de estrategias los guarda para reanudar la optimización después de una pausa y no tener que recalcular las pasadas de simulación ya realizadas.

    Cambio en el formato de guardado de la caché de optimización
    Anteriormente, la caché se almacenaba en forma de archivo XML, en el que entraban todas las pasadas de optimización del experto con los ajustes de simulación indicados. En el mismo archivo entraban resultados de optimización con diferentes parámetros de entrada.
    Ahora la caché de optimización se guarda en forma de archivos binarios aparte para cada conjunto de parámetros optimizados. Gracias al cambio de formato y la reducción del tamaño de los archivos, el trabajo del simulador con la caché de optimización es considerablemente más rápido. Esta aceleración será especialmente notoria al reanudar una optimización anteriormente pausada.

    Visualización de los resultados de las optimizaciones anteriormente realizadas
    Ahora podrá ver los resultados de las optimizaciones realizadas con anterioridad directamente en el simulador de estrategias, sin tener que analizar enormes archivos XML en programas de terceros. Abra la pestaña "Resultados de optimización", elija el experto y el archivo con la caché de optimización:



    En la lista se representan todos los archivos de la caché de optimización que están en el disco para el asesor elegido. Para cada archivo se muestra la fecha de optimización, los ajustes de simulación (símbolo, marco temporal, fechas), así como información sobre los parámetros de entrada. Además, podrá filtrar los resultados de la optimización según el servidor comercial en el que se han recibido.

    Recálculo del criterio de optimización sobre la marcha
    El criterio de optimización es un cierto índice, cuyo valor define la calidad del conjunto de parámetros de entrada a simular. Cuanto mayor sea el valor del criterio de optimización, mejor se considerará el resultado de la simulación con este conjunto de parámetros.

    Anteriormente, al realizar la optimización, solo se calculaba un criterio, seleccionado antes de la optimización. Ahora, al ver los resultados, podrá modificar el criterio de optimización sobre la marcha, y el simulador de estrategias volverá a calcular automáticamente todos los valores.




    Cómo usar la caché de optimización manualmente
    Anteriormente, la caché de optimización se guardaba como un archivo XML que se podía abrir y analizar en programas de terceros. Ahora se guarda en archivos binarios cerrados. Para obtener los datos en el formato XML, expórtelos con la ayuda del menú contextual de la pestaña "Resultados de optimización".

  2. Añadida la posibilidad de indicar manualmente la divisa del depósito y el tamaño del apalancamiento para la simulación y la optiimización. Anteriormente, la divisa del depósito se establecía de acuerdo con la cuenta conectada actual. Por consiguiente, para cambiarla, el usuario debía pasar a otras cuentas. El tamaño del apalancamiento se podía elegir solo de una lista predefinida, ahora se puede indicar cualquier valor.

    Tenga en cuenta que, para realizar correctamente la simulación, en la cuenta deberán estar disponibles los cursos cruzados para recalcular los beneficios y el margen en la divisa del depósito indicada.




  3. Eliminada la prohibición del uso de OpenCL en los agentes de simulación. Anteriormente, los dispositivos OpenCL solo podían utilizarse al realizar la simulación en agentes locales. Ahora los agentes tienen permitido usar todos los dispositivos OpenCL disponibles (procesador, tarjeta gráfica) al trabajar en la red local y en MQL5 Cloud Network.

MetaEditor

  1. Se ha optimizado y acelerado el trabajo con el repositorio de datos MQL5 Storage.
  2. Corregida la reanudación de la depuración después de una pausa en un archivo MQH.
  3. Corregido el error al resaltar el código fuente en el editor.
  4. Corregido el error de navegación por lo resultados de la búsqueda.
  5. Corregido el remplazo masivo de texto. En algunos casos, solo se remplazaba la primera aparición de la secuencia a sustituir, en lugar de todas.

Actualización de la documentación.