MetaTrader 5 build 1200: obtención de la historia de tics y pago directo de los servicios

¿Qué novedades tiene MetaTrader 5?

23 octubre 2015

Terminal

  1. Añadido el trabajo con la historia de tics a la observación del mercado. Si antes el gráfico de tics solo mostraba la historia acumulada en el terminal durante el funcionamiento del mismo, ahora está disponible el acceso a la historia de tics completa en el servidor comercial. Desactive el auto scroll y comience a desplazarse por el gráfico de tics hacia atrás hasta aspectos pasados, con ayuda del ratón, para cargar desde el servidor comercial la historia que falte, igual que se hace con los gráficos de precio habituales. El nuevo funcional será útil para los traders que quieran conseguir gráficos de cambio de precio detallados al máximo.



    Para obtener automáticamente una historia de tics más profunda, use la función CopyTicks(), su funcionamiento ha sido modificado de tal forma que solicite y cargue la historia que falta, en caso de que esta se encuentre disponible en el servidor comercial.

  2. Añadido un icono de activación/desactivación rápida de la profundidad de mercado, se encuentra junto al panel "Comercio con un click". También podrá usar la nueva combinación de teclas de acceso rápido Alt+B, que funciona, no solo en el propio gráfico, sino también en la ventana Market Watch, en este caso, se abre la profundidad de mercado del símbolo que haya sido destacado en la Observación del mercado.




  3. Las características de la computadora y el sistema operativo se guardan ahora en el registro al inicio del terminal de cliente. Ejemplo:
    2015.10.14 14:48:18.486	Data Folder: C:\Program Files\MetaTrader 5
    2015.10.14 14:48:18.486	Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7  920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00
    2015.10.14 14:48:18.486	MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)
  4. Mejorado el trabajo con los símbolos en la "Observación del mercado" (Market Watch):

    • Añadida la muestra del número de símbolos en Market Watch y de la cantidad total de símbolos disponibles en el servidor comercial
    • Añadida la línea de adición de un nuevo símbolo con la lista de selección inteligente
    • La búsqueda en la línea de símbolo nuevo se realiza, no solo por el nombre del símbolo, sino también por su descripción y nombre internacional.




  5. Añadido el soporte de calendario de eventos económicos en varias lenguas.
  6. Añadidos los iconos de los pictogramas de los países que faltaban en el calendario económico.
  7. Añadidas las teclas de acceso rápido para abrir la ventana de gestión de los símbolos en la Observación de mercado - Ctrl+U.
  8. Corregida la puesta en orden de las ventanas abiertas de los gráficos con los comandos en el menú "Window".
  9. Corregido el error cuando el terminal en ciertos casos no podía encontrar el archivo de certificado al usar la autenticación ampliada.
  10. Corregido el error que provocaba en ciertos casos un bucle en la sincronización de la historia de precios.
  11. Corregido el error que causaba el inicio de los niveles StopLoss/TakeProfit de una posición anteriormente abierta al aumentar su volumen, si se comerciaba con el instrumento en el modo Request Execution.
  12. En la profundidad de mercado se ha corregido la comprobación de la posibilidad de emitir una orden de compra en caso de que hubiese una posición larga de los instrumentos con el modo de comercio "Long only".
  13. Corregido el funcionamiento de la función Trailing Stop. En ciertos casos raros, un Stop Loss protector para una posición abierta podía moverse incorrectamente.
  14. Se han continuado los trabajos de adaptación del interfaz al funcionamiento de las pantallas de alta defición (4K).
  15. Corregido el error que provocaba la descarga de los datos históricos como no utilizados, a pesar de las solicitudes reiteradas a los datos por parte de los programas MQL5.
  16. Corregida la representación de una serie de elementos del interfaz de usuario al trabajar con Windows 10.
  17. Actualizadas las traducciones del interfaz de usuario.

Market

  1. Revisado y optimizado el funcionamiento con la base de productos MQL5 Market.
  2. Añadida la prohibición de compra sin cuenta MQL5.community al usar el terminal en el entorno de la máquina virtual. Ahora para comprar es necesario indicar la cuenta en MQL5.community en los ajustes del terminal: Servicio - Ajustes - Comunidad.
  3. Añadida la compra directa de productos con ayuda del sistema de pago UnionPay.
  4. Añadido el historial ampliado al comprar productos en MQL5 Market.

Virtual Hosting y Signals

  1. Hosting y Signals: Ahora el hosting virtual y la suscripción a las señales comerciales se pueden pagar directamente a través de los sistemas de pago.

    Para pagar el hosting no es obligatorio entrar en MQL5.community y recargar saldo. Ahora usted puede pagar sin más el servicio en uno de los sistemas de pago, directamente en la plataforma.



    Elija el sistema que necesite y realice el pago:




    De una forma igualmente directa, puede usted formalizar una suscripción de pago a señales comerciales directamente desde el terminal, solo tiene que elegir un sistema de pago cómodo para usted.




    La suma necesaria será transferida al principio a su cuenta MQL5.community, y desde allí se efectuará el pago. De esta forma, usted siempre podrá disponer de una historia transparente de hostings alquilados y suscripciones a las señales, pudiendo ver, además, todos sus pagos por los servicios de MQL5.community.
  2. Hosting: Añadida la gestión del hosting virtual (excepto la migración) al trabajar con la versión de 32 bits del terminal de cliente.
  3. Hosting: Corregida la migración de los ajustes de la exportación de FTP al hosting virtual, independientemente del permiso de publicación vía FTP.

MQL5

  1. Activado un nuevo compilador de optimización. La velocidad de ejecución de programas en las plataformas de 64 bits se ha multiplicado por 5. Los programas de MQL5 deben ser compilados de nuevo en la última versión de MetaEditor.
  2. Ampliado el formato de la estructura MqlTick. En esta, ahora se transmite la hora de llegada del tic en milisegundos, así como las banderas que permiten determinar qué parámetro del tic ha cambiado precisamente.
    struct MqlTick
      {
       datetime     time;          // Hora de la última actualización de los 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 los precios en milisegundos
       uint         flags;         // Banderas de los tics
      };
    Todos los parámetros de cada tic siempre se llenan, independientemente de si han cambiado los datos en comparación con el tic anterior. Esto permite tener siempre el estado actual de los precios en cualquier momento, sin buscar los valores anteriores en la historia de tics. Por ejemplo, con el tic solo ha podido cambiar el precio bid, pero en la estructura, aparte del nuevo precio, se mostrarán también todos los demás parámetros: el precio anterior ask, el volumen, etcétera. Para saber qué datos precisamente han cambiado con el tic actual, analice sus banderas:

    • TICK_FLAG_BID - el tic ha cambiado el precio bid
    • TICK_FLAG_ASK  - el tic ha cambiado el precio ask
    • TICK_FLAG_LAST - el tic ha cambiado el precio de la última transacción
    • TICK_FLAG_VOLUME - el tic ha cambiado el volumen
    • TICK_FLAG_BUY - el tic ha aparecido como resultado de una transacción de compra
    • TICK_FLAG_SELL - el tic ha aparecido como resultado de una transacción de venta

    La estructura MqlTick se usa en dos métodos:
    • CopyTicks - el método no proporciona soporte al viejo formato de estructura. Los archivos EX5 compilados anteriormente, que usan el antiguo formato de tic, al llamar la función CopyTicks retornarán el error 4006 (ERR_MQL_INVALID_ARRAY).
    • SymbolInfoTick - el método proporciona soporte tanto al viejo formato de estructura, como al nuevo.

  3. Añadidas las plantillas de clases que permiten crear clases parametrizadas como en C++. Esto permitirá lograr una mayor abstracción y usar el mismo código para trabajar de una manera uniforme con objetos de diferentes clases. Ejemplo de uso:
    //+------------------------------------------------------------------+
    //|                                                    TemplTest.mq5 |
    //|                        Copyright 2015, MetaQuotes Software Corp. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2015, MetaQuotes Software Corp."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //| Anunciamos la plantilla de clase                                 |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArray
      {
    protected:
       T                 m_data[];
    
    public:
    
       bool              Append(T item)
         {
          int new_size=ArraySize(m_data)+1;
          int reserve =(new_size/2+15)&~15;
          //---
          if(ArrayResize(m_data,new_size,reserve)!=new_size)
             return(false);
          //---
          m_data[new_size-1]=item;
          return(true);
         }
       T                 operator[](int index)
         {
          static T invalid_index;
          //---
          if(index<0 || index>=ArraySize(m_data))
             return(invalid_index);
          //---
          return(m_data[index]);
         }   
      };
    //+------------------------------------------------------------------+
    //| La plantilla de clase de la matriz de indicadores,               |
    //| en el destructor elimina aquellos objetos a los que se referían  |
    //| los indicadores guardados en la matriz.                          |
    //| Preste atención a la herencia de la clase de plantilla TArray    |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArrayPtr : public TArray<T *>
      {
    public:
       void             ~TArrayPtr()
         {
          for(int n=0,count=ArraySize(m_data);n<count;n++)
             if(CheckPointer(m_data[n])==POINTER_DYNAMIC)
                delete m_data[n];
         }
      };
    //+------------------------------------------------------------------+
    //| Anunciamos la clase, los indicadores a sus objetos               |
    //| los guardaremos en la matriz                                     |
    //+------------------------------------------------------------------+
    class CFoo
      {
       int               m_x;
    public:
                         CFoo(int x):m_x(x) { }
       int               X(void) const { return(m_x); }
      };
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    TArray<int>     ExtIntArray;   // instanciamos la plantilla TArray (especializamos la plantilla TArray con el tipo int)
    TArray<double>  ExtDblArray;   // instanciamos la plantilla TArray (especializamos la plantilla TArray con el tipo double)
    TArrayPtr<CFoo> ExtPtrArray;   // instanciamos la plantilla TArrayPtr (especializamos la plantilla TArrayPtr con el tipo CFoo)
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- llenamos las matrices con datos
       for(int i=0;i<10;i++)
         {
          int integer=i+10;
          ExtIntArray.Append(integer);
          
          double dbl=i+20.0;
          ExtDblArray.Append(dbl);
          
          CFoo *ptr=new CFoo(i+30);
          ExtPtrArray.Append(ptr);
         }
    //--- generamos el contenido de las matrices
       string str="Int:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtIntArray[i];      
       Print(str);   
       str="Dbl:";
       for(int i=0;i<10;i++)
          str+=" "+DoubleToString(ExtDblArray[i],1);
       Print(str);   
       str="Ptr:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtPtrArray[i].X();      
       Print(str);
    //--- no es necesario eliminar los objetos CFoo creados a través de new, se eliminan en el destructor del objeto TArrayPtr<CFoo>  
      }
    Resultado de la ejecución:
    TemplTest (EURUSD,H1)    Int: 10 11 12 13 14 15 16 17 18 19
    TemplTest (EURUSD,H1)    Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0
    TemplTest (EURUSD,H1)    Ptr: 30 31 32 33 34 35 36 37 38 39

  4. Añadidas las nuevas operaciones * y & - respectivamente, para obtener la variable según el enlace y para obtener el enlace a la variable.
  5. Añadida la forma sobrecargada de la función ObjectsDeleteAll - borra todos los objetos del tipo indicado, según el prefijo del nombre en la subventana del gráfico.
    int  ObjectsDeleteAll(
       long           chart_id,   // indentificador del gráfico
       const string     prefix,   // prefijo del nombre del objeto
       int       sub_window=-1,   // índice de la ventana
       int      object_type=-1    // tipo del objeto a eliminar
       );

  6. Corregido el funcionamiento de la función ObjectGetValueByTime. Antes, en ciertos casos (por ejemplo, para la línea de tendencia horizontal) se retornaba de foma incorrecta el valor del precio según la hora en el gráfico.
  7. Corregido el funcionamiento de las funciones Copy* en ausencia de datos históricos en el servidor. Antes, en ausencia de datos en el servidor, la llamada de estas funciones provocaba un retraso de 30-50 segundos a la hora de recuperar el control.
  8. Realizada una serie de correcciones en la biblioteca estándar MQL5.
  9. La documentación sobre la Biblioteca estándar se ha traducido al alemán, francés, chino, turco, español y portugués.
  10. Añadida la documentación MQL5 en japonés.

Tester

  1. Ahora elegir un programa para iniciar en el simulador de estrategias es basntante más fácil. La lista se muestra en forma de árbol, de acuerdo con los catálogos en los que se encuentran los asesores e indicadores.




  2. La representación de ciertos indicadores durante el testado visual se ha adecuado al terminal de cliente.
  3. Corregido el error de establecimiento del apalancamiento y del marco temporal del gráfico durante la depuración de programas MQL5 a através del simulador de estrategias.
  4. Corregida la depuración de los indicadores al simular sobre datos históricos.

Correciones de crash logs.

Se ha actualizado la documentación.