Cómo empezar con MT5, ¡un resumen! - página 2

 

Próximamente -
Nuevo sistema de comunicación análogo a Telegram - lea este post.

 

============

Ichimoku


El comienzo

  1. Sistema Ichimoku simple
  2. Sistema Ichimoku simple - reglas para los sistemas
  3. Sistema simple IchimokuScalping

Después de

============

 

Se creó un buen hilo con información visualizada - Elhilo de Consejos.
Se recomienda encarecidamente leer este pequeño hilo a todos los novatos (para saber), y a los usuarios experimentados (para refrescar sus conocimientos).

----------------

Servicio autónomo

  • Cómo depositar fondos en su cuenta MQL5
  • Cómo pasar a la siguiente etapa
  • Cómo dejar un feedback
  • Qué es una captura de pantalla
  • Cómo adjuntar un archivo de una Especificación de Requisitos preliminar/archivos de otros formatos
  • Lo que hay que proporcionar a un desarrollador si el programa tiene un error
  • Cómo insertar una imagen/código/vídeo/tabla en un texto
  • Cómo hacer una captura de pantalla en un dispositivo móvil
  • Cómo ampliar el periodo de ejecución de la orden/coste
  • No desaparecer durante 5 días después de establecer 3 días para la ejecuciónCliente: Cómo crear una imagen GIF, en lugar de un vídeo, para incrustar en un chat s

----------------

Plataforma

  • Cómo instalar un Asesor Experto/indicador
  • ¿Dónde está el diario de la plataforma/probador/optimizador?
  • Dónde está el ID de MetaQuotes para confugar las notificaciones push
  • Cómo hacer una captura de pantalla de un error a través del menú del gráfico en tres clics
  • Dónde activar y configurar las notificaciones por correo electrónico
  • Dónde están los archivos con los que trabaja un EA/indicador
  • Qué son los campos "descripción" e "icono" y dónde encontrarlos
  • Dónde encontrar el número de construcción de la plataformaCómo activar la ventana de datos y ver los valores del indicador
  • Cómo activar la escala de tiempo precisa
  • Cómo guardar una plantilla de gráfico
  • Cómo añadir una URL para trabajar vía WebRequestDónde encontrar los archivos EX4/EX5

----------------

Asesor Experto

  • Qué es el Número Mágico
  • Cómo funciona el trailing stopDónde está el diario del EA
  • Por qué un EA/indicador es gris en el Navegador
  • Cuál es la diferencia entre Netting y Hedging
  • Cómo instalar un producto comprado en el Mercado

----------------

Probador

  • Cómo guardar/cargar un archivo de configuración
  • Dónde encontrar el diario de la plataforma/probador/optimizador
  • ¿En qué se diferencian los modos de prueba?
  • Cómo lanzar y utilizar las pruebas visuales
  • Cómo descargar un historial de precios disponibles en MetaTrader 4

 

Esta es una actualización muy importante y muy interesante - por favor, léala -

Foro sobre el comercio, los sistemas de comercio automatizados y la prueba de estrategias de comercio

Plataforma MetaTrader 5 Beta Build 1910: Arrastrar y soltar gráficos y librerías .Net en MQL5

MetaQuotes Software Corp., 2018.10.12 19:43

La versión beta de la plataforma MetaTrader 5 actualizada se lanzará el 14 de octubre de 2018. Actualizaremos nuestro servidor público MetaQuotes-Demo ubicado en access.metatrader5.com:443. Invitamos a todos los traders a unirse a las pruebas para evaluar las características de la plataforma actualizada y ayudar a los desarrolladores a corregir errores.

Para actualizar la plataforma MetaTrader 5 hasta la build 1910, conéctese al servidor access.metatrader5.com:443.

La versión final de la nueva plataforma MetaTrader 5 se lanzará después de la prueba beta pública.

La actualización incluirá los siguientes cambios:

  1. Terminal: Ahora se pueden separar los gráficos de los símbolos financieros de la ventana del terminal de operaciones.

    Esta característica es conveniente cuando se utilizan varios monitores. Así, puede colocar la ventana principal de la plataforma en un monitor para controlar el estado de su cuenta, y mover los gráficos a la segunda pantalla para observar la situación del mercado. Para separar un gráfico del terminal, desactive la opción de anclaje en su menú contextual. A continuación, mueva el gráfico al monitor deseado.



    Una barra de herramientas independiente en los gráficos desacoplados permite aplicar objetos de análisis e indicadores sin tener que cambiar de monitor. Utilice el menú contextual de la barra de herramientas para gestionar el conjunto de comandos disponibles o para ocultarla.

  2. Terminal: Se han actualizado completamente los chats incorporados. Ahora soportan diálogos de grupo y canales. Lleva a cabo discusiones privadas con un grupo de personas en un entorno unificado sin tener que cambiar entre diferentes diálogos y crea canales según tus intereses e idiomas. Comuníquese con sus colegas y amigos en MQL5.community sin necesidad de visitar el sitio web.

    Los chats de grupo y los canales pueden ser públicos o privados. Sus creadores deciden si es posible unirse a ellos libremente o sólo por invitación. También puede asignar moderadores a los canales y chats para un mayor control de la comunicación.



  3. Terminal: Se ha añadido soporte para aumentar la precisión del volumen de las operaciones con criptomonedas. Ahora el volumen mínimo posible de las operaciones de trading es de 0,00000001 lotes. La profundidad del mercado, la hora y las ventas, así como otros elementos de la interfaz, cuentan ahora con la capacidad de mostrar volúmenes con una precisión de 8 decimales.

    El volumen mínimo y su paso de cambio dependen de la configuración del instrumento financiero por parte del corredor.




  4. Terminal: Añadida la pestaña de artículos publicados en MQL5.community a la ventana de la caja de herramientas. Más de 600 materiales detallados sobre el desarrollo de estrategias de trading en MQL5 están ahora disponibles sin necesidad de salir del terminal. Cada semana se publican nuevos artículos.



  5. Terminal: Se ha añadido soporte para la autenticación extendida mediante certificados cuando se trabaja bajo Wine.
  6. Terminal: Corregida la visualización de la profundidad del mercado cuando está limitada a un nivel.
  7. Terminal: Se ha añadido el comando "Guardar como imagen" a la barra de herramientas estándar. Ahora, es mucho más fácil tomar fotos de los gráficos y compartirlas en la comunidad.




  8. Terminal: Se ha corregido la aplicación del desplazamiento de tiempo al importar barras y ticks. Anteriormente, el desplazamiento no se aplicaba en algunos casos.



  9. MQL5: Añadido el soporte nativo para las bibliotecas .NET con la importación de funciones "inteligentes". Ahora las bibliotecas .NET se pueden utilizar sin escribir envoltorios especiales - el MetaEditor lo hace por sí mismo.

    Para trabajar con las funciones de las bibliotecas .NET, basta con importar la propia DLL sin definir funciones específicas. MetaEditor importa automáticamente todas las funciones con las que es posible trabajar:
    • Estructuras simples (POD, plain old data)
    • Estructuras con tipos de datos simples
    • Funciones estáticas públicas con parámetros, en las que sólo se utilizan tipos simples y estructuras POD o sus matrices

    Para llamar a las funciones de la biblioteca, basta con importarla:
    #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 TestClass tiene el siguiente aspecto:
    public class TestClass
    {
       public static void Inc(ref int x)
       {
        x++;
       }
    }
    Como resultado de la ejecución, el script devuelve el valor de 7.

  10. MQL5: Se ha añadido soporte para los especificadores inline, __inline y __forceinline al analizar el código. La presencia de los especificadores en el código no causa errores y no afecta a la compilación. Por el momento, esta característica simplifica la transferencia de código С++ a MQL5.
    Encuentre más información sobre los especificadores en MSDN.

  11. MQL5: Ejecución significativamente optimizada de los programas MQL5. En algunos casos, la mejora del rendimiento puede alcanzar el 10%. Recompile sus programas en la nueva versión del MetaEditor para que se ejecuten más rápido.
    Lamentablemente, los nuevos programas no serán compatibles con las versiones anteriores del terminal debido a esta optimización adicional. Los programas compilados en el MetaEditor versión 1910 y posteriores no pueden ser lanzados en las versiones de terminal inferiores a la 1880. Los programas compilados en versiones anteriores del MetaEditor pueden ejecutarse en los nuevos terminales.

  12. MQL5: Optimizadas significativamente múltiples funciones de MQL5.
  13. MQL5: Añadidas nuevas propiedades para adjuntar/desconectar gráficos de la ventana principal del terminal y gestionar su posición.

    Se han añadido las siguientes propiedades a la enumeración ENUM_CHART_PROPERTY_INTEGER:

    • CHART_IS_DOCKED - la ventana del gráfico está acoplada. Si se establece en 'false', el gráfico puede ser arrastrado fuera del área del terminal.
    • CHART_FLOAT_LEFT - la coordenada izquierda de la ventana del gráfico desacoplada respecto a la pantalla virtual.
    • CHART_FLOAT_TOP - la coordenada superior de la ventana del gráfico desacoplada con respecto a la pantalla virtual.
    • CHART_FLOAT_RIGHT - la coordenada derecha de la ventana del gráfico desacoplada con respecto a la pantalla virtual.
    • CHART_FLOAT_BOTTOM - la coordenada inferior de la ventana de gráfico desacoplada con respecto a la pantalla virtual.

    Añadidas las siguientes funciones a la enumeración ENUM_TERMINAL_INFO_INTEGER:

    • TERMINAL_SCREEN_LEFT - la coordenada izquierda de la pantalla virtual. Una pantalla virtual es un rectángulo que cubre todos los monitores. Si el sistema tiene dos monitores ordenados de derecha a izquierda, la coordenada izquierda de la pantalla virtual puede estar en el borde de dos monitores.
    • TERMINAL_SCREEN_TOP - la coordenada superior de la pantalla virtual.
    • TERMINAL_SCREEN_WIDTH - ancho del terminal.
    • TERMINAL_SCREEN_HEIGHT - altura del terminal.
    • TERMINAL_LEFT - la coordenada izquierda del terminal en relación con la pantalla virtual.
    • TERMINAL_TOP - la coordenada superior del terminal con respecto a la pantalla virtual.
    • TERMINAL_RIGHT - la coordenada derecha del terminal con respecto a la pantalla virtual.
    • TERMINAL_BOTTOM - la coordenada inferior del terminal con respecto a la pantalla virtual.

  14. MQL5: Añadido el campo volume_real a las estructuras MqlTick y MqlBookInfo. Está diseñado para trabajar con volúmenes de mayor precisión. El valor volume_real tiene mayor prioridad que 'volume'. El servidor utilizará este valor, si se especifica.

    struct  MqlTick
      {
       datetime         time;          // Last price update time
       double           bid;           // Current Bid price
       double           ask;           // Current Ask price
       double           last;          // Current price of the Last trade
       ulong            volume;        // Volume for the current Last price
       long             time_msc;      // Last price update time in milliseconds
       uint             flags;         // Tick flags
       double           volume_real;   // Volume for the current Last price with greater accuracy
      };

    struct MqlBookInfo
      {
       ENUM_BOOK_TYPE   type;            // order type from the ENUM_BOOK_TYPE enumeration
       double           price;           // price
       long             volume;          // volume
       double           volume_real;     // volume with greater accuracy
      };

  15. MQL5: Añadidas nuevas propiedades a la enumeración ENUM_SYMBOL_INFO_DOUBLE:

    • SYMBOL_VOLUME_REAL - el volumen de la última operación ejecutada;
    • SYMBOL_VOLUMEHIGH_REAL - el volumen de la operación más alta del día actual;
    • SYMBOL_VOLUMELOW_REAL - el volumen de negociación más bajo del día actual;

    Utilice la función SymbolInfoDouble para obtener estas propiedades.

  16. MQL5: Añadida la propiedad MQL_FORWARD a la enumeración ENUM_MQL_INFO_INTEGER - indicador del modo de prueba hacia adelante.
  17. MQL5: Relajación de los requisitos para el casting de las enumeraciones. En caso de un casting implícito, el compilador sustituye automáticamente el valor de una enumeración correcta y muestra una advertencia.

    Para el siguiente código:
    enum Main
      {
       PRICE_CLOSE_,
       PRICE_OPEN_
      };
    
    input Main Inp=PRICE_CLOSE;
    //+------------------------------------------------------------------+
    //| Start function                                                   |
    //+------------------------------------------------------------------+
    void OnStart()
      {
      }
    El compilador muestra 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, se generaba el siguiente error en ese caso:
    'PRICE_CLOSE' - cannot convert enum
    El compilador seguirá mostrando el error si las enumeraciones se utilizan incorrectamente en los parámetros de la función.

  18. MQL5: Corregida la compilación de funciones de plantilla. Ahora, cuando se utilizan funciones de plantilla sobrecargadas, sólo se instancia la sobrecarga necesaria, en lugar de todas las existentes.
    class X {  };
    
    void f(int)  {  }
      
    template<typename T>
    void a(T*) { new T(2); }  // previously, the compiler generated the error here
      
    template<typename T>
    void a()  { f(0); }
      
      
    void OnInit()  { a<X>(); }  
    
  19. MQL5: Optimizados algunos casos de acceso al historial de ticks mediante la función CopyTicks*.
  20. Probador: Corregido el cálculo de la precisión de la moneda del depósito al probar/optimizar y generar los informes pertinentes.
  21. Probador: Optimizado y acelerado el funcionamiento del probador de estrategias.
  22. MetaEditor: Corregida la búsqueda de palabras enteras. Ahora al buscar, el guión bajo se cuenta como un carácter regular, en lugar de un delimitador de palabras.
  23. Documentación actualizada.

 

Se inició un buen hilo -Cómo empezar con MQL5

Foro sobre el comercio, los sistemas de comercio automatizado y la prueba de las estrategias de comercio

Cómo empezar con MQL5

Vladimir Karputov, 2018.12.24 20:34

En este hilo se habla de ejemplos de código MQL5. Habrá ejemplos de cómo obtener datos de indicadores, cómo programar asesores... en general, cualquier pregunta de principiante al lenguaje MQL5.


Si estás empezando a familiarizarte con el terminal MetaTrader 5, te recomiendo los siguientes hilos:

 

Hay un artículo que todo vendedor en el mercado debería leer: se trata de la validación de los productos del Mercado -

----------------

Las comprobaciones que debe pasar un robot de trading antes de ser publicado en el Market

Why products are checked before they are published in the Market 

Antes de que cualquier producto se publique en el Mercado, debe someterse a comprobaciones previas obligatorias, ya que un pequeño error en la lógica del experto o del indicador puede causar pérdidas en la cuenta de trading. Por ello, hemos desarrollado una serie de comprobaciones básicas para garantizar el nivel de calidad requerido de los productos del Mercado.

Si los moderadores del Mercado identifican algún error en el proceso de comprobación de su producto, tendrá que solucionarlo todo. Este artículo considera los errores más frecuentes que cometen los desarrolladores en sus robots de trading e indicadores técnicos. También recomendamos la lectura de los siguientes artículos:

 

Gracias hombre...

Muy útil, gran esfuerzo...

 

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias comerciales

Nueva plataforma MetaTrader 5 build 2005: calendario económico, aplicaciones MQL5 como servicios y API en lenguaje R

MetaQuotes Software Corp. , 2019.02.20 17:20

La actualización de la plataforma MetaTrader 5 se lanzará el 21 de febrero de 2019. La nueva versión presenta los siguientes cambios:

  1. Terminal: Calendario Económico incorporado completamente revisado.

    El Calendario Económico es nuestra solución patentada. En él encontrarás más de 600 noticias e indicadores financieros relacionados con las 13 economías más grandes del mundo: EE. UU., Unión Europea, Japón, Reino Unido, Canadá, Australia, China, entre otros. Los datos relevantes se recopilan de fuentes abiertas en tiempo real.

    La nueva versión cuenta con contenidos actualizados y filtros de eventos avanzados: por hora, prioridad, monedas y países.

    Ahora se puede acceder a los datos del calendario desde los programas MQL5. Consulte a continuación para obtener más información.




  2. Terminal: Se agregó un nuevo tipo de aplicaciones MQL5: Servicios. Este nuevo tipo permite la creación de feeds de precios personalizados para la terminal, es decir, implementar la entrega de precios desde sistemas externos en tiempo real, tal como se implementa en los servidores comerciales de los corredores.

    A diferencia de los asesores expertos, los indicadores y los scripts, los servicios no están vinculados a un gráfico específico. Dichas aplicaciones se ejecutan en segundo plano y se inician automáticamente cuando se inicia el terminal (a menos que dicha aplicación se haya detenido por la fuerza).

    Los servicios se pueden administrar desde una nueva sección dentro de la ventana del Navegador:





    Cómo crear servicios
    Para crear una plantilla de servicio, utilice la opción correspondiente del asistente de MQL5 . Los servicios tienen un punto de entrada OnStart , similar a los scripts. En este punto, puede implementar un ciclo interminable de recepción y manejo de datos utilizando funciones de red .

    Cómo lanzar servicios
    Para ejecutar varias copias de Expert Advisor o indicador con diferentes parámetros, debe iniciarlos en diferentes gráficos. En este caso, se crean diferentes instancias de programa, que luego funcionan de forma independiente. Los servicios no están vinculados a gráficos, por lo que se ha implementado un mecanismo especial para la creación de instancias de servicio.

    Seleccione un servicio del Navegador y haga clic en "Agregar servicio" en su menú contextual. Esto abrirá un cuadro de diálogo estándar del programa MQL5, en el que puede habilitar/deshabilitar el comercio y acceder a la configuración de la señal, así como establecer varios parámetros.




    Una instancia de servicio se puede iniciar y detener utilizando el menú de instancia apropiado. Para administrar todas las instancias, use el menú de servicio.

  3. Terminal: Se ha agregado un programa de aprendizaje.

    La nueva función ayudará a los principiantes a aprender a interactuar con la plataforma. Hemos agregado más de 100 consejos interactivos sobre las funciones principales de la plataforma.

    • Los consejos se muestran a la perfección como una barra de progreso en la barra de herramientas y, por lo tanto, no distraen al usuario.
    • Las sugerencias solo aparecen para las acciones que nunca ha realizado en la plataforma.
    • Todos los consejos incluyen enlaces interactivos, mediante los cuales puede navegar a los elementos de interfaz relevantes. Por ejemplo, un cuadro de diálogo comercial o un menú con el programa deseado se puede iniciar directamente desde la punta.

    El área llena de la barra de progreso aumentará cada vez que realice las acciones apropiadas y continúe entrenando.




  4. Terminal: El historial de la cuenta comercial se puede presentar como posiciones. La plataforma recopila datos sobre transacciones relacionadas con la posición (apertura, aumento de volumen, cierre parcial o total) y agrupa la información en un solo registro. Así podrá acceder a los detalles de la posición: hora de apertura y cierre, volumen, precio y resultado. Este formulario de presentación eficiente ahora está disponible en los informes de historial exportados a archivos.




  5. Terminal: Se agregó una nueva API que permite la solicitud de datos del terminal MetaTrader 5 a través de aplicaciones que utilizan el lenguaje R.

    Hemos preparado un paquete especial de MetaTrader. Contiene DLL para interacciones entre R y el terminal MetaTrader 5, documentación y archivos r auxiliares. Estamos completando el registro del paquete en el repositorio CRAN , luego de lo cual estará disponible para su descarga e instalación.




    El paquete se puede instalar usando un comando especial:
    R CMD INSTALL --build MetaTrader

    Están disponibles los siguientes comandos relacionados con la solicitud de datos:

    • MT5Initialize inicializa y establece conexión con el terminal MetaTrader 5. Si es necesario, el terminal se inicia durante la ejecución del comando.
    • MT5Shutdown se desinicializa y se desconecta de MetaTrader 5.
    • MT5Version obtiene la versión de terminal MetaTrader 5.
    • MT5TerminalInfo obtiene el estado y los parámetros de la conexión del terminal al servidor de un corredor (número de cuenta y dirección del servidor).
    • MT5WaitTerminal espera a que el terminal MetaTrader 5 se conecte al servidor de un bróker.
    • MT5CopyTicksFrom(símbolo, desde, conteo, banderas) copia el número especificado de marcas a partir de la fecha especificada. La fecha se especifica en milisegundos desde el 01.01.1970.
    • MT5CopyTicksRange(símbolo, desde, hasta, banderas) copia los ticks dentro del período especificado. Las fechas se especifican en milisegundos desde el 01.01.1970.
    • MT5CopyRatesFrom(símbolo, período de tiempo, desde, recuento) copia el número especificado de barras de un minuto a partir de la fecha especificada. La fecha se especifica en segundos desde el 01.01.1970.
    • MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) copia barras de un minuto desde la posición especificada en relación con la última barra.
    • MT5CopyRatesFromRange(símbolo, período de tiempo, fecha_desde, fecha_hasta) copia barras dentro del período especificado. Las fechas se especifican en segundos desde el 01.01.1970.

    La lista de comandos admitidos se ampliará aún más.

  6. Terminal: cuadro de diálogo Cerrar por optimizado utilizado para cerrar una posición con una opuesta. Ahora, el diálogo no se ralentiza incluso si tiene una gran cantidad de posiciones abiertas.
  7. Terminal: se corrigieron errores de cálculo de símbolos sintéticos , debido a los cuales los datos podrían omitirse ocasionalmente.
  8. Terminal: cuando se elimina un símbolo personalizado , también se eliminan los archivos que almacenan su historial de ticks y barras. Esto evita la acumulación de datos no utilizados en el disco duro.
  9. Terminal: Visualización fija de resultados de búsqueda en pantallas de alto DPI.
  10. MQL5: Acceso implementado a los datos del calendario económico de los programas MQL5.

    Nuevas funciones

    CalendarCountryById: obtiene la descripción del país por identificador.
     bool CalendarCountryById(
       const long            country_id,    // country ID
       MqlCalendarCountry&  country        // country description
       );
    CalendarEventById: obtiene la descripción del evento por identificador.
     bool CalendarEventById(
       const long            event_id,      // event ID
       MqlCalendarEvent&     event           // event description
       );
    CalendarValueById: obtiene la descripción del valor del evento por identificador.
     bool CalendarValueById(
       const long            value_id,      // value ID
       MqlCalendarValue&     value           // value description
       );
    CalendarEventByCountry: obtiene la matriz de eventos disponibles para el país.
     bool CalendarEventByCountry(
       string                country_code,  // country code
       MqlCalendarEvent&    events[]       // array of events
       );
    CalendarEventByCurrency: obtiene la matriz de eventos disponibles para la moneda afectada.
     bool CalendarEventByCurrency(
       string                currency,       // currency
       MqlCalendarEvent&    events[]       // array of events
       );
    CalendarValueHistoryByEvent: obtiene la matriz de valores para el período de tiempo especificado, por identificador de evento.
     bool CalendarValueHistoryByEvent(
       ulong                 event_id,      // event ID
       MqlCalendarValue&    values[],      // array of values
       datetime              datetime_from, // period beginning date
       datetime              datetime_to= 0  // period end date
       );
    CalendarValueHistory: obtiene la matriz de valores para el período de tiempo especificado para todos los eventos, filtrados por país o moneda.
     bool CalendarValueHistory(
       MqlCalendarValue&    values[],           // array of values
       datetime              datetime_from,     // beginning of period
       datetime              datetime_to= 0 ,     // end of period
       string                country_code=NULL, // country code
       string               currency=NULL      // currency
       );
    CalendarValueLastByEvent: obtiene una matriz de valores del último evento por identificador. Esta función habilita la solicitud de los valores que han aparecido desde la solicitud anterior. El parámetro de entrada/salida "change_id" se utiliza adicionalmente para esta operación.

    Cada vez que cambia la base de datos del calendario, se actualiza la propiedad "change_id" (el último identificador de cambio). Durante la solicitud de datos, especifica "change_id" y el terminal devuelve los eventos que aparecieron después de ese tiempo, así como el valor actual de "change_id", que se puede usar para la siguiente solicitud. Durante la primera llamada a la función, especifique el cero "change_id": la función no devolverá ningún evento, pero devolverá el "change_id" actual para futuras solicitudes.
     bool CalendarValueHistory(
       ulong                 event_id,           // event ID
       ulong &               change_id,         // last calendar change ID
       MqlCalendarValue&    values[]           // array of values
       );
    CalendarValueLast: obtiene la matriz de los últimos valores de todos los eventos, filtrados por país o moneda. Esta función habilita la solicitud de los valores que han aparecido desde la solicitud anterior. De manera similar a CalendarValueLastByEvent, la propiedad "change_id" se usa para la solicitud.
     bool CalendarValueHistory(
       ulong                 event_id,           // event ID
       ulong &               change_id,         // last calendar change ID
       MqlCalendarValue&    values[],           // array of values
       string                country_code=NULL, // country code
       string currency=NULL                     // currency
       );

    Nuevas estructuras

    MqlCalendarCountry — descripción del país.
     struct MqlCalendarCountry
      {
       ulong              id;                         // country ID in ISO 3166-1
       string             name;                       // text name of the country
       string             code;                       // code name of the country in ISO 3166-1 alpha-2
       string             currency;                   // country currency code
       string             currency_symbol;           // country currency symbol/sign
       string             url_name;                   // country name used in URL on mql5.com
      };
    MqlCalendarEvent — descripción del evento.
     struct MqlCalendarEvent
      {
       ulong                           id;           // event ID
       ENUM_CALENDAR_EVENT_TYPE       type;         // event type
       ENUM_CALENDAR_EVENT_SECTOR     sector;       // sector to which the event belongs
       ENUM_CALENDAR_EVENT_FREQUENCY  frequency;     // event release frequency
       ENUM_CALENDAR_EVENT_TIMEMODE   time_mode;     // event release time mode
       ulong                           country_id;   // country ID
       ENUM_CALENDAR_EVENT_UNIT       unit;         // unit for the event values
       ENUM_CALENDAR_EVENT_IMPORTANCE importance;   // event importance
       ENUM_CALENDAR_EVENT_MULTIPLIER multiplier;   // event importance multiplier
       uint                            digits;       // number of decimal places in the event value
       string                          source_url;   // source URL
       string                          event_code;   // event code
       string                          name;         // text name of the event in the terminal language
      };
    MqlCalendarValue — descripción del valor del evento.
     struct MqlCalendarValue
      {
       ulong              id;                         // value ID
       ulong              event_id;                   // event ID
       datetime           time;                       // event date and time
       datetime           period;                     // period, for which the event is published
       int                revision;                   // published indicator revision in relation to the reported period
       long               actual_value;               // current event value
       long               prev_value;                 // previous event value
       long               revised_prev_value;         // revised previous event value
       long               forecast_value;             // forecast event value
       ENUM_CALENDAR_EVENT_IMPACRT impact_type;     // potential impact on the currency rate
      };

    Nuevas enumeraciones

     enum ENUM_CALENDAR_EVENT_FREQUENCY
      {
       CALENDAR_FREQUENCY_NONE            = 0 ,   // not used
       CALENDAR_FREQUENCY_WEEK            = 1 ,   // weekly
       CALENDAR_FREQUENCY_MONTH           = 2 ,   // monthly
       CALENDAR_FREQUENCY_QUARTER         = 3 ,   // quarterly
       CALENDAR_FREQUENCY_YEAR            = 4 ,   // yearly
       CALENDAR_FREQUENCY_DAY             = 5 ,   // daily
      };
    
    enum ENUM_CALENDAR_EVENT_TYPE
      {
       CALENDAR_TYPE_EVENT                = 0 ,   // event (meeting, speech, etc.)
       CALENDAR_TYPE_INDICATOR            = 1 ,   // indicator
       CALENDAR_TYPE_HOLIDAY              = 2 ,   // holiday
      };
    
    enum ENUM_CALENDAR_EVENT_SECTOR
      {
       CALENDAR_SECTOR_NONE               = 0 ,   // no
       CALENDAR_SECTOR_MARKET             = 1 ,   // market
       CALENDAR_SECTOR_GDP                = 2 ,   // GDP
       CALENDAR_SECTOR_JOBS               = 3 ,   // jobs
       CALENDAR_SECTOR_PRICES             = 4 ,   // prices
       CALENDAR_SECTOR_MONEY              = 5 ,   // money
       CALENDAR_SECTOR_TRADE              = 6 ,   // trade
       CALENDAR_SECTOR_GOVERNMENT         = 7 ,   // government
       CALENDAR_SECTOR_BUSINESS           = 8 ,   // business
       CALENDAR_SECTOR_CONSUMER           = 9 ,   // consumer
       CALENDAR_SECTOR_HOUSING            = 10 ,   // housing
       CALENDAR_SECTOR_TAXES              = 11 ,   // taxes
       CALENDAR_SECTOR_HOLIDAYS           = 12 ,   // holidays
      };
      
    enum ENUM_CALENDAR_EVENT_IMPORTANCE
      {
       CALENDAR_IMPORTANCE_LOW            = 0 ,   // no
       CALENDAR_IMPORTANCE_NONE           = 1 ,   // low
       CALENDAR_IMPORTANCE_MODERATE       = 2 ,   // moderate
       CALENDAR_IMPORTANCE_HIGH           = 3 ,   // high
      };
    
    enum ENUM_CALENDAR_EVENT_UNIT
      {
       CALENDAR_UNIT_NONE                 = 0 ,   // no
       CALENDAR_UNIT_PERCENT              = 1 ,   // percent
       CALENDAR_UNIT_CURRENCY             = 2 ,   // national currency
       CALENDAR_UNIT_HOUR                 = 3 ,   // number of hours
       CALENDAR_UNIT_JOB                  = 4 ,   // number of jobs
       CALENDAR_UNIT_RIG                  = 5 ,   // number of rigs
       CALENDAR_UNIT_USD                  = 6 ,   // US dollar
       CALENDAR_UNIT_PEOPLE               = 7 ,   // number of people
       CALENDAR_UNIT_MORTGAGE             = 8 ,   // number of mortgages
       CALENDAR_UNIT_VOTE                 = 9 ,   // number of votes
       CALENDAR_UNIT_BARREL               = 10 ,   // number of barrels
       CALENDAR_UNIT_CUBICFEET            = 11 ,   // volume in cubic feet
       CALENDAR_UNIT_POSITION             = 12 ,   // number of job positions
       CALENDAR_UNIT_BUILDING             = 13    // number of buildings
      };
      
    enum ENUM_CALENDAR_EVENT_MULTIPLIER
      {
       CALENDAR_MULTIPLIER_NONE           = 0 ,   // no    
       CALENDAR_MULTIPLIER_THOUSANDS      = 1 ,   // thousands
       CALENDAR_MULTIPLIER_MILLIONS       = 2 ,   // millions
       CALENDAR_MULTIPLIER_BILLIONS       = 3 ,   // billions
       CALENDAR_MULTIPLIER_TRILLIONS      = 4 ,   // trillions
      };
      
    enum ENUM_CALENDAR_EVENT_IMPACRT
      {
       CALENDAR_IMPACT_NA                 = 0 ,   // not available
       CALENDAR_IMPACT_POSITIVE           = 1 ,   // positive
       CALENDAR_IMPACT_NEGATIVE           = 2 ,   // negative
      };
    
    enum ENUM_CALENDAR_EVENT_TIMEMODE
      {
       CALENDAR_TIMEMODE_DATETIME         = 0 ,   // the source publishes the exact time
       CALENDAR_TIMEMODE_DATE             = 1 ,   // the event takes the whole day
       CALENDAR_TIMEMODE_NOTIME           = 2 ,   // the source does not publish the event time
       CALENDAR_TIMEMODE_TENTATIVE        = 3 ,   // the source provides only date, but does not publish the exact time in advance, exact time is added when event occurs
      };

    Nuevos códigos de error

    ERR_CALENDAR_MORE_DATA             = 5400 ,   // the array is small for the whole result (values which fit in the array were passed)
    ERR_CALENDAR_TIMEOUT               = 5401 ,   // timed out waiting for a response to the calendar data request
    ERR_CALENDAR_NO_DATA               = 5402 ,   // data not found

  11. MQL5: correcciones y mejoras en la velocidad de operación relacionadas con el historial de ticks y barras.
  12. MQL5: correcciones y mejoras significativas en la velocidad de operación relacionadas con las funciones de modificación del historial de ticks y barras de los símbolos comerciales personalizados, CustomTicks* y CustomRates* .
  13. MQL5: Nuevas funciones de conversión de datos.

    CharArrayToStruct copia una matriz uchar en una estructura POD.
     bool   CharArrayToStruct(
       void &         struct_object,    // structure
       const uchar &  char_array[],      // array
       uint           start_pos= 0         // starting position in the array
       );
    StructToCharArray copia una estructura POD en una matriz uchar.
     bool   StructToCharArray(
       const void &  struct_object,      // structure
       uchar &       char_array[],      // array
       uint          start_pos= 0         // starting position in the array
       );

  14. Se agregó la función MathSwap para cambiar el orden de bytes en valores ushort, uint y ulong.
     ushort MathSwap( ushort value );
    uint    MathSwap( uint    value );
    ulong   MathSwap( ulong    value );

  15. MQL5: funciones de red agregadas para crear conexiones TCP a hosts remotos a través de sockets del sistema:

    • SocketCreate crea un socket con indicadores específicos y devuelve su identificador
    • SocketClose cierra el socket
    • SocketConnect se conecta al servidor, con control de tiempo de espera
    • SocketIsConnected comprueba si el socket está actualmente conectado
    • SocketIsReadable obtiene la cantidad de bytes que se pueden leer desde el socket
    • SocketIsWritable comprueba si la escritura de datos en este socket es posible en el momento actual
    • SocketTimeouts establece tiempos de espera de recepción y envío de datos para el objeto de socket del sistema
    • SocketRead lee datos de un socket
    • SocketSend escribe datos en un socket
    • SocketTlsHandshake inicia una conexión segura TLS (SSL) con el host especificado utilizando el protocolo TLS Handshake
    • SocketTlsCertificate recibe información sobre el certificado utilizado para la conexión de red segura
    • SocketTlsRead lee datos de una conexión TLS segura
    • SocketTlsReadAvailable lee todos los datos disponibles de una conexión TLS segura
    • SocketTlsSend envía datos mediante una conexión TLS segura

    La dirección del host, al que se establece la conexión mediante funciones de red, debe agregarse explícitamente a la lista de direcciones permitidas en la configuración del terminal.

    Se han añadido nuevos códigos de error para operaciones con funciones de red:

    • ERR_NETSOCKET_INVALIDHANDLE (5270): identificador de socket no válido pasado a la función
    • ERR_NETSOCKET_TOO_MANY_OPENED (5271): demasiados sockets abiertos (máximo 128)
    • ERR_NETSOCKET_CANNOT_CONNECT (5272): error al conectarse al host remoto
    • ERR_NETSOCKET_IO_ERROR (5273): error al enviar/recibir datos del socket
    • ERR_NETSOCKET_HANDSHAKE_FAILED (5274): error de establecimiento de conexión segura (TLS Handshake)
    • ERR_NETSOCKET_NO_CERTIFICATE (5275) — no hay datos sobre el certificado utilizado para la conexión segura

  16. MQL5: Añadidas nuevas funciones para operaciones con cadenas :

    StringReserve reserva para una cadena el búfer de memoria del tamaño especificado.
     bool   StringReserve(
       string &        string_var,           // string
       uint            new_capacity          // buffer size for the string
       );
    StringSetLength establece la longitud de cadena especificada en caracteres.
     bool   StringSetLength(
       string &        string_var,          // string
       uint            new_length           // new string length
       );

  17. MQL5: nueva función agregada para operaciones de matriz :

    ArrayRemove elimina de una matriz el número especificado de elementos que comienzan con el índice especificado.
     bool   ArrayRemove(
       void &         array[],              // array of any type
       uint           start,                // the index to start removal
       uint           count=WHOLE_ARRAY      // number of elements
       );
    ArrayInsert inserta en una matriz de receptores el número especificado de elementos de la matriz de origen, comenzando con el índice especificado.
     bool   ArrayInsert(
       void &         dst_array[],          // receiver array
       const void &   src_array[],          // source array
       uint           dst_start,            // index in the receiver array where to insert
       uint           src_start= 0 ,           // index in the source array to start copying
       uint           count=WHOLE_ARRAY     // number of inserted elements
       );
    ArrayReverse invierte en una matriz el número especificado de elementos que comienzan con el índice especificado.
     bool   ArrayReverse(
       void &         array[],              // array of any type
       uint           start= 0 ,               // index to start reversing
       uint           count=WHOLE_ARRAY      // number of elements
       );

  18. MQL5: Se agregó el nuevo parámetro "uint count" en las funciones CustomRatesUpdate , CustomRatesReplace , CustomTicksAdd y CustomTicksReplace . Permite especificar el número de elementos de la matriz pasada, que se utilizarán para estas funciones. El valor WHOLE_ARRAY se utiliza para el parámetro de forma predeterminada. Significa que se utilizará toda la matriz.
  19. MQL5: Se agregó la función CustomBookAdd para pasar el estado de la profundidad de mercado de un símbolo personalizado. La función permite transmitir la profundidad de mercado como si los precios llegaran del servidor de un bróker.
     int   CustomBookAdd(
       const string         symbol,             // symbol name
       const MqlBookInfo&  books[]             // an array with the DOM elements descriptions
       uint                 count=WHOLE_ARRAY   // number of elements to be used
       );
  20. MQL5: Agregada sobrecarga de la función CustomSymbolCreate . Esto permite la creación de un símbolo comercial personalizado basado en uno existente. Después de la creación, cualquier propiedad del símbolo se puede editar usando las funciones correspondientes.
     bool   CustomSymbolCreate (
       const string         symbol_name,       // custom symbol name
       const string         symbol_path= "" ,    // name of the group in which the symbol will be created
       const string         symbol_origin=NULL // name of the symbol based on which the custom symbol will be created
       );
    El nombre del símbolo del que se deben copiar las propiedades del símbolo personalizado se especifica en el parámetro "symbol_origin".

  21. Se ha actualizado la función StringToTime que convierte la cadena con fecha/hora en un valor de fecha y hora. Ahora es compatible con los siguientes formatos de fecha:

    • aaaa.mm.dd [hh:mi]
    • aaaa.mm.dd [hh:mi:ss]
    • aaaammdd [hh:mi:ss]
    • aaaammdd [hhmiss]
    • aaaa/mm/dd [hh:mi:ss]
    • aaaa-mm-dd [hh:mi:ss]

  22. MQL5: Nueva propiedad TERMINAL_VPS en la enumeración ENUM_TERMINAL_INFO_INTEGER ; muestra que el terminal se está ejecutando en el servidor de alojamiento virtual MetaTrader (MetaTrader VPS). Si una aplicación se ejecuta en un servidor de alojamiento, puede desactivar todas sus funciones visuales, ya que el servidor virtual no tiene una interfaz gráfica de usuario.
  23. MQL5: Nueva propiedad SYMBOL_EXIST en la enumeración ENUM_SYMBOL_INFO_INTEGER , significa que el símbolo bajo este nombre existe.
  24. MQL5: se corrigió la escritura al usar declaraciones previas de funciones de plantilla.
  25. MQL5: Se agregó la reinicialización de indicadores al cambiar una cuenta comercial.
  26. MQL5: función StringSplit optimizada.
  27. MQL5: errores corregidos en la operación de la biblioteca estándar.
  28. Probador: se agregó la función TesterStop : apagado anticipado de rutina de un asesor experto en un agente de prueba. Ahora puede detener la prueba por la fuerza después de alcanzar el número especificado de operaciones perdedoras, un nivel de reducción preestablecido o cualquier otro criterio.

    Las pruebas completadas con esta función se consideran satisfactorias. Después de la llamada a la función, el historial comercial obtenido durante la prueba y todas las estadísticas comerciales se pasan al terminal.

  29. Probador: capacidad deshabilitada para probar y optimizar los asesores expertos a través de MQL5 Cloud Network en el modo de verificación real. Este modo solo se puede usar en agentes locales y granjas de redes locales.
  30. Probador: trabajo mejorado con indicadores durante las pruebas visuales. Ahora el gráfico de precios y las líneas del indicador se dibujan sincrónicamente, incluso para la máxima velocidad de visualización.
  31. Probador: Pruebas y optimización optimizadas y significativamente aceleradas.
  32. Tester: Corregida la depuración de indicadores sobre datos históricos. Ahora las funciones del indicador OnInit y OnDeinit se pueden depurar correctamente.
  33. Probador: se implementó un acceso más rápido a los datos históricos al probar los asesores expertos de varias monedas.
  34. Probador: se corrigió la congelación ocasional del probador visual durante la depuración de datos históricos.
  35. Probador: se implementó un inicio más rápido de los pases de optimización cuando un agente procesa un paquete de tareas.
  36. Probador: se modificó la política de distribución de paquetes de tareas a los agentes de prueba. Se ha aumentado el tamaño del paquete y, por lo tanto, se ha reducido significativamente el consumo de recursos en las operaciones de red.
  37. Probador: se modificó el comportamiento de las opciones que permiten el uso de agentes locales, de red y en la nube. Ahora, cuando desactiva las opciones, los agentes completan el procesamiento de las tareas recibidas, mientras que no se les asignan más tareas nuevas. En versiones anteriores, el comportamiento era similar al comando "Desactivar", que detenía inmediatamente el funcionamiento del agente.




  38. MetaEditor: Se agregó soporte para caracteres que no son ANSI en el depurador. Ahora, las expresiones se muestran correctamente incluso si el nombre de la variable se especifica en cirílico.
  39. MetaEditor: visualización fija de resultados de búsqueda en pantallas de alto DPI.
  40. Se agregó la traducción de la interfaz de usuario al croata.
  41. La documentación ha sido actualizada.
La actualización estará disponible a través del sistema LiveUpdate.

 

Hola.

¿Tengo que eliminar mi build 1940 antes de instalar este 2005?
He probado sin desinstalar y después de instalar es el mismo 1940 que antes.
Además, no he podido actualizar desde el año pasado, ¿alguna razón?
¿Debo eliminar todo y volver a intentarlo?


Gracias...

 
útil para los principiantes