MetaTrader 5 build 2340: Gestión de los ajustes de la cuenta en el simulador y ampliación de la integración con Python

Añadida la posibilidad de trabajar cómodamente con bases de datos SQLite. En la anterior actualización de la plataforma, añadimos el soporte del trabajo con bases de datos SQLite directamente desde MQL5. Ahora, las funciones principales están también disponibles a través de la interfaz de usuario del MetaEditor

21 febrero 2020

MetaEditor

  1. Añadida la posibilidad de trabajar cómodamente con bases de datos SQLite.

    En la anterior actualización de la plataforma, añadimos el soporte del trabajo con bases de datos SQLite directamente desde MQL5. Ahora, las funciones principales están también disponibles a través de la interfaz de usuario del MetaEditor:

    • Creación de bases de datos y conexión a las mismas
    • Visualización de recuadros y solicitud rápida de datos
    • Creación y ejecución de solicitudes SQL, cancelación de cambios

    Cómo funciona
    Para crear bases de datos rápidamente, utilice el "Wizard MQL5". Aquí podrá crear directamente su primer recuadro y definir la lista con sus campos.



    Una vez haya creado la base de datos, entre en el nuevo apartado "Navegador". Desde dicho apartado tendrá lugar todo el trabajo con los datos.

    En la parte izquierda se representan los recuadros de la base de datos. Para solicitar rápidamente las primeras 1 000 mil entradas, clique dos veces sobre el nombre del recuadro. Aquí podrá crear y abrir otras bases de datos, y también trabajar con los recuadros.

    En la parte principal del editor tiene lugar el trabajo con la base de datos: rellene el recuadro con datos, realice búsquedas y selecciones, introduzca solicitudes SQL, etcétera.


    Para más información sobre las bases de datos en MetaTrader 5, lea el artículo "SQLite: trabajo nativo con bases de datos en SQL en MQL5".

  2. Continúa el trabajo sobre la adición del soporte de proyectos multilingües. En esta versión, hemos ampliado las funciones para trabajar con scripts en Python:

    • Ahora es posible crearlos cómodamente a través del "Wizard MQL5", incluyendo de inmediato las dependencias de las bibliotecas necesarias.
    • En el navegador se han añadido para ellos iconos especiales, mientras que en el editor se ha agregado el resaltado de sintaxis.
    • Al iniciar un script a través del MetaEditor, los mensajes de la consola de Python (stdout, stderr) se mostrarán en el apartado "Errores".


    Para iniciar un script en el editor, pulse "Compilar":


    Para trabajar con Python, no olvide indicar la ruta al mismo en el apartado "Ajustes \ Compiladores" en MetaEditor. Para trabajar con la biblioteca MetaTrader 5, instálela con el comando:
    pip install MetaTrader5
    Lea más información sobre la integración con Python en la documentación.
  3. Añadida la muestra de archivos de las bases de datos SQLite (*.db;*.sdb;*.sqlite;*.db3;*.s3db;*.sqlite3) en el "Navegador".
  4. Corregidos los errores surgidos al guardar las propiedades del proyecto.

MQL5

  1. Completamente rediseñada la integración con Python. Se han añadido multitud de nuevas funciones y se han modificado los nombres de los comandos.

    Nuevo nombre de los comandos
    Los comandos existentes han sido renombrados:
    MT5Initialize       -> initialize
    MT5Shutdown         -> shutdown
    MT5TerminalInfo     -> terminal_info
    MT5Version          -> version
    MT5CopyRatesFrom    -> copy_rates_from
    MT5CopyRatesFromPos -> copy_rates_from_pos
    MT5CopyRatesRange   -> copy_rates_range
    MT5CopyTicksFrom    -> copy_ticks_from
    MT5CopyTicksRange   -> copy_tick_range

    Nuevos comandos
    La lista de comandos soportados ha sido notablemente ampliada. Se han añadido funciones de comercio y trabajo con la historia comercial, y también para la obtención de información sobre los instrumentos financieros y la cuenta actual.

    • account_info() — obtiene información sobre la cuenta actual. Análogo de AccountInfoInteger, AcountIndoDouble y AccountInfoString.
    • positions_total() — obtiene el número de posiciones abiertas. Análogo de PositionsTotal.
    • positions_get(symbol, ticket) — obtiene las posiciones abiertas de un símbolo o ticket.
    • orders_total() — obtiene el número de órdenes. Análogo de OrdersTotal.
    • orders_get(symbol, ticket) — obtiene las órdenes abiertas de un símbolo o ticket.
    • history_orders_total(from, to) — obtiene el número de órdenes en la historia en el intervalo temporal establecido.
    • history_orders_get(from, to, position, ticket) — obtiene las órdenes de la historia en el intervalo temporal establecido, ya sea de un ticket, o con filtrado por posición.
    • history_deals_total() — obtiene el número de transacciones en la historia. Análogo de HistoryDealsTotal.
    • history_deals_get(from, to, position, ticket) — obtiene las transacciones de la historia en el intervalo temporal establecido, ya sea de un ticket, o con filtrado por posición.
    • symbol_info(symbol) — obtiene información sobre un instrumento financiero. Análogo de SymbolInfoInteger, SymbolInfoDouble, SymbolInfoString.
    • symbol_info_tick(symbol) — obtiene el último tick de un símbolo. Análogo de SymbolInfoTick.
    • symbol_select(symbol, enable) — activa/desactiva un símbolo en la "Observación de mercado". Análogo de SymbolSelect.
    • order_check(request) — comprueba el margen para una orden. Análogo de OrderCheck.
    • order_send(request) — envía una orden al servidor. Análogo de OrderSend.
    • order_calc_margin(action, symbol, volume, price) — calcula el margen para una orden. Análogo de OrderCalcMargin.
    • order_calc_profit(action, symbol, volume, price_open, price_close) — calcula el beneficio. Análogo de OrderCalcProfit.

    Inicio de scripts de Python en los gráficos
    Ahora, los scripts en Python se pueden iniciar directamente en los gráficos en la plataforma, de forma análoga a los programas MQL5 habituales. En el "Navegador", estos se mostrarán con iconos especiales.



    Los mensajes del script se mostrarán en el apartado "Herramientas \ Expertos". Si en el script se usa la biblioteca MetaTrader 5, podrá obtener información sobre el instrumento y la cuenta, y también comerciar.

    Los scripts de Python se pueden iniciar en el mismo gráfico de forma paralela con otros scripts y asesores de MQL5. Para detener un script (si su ejecución ha entrado en un bucle), solo tendrá que eliminarlo.

    Protección adicional
    Para proteger adicionalmente sus cuentas al utilizar bibliotecas Python de terceros, se ha añadido a los ajustes del terminal la opción "Desativar el comercio automático a través de una API Python externa".


    A los scripts de Python se les permitirán las operaciones comerciales al desactivar explícitamente esta opción.

  2. Sustancialmente acelerada la reinicialización de programas MQL5 y la creación repetida de indicadores de usuario desde programas MQL5. En algunos casos, la velocidad ha aumentado centenares de veces.
  3. Añadidas funciones para trabajar con bases de datos:

    DatabaseImport
    Importa a un recuadro los datos de un archivo.
    long  DatabaseImport(
       int           database,          // manejador de la base de datos obtenido en DatabaseOpen
       const string  table,             // nombre del recuadro para insertar los datos
       const string  filename,          // nombre del archivo para importar los datos
       uint          flags,             // combinación de banderas
       const string  separator,         // separador de datos 
       ulong         skip_rows,         // cuántas primeras líneas se omitirán 
       const string  skip_comments      // línea de símbolos que definen los comentarios
       );

    DatabaseExport
    Exporta un recuadro o el resultado de la ejecución de una solicitud SQL a un archivo CSV. El archivo se crea en la codificación UTF-8.
    long  DatabaseExport( 
       int           database,           // manejador de la base de datos obtenido en DatabaseOpen 
       const string  table_or_sql,       // nombre del recuadro o solicitud SQL 
       const string  filename,           // nombre del archivo CSV para exportar datos 
       uint          flags,              // combinación de banderas 
       const string  separator           // separador de datos en el archivo CSV 
       );

    DatabasePrint
    Imprime el recuadro o resultado de la ejecución de una solicitud SQL en el diario de expertos.
    long  DatabasePrint(
       int           database,          // manejador de la base de datos obtenido en DatabaseOpen
       const string  table_or_sql,      // recuadro o solicitud SQL
       uint          flags              // combinación de banderas
       );

  4. Añadida la función FileSelectDialog, que llama a una ventana de diálogo de sistema para crear/abrir un archivo o carpeta.
    int  FileSelectDialog(
       string   caption,              // encabezado de la ventana
       string   initial_dir,          // carpeta inicial
       string   filter,               // filtro de extensiones
       uint     flags,                // combinación de banderas
       string&  filenames[],          // matriz con los nombres de los archivos
       string   default_filename      // nombre del archivo por defecto
       );
    La nueva función permite implementar una cómoda interacción entre el usuario y un programa MQL5.

  5. Añadido a la enumeración ENUM_DEAL_PROPERTY_DOUBLE el valor DEAL_FEE, el pago por la realización de una transacción. De hecho, se trata de un tipo aparte de comisión que puede ser cobrada por el bróker.

Tester

  1. Añadida la posibilidad de establecer ajustes propios para la cuenta comercial al simular una estrategia, por ejemplo, limitaciones comerciales, ajustes de margen y comisiones. De estas forma, usted tendrá aún más posibilidades a la hora de simular diferentes condiciones comerciales con los brókeres.



    Ajustes generales
    En este apartado, usted podrá establecer el número máximo de órdenes y posiciones abiertas que se podrán tener simultáneamente en la cuenta. Asimismo, podrá configurar las sesiones en que el programa simulado no podrá comerciar.

    Margen
    Aquí podrá controlar por completo cómo se reservará el margen y qué sistema de registro de posiciones se utilizará durante la simulación:

    • Gestión de riesgos — modelo de gestión de riesgos: extrabursátil o bursátil, con compensación y cobertura. Podrá encontrar información detallada sobre ellos en la guía de ayuda.
    • Nivel de "Margin call" — al alcanzarse este nivel de fondos, la cuenta cambia al estado Margin call.
    • Nivel de "Stop out" — al alcanzarse este nivel de fondos, en la cuenta se cancelan forzosamente las órdenes, y también se cierran las posiciones comerciales. Ambos niveles se pueden indicar en porcentaje y en dinero. En el primer caso, los niveles se definen como el valor del indicador "Fondos" en la cuenta. Al seleccionar la opción "En porcentaje", los niveles se definen como el valor del indicador "Nivel de margen" en la cuenta (Fondos/Margen*100).
    • No realizado — en este campo se indica de qué forma se registrará el beneficio/pérdidas flotantes en el margen libre:
      • No usar el beneficio/pérdidas flotantes — no tener en cuenta en el cálculo las posiciones abiertas.
      • Usar beneficio/pérdidas flotantes — utilizar en el cálculo las pérdidas y el beneficio de las posiciones abiertas
      • Usar beneficio flotante — usar solo el beneficio.
      • Usar pérdidas flotantes — usar solo las pérdidas.
    • Fijado diario — en este campo se indica de qué forma se tendrá en cuenta el beneficio/pérdidas fijados por el tráder durante el día comercial, en el margen libre:
      • Usar beneficio/pérdidas fijados diarios — tener en cuenta el beneficio y las pérdidas registrados durante el día comercial, en el margen libre.
      • Usar pérdidas fijadas diarias — tener en cuenta solo las pérdidas registradas durante el día comercial, en el margen libre. Durante el día, el benenficio diario se fija en un campo aparte de la cuenta ("Bloqueado"). Al finalizar el día comercial, el beneficio acumulado se libera (se pone a cero) y se representa en el balance de la cuenta (se tiene en cuenta en el margen libre).
    • Liberar el beneficio acumulado al final del día — esta opción solo está disponible activando la opción "Usar pérdidas fijadas diarias". Si está activada, al final del día comercial, el beneficio acumulado durante el día se liberará y se registrará en el balance (y, por consiguiente, se tendrá en cuenta en el margen libre). De lo contrario, el beneficio permanecerá bloqueado.

    Comisión
    En este apartado, usted controlará por completo cómo se cobra la comisión de todas las operaciones comerciales.

    • Las comisiones pueden ser de un solo nivel o de varios, es decir, se pueden cobrar por la misma cuantía, independientemente del volumen de la transacción/circulación, o diferenciarse en función de su magnitud. En las especificaciones se muestra la información correspondiente.
    • Las comisiones pueden cobrarse al realizarse una transacción o al final del día/mes comercial.
    • Las comisiones se cobrarán dependiendo de la dirección de la transacción: por la entrada, por la salida, o por ambos tipos de operación.
    • Las comisiones pueden cobrarse por cada lote o por cada transacción.
    • Las comisiones pueden cobrarse en diferentes magnitudes: en dinero, en tanto por ciento o en puntos.


  2. Optimizado y acelerado significativamente el trabajo en el modo "Escaneo del mercado", cuando se realizan varias pasadas de prueba de todos los símbolos de la "Observación de mercado".
  3. Al calcular el beneficio en pips, ahora se tiene en cuenta el tamaño de la transacción o posición. Antes, el cálculo se realizaba sin tener en cuenta el volumen, como si fuera para un solo lote.
  4. Mejorado el control del gráfico de resultados de la optimización. Al aumentar el zoom sobre un gráfico de optimización normal, ahora es posible girarlo. Clique dos veces en un punto del gráfico para destacar el resultado correspondiente en el recuadro de pasadas.
Documentación actualizada.