20 diciembre 2017
20 diciembre 2017
La nueva versión de la plataforma no dará soporte a los terminales de escritorio y móviles de las versiones antiguas:
Para dar soporte a los nuevos proyectos compartidos se ha modificado el
protocolo de trabajo con el repositorio online MQL5 Storage. Por
desgracia, después de actualizar a la nueva versión de la plataforma,
usted deberá extraer (check-out) de nuevo todos los datos del
repositorio. Los propios datos que se guardan en él no se tocarán ni
perderán.
Antes de actualizar a la nueva versión de la
plataforma, le recomendamos enviar todos los cambios locales al
repositorio (ejecutar Commit).
Añadida la posibilidad de crear instrumentos financieros sintéticos, es decir, instrumentos basados en uno o más de los disponibles. Solo tiene que especificar la fórmula para el cálculo de las cotizaciones y la plataforma generará los ticks del instrumento sintético en tiempo real, y también creará su historia de minutos.
Cómo sucede esto
Por ejemplo, usted puede crear un instrumento que muestre el índice del dólar (USDX). Su fórmula tendrá el aspecto siguiente:
50.14348112 * pow(ask(EURUSD),-0.576) * pow(USDJPY,0.136) * pow(ask(GBPUSD),-0.119) * pow(USDCAD,0.091) * pow(USDSEK,0.042) * pow(USDCHF,0.036)
Nota: en la fórmula original del índice del dólar se usan las
parejas USDEUR y USDGBP. Puesto que en la plataforma solo hay parejas de
divisas inversas, en la fórmula del instrumento sintético para ellas se
usa la potencia negativa y el precio Ask en lugar de Bid.
La
plataforma calculará en tiempo real el precio del nuevo instrumento
basándose en las cotizaciones de los otros seis instrumentos,
proporcionados por su bróker. En la Observación del mercado y en el
gráfico, podrá ver cómo cambiar su precio:
int CustomTicksAdd( const string symbol, // nombre del símbolo const MqlTick& ticks[] // matriz con los datos de ticks que se deben aplicar al instrumento personalizado );La función CustomTicksAdd permite retransmitir los ticks como si llegaran del servidor del bróker. Los datos se registran directamente en la base de ticks, y luego se envían a la ventana "Observación del mercado". Y ya desde ella, el terminal guarda los ticks en su base. Si se transmite un gran volumen de datos en una llamada, la función cambia su comportamiento para ahorrar recursos. Si se transmiten más de 256 ticks, los datos se dividen en dos partes. La primera parte (la más grande) se registra directamente en la base de ticks (como hace CustomTicksReplace). La segunda parte, compuesta de los últimos 128 ticks, se transmite a la ventana de "Observación de mercado" y, después de ello, se guarda en la base del terminal.
En el MetaEditor han aparecido los proyectos completos. Así, desarrollar programas es mucho más cómodo.
Ahora como proyecto no actúa el principal archivo MQ5 del programa. El
proyecto es un archivo "MQPROJ" aparte, en el que se guardan los ajustes
del programa, los parámetros de compilación y la información sobre
todos los archivos utilizados. El acceso a los ajustes principales del
proyecto se organiza a través de una ventana de diálogo aparte, ya no
hay necesidad de indicarlos en el código fuente con la ayuda de
#property.
Para trabajar más cómodamente con el proyecto, ahora existe una
pestaña aparte en el Navegador. En esta se representan por categorías
todos los archivos utilizados: de inclusión, de recursos, de encabezado,
etc. Además, los archivos se añaden al navegador del proyecto de forma
automática. Por ejemplo, si usted incluye un nuevo archivo MQH en el
código, se mostrará automáticamente en el apartado "Dependencies" del
navegador.
Hemos previsto directamente la posibilidad de
trabajar con nuevos proyectos en el repositorio online MQL5 Storage.
Ahora resulta mucho más cómodo desarrollar grandes proyectos junto a
otros miembros de MQL5.community.
Para trabajar en dichos proyectos compartidos, se ha añadido el nuevo apartado Shared Projects. El proyecto creado en este apartado se envía directamente al repositorio: usted podrá conceder derechos a otros miembros y proceder al desarrollo conjunto rápidamente.
Al compilar el proyecto en Shared Project, el archivo ejecutable EX5 se copia automáticamente en el catálogo local Experts, Indicators o Scripts, dependiendo del tipo de programa. Usted podrá iniciar directamente el programa en el gráfico, sin copiar los archivos manualmente cada vez.
Cambios en el trabajo con el repositorio MQL5 Storage
Para implementar la posibilidad de trabajar con proyectos compartidos, se ha rehecho por completo el protocolo de trabajo con el repositorio MQL5 Storage. Por desgracia, después de actualizar a la nueva versión de la plataforma, usted deberá extraer (check-out) de nuevo todos los datos del repositorio. Los propios datos que se guardan en él no se tocarán ni perderán.
El comando "Extraer datos del repositorio" (Checkout from Storage) ahora no está disponible. Para extraer datos de utilizan los comandos "Activar MQL5 Storage" y "Obtener archivos del repositorio":
Nuevos proyectos: ejemplo de creación y detalles del funcionamiento
En el MetaEditor ahora existe un nuevo elemento: el proyecto propiamente dicho. Se trata de un archivo con la expansión mqproj, en el que se guardan las propiedades generales del programa, así como información sobre todos los archivos utilizados. Ahora es posible gestionar cómodamente las propiedades del programa en una ventana de diálogo propia del MetaEditor, sin tener que modificarlas manualmente en el código fuente (directivas #property).
Si usted ya dispone de desarrollos, el método más sencillo de probar los nuevos proyectos es usar el comando "Nuevo proyecto a partir de un Archivo fuente".
En el mismo catálogo que se encuentra el archivo fuente, se creará un archivo de proyecto homónimo con la expansión mqproj. Al proyecto se añadirán de forma automática las propiedades principales del programa, indicadas como #property en el archivo fuente: el nombre, el copyright, la versión, el enlace al desarrollador y la descripción.
En las propiedades de los proyectos han aparecido dos nuevas opciones para compilar programas MQL5:
Para trabajar con un proyecto se ha diseñado la pestaña aparte "Proyecto", en la ventana "Navegador". En esta pestaña se muestran cómodamente todos los archivos usados en el proyecto. Al generar el proyecto a partir de un archivo fuente, se añaden automáticamente al apartado "Dependencies" todos los archivos de inclusión utilizados (indicados con la ayuda de la directiva #include en el archivo MQ5 principal y en todos los archivos incluidos en él).
Al añadir nuevos archivos de inclusión al código fuente, dichos archivos también aparecerán en el Navegador del proyecto. En el apartado Headers se añadirán los archivos de encabezado utilizados, y en el apartado Resources, las imágenes, sonidos y otros programas MQL5 incluidos en el proyecto en forma de recursos. En el apartado Sources se muestran los archivos MQ5 con el código fuente. Al apartado Settings and files podemos añadir otros archivos, por ejemplo, los ajustes para la simulación y las plantillas para los gráficos.
Para añadir los archivos existentes al proyecto y eliminar archivos del mismo, use los comandos del menú contextual. Preste mucha atención al eliminar archivos: usted puede quitar un archivo del proyecto (suprimir la vinculación) o eliminarlo completamente del disco duro:
Crear un nuevo proyecto es igual de fácil que crear un programa MQL5 normal. Pulse "Nuevo proyecto" y, ya en el Wizard de MQL5 en el modo normal, elija el tipo de programa a crear, indicando también sus propiedades (nombre, manejador de eventos, etc).
Para obtener un archivo ejecutable EX5, usted podrá abrir el proyecto y ejecutar el comando de compilación (F7) o, como antes, abrir el archivo MQ5 principal del programa y compilarlo.
Proyectos compartidos en MQL5 Storage: detalles del funcionamiento
Para trabajar con proyectos compartidos, se ha diseñado el apartado Shared Projects. Si usted aún no ha activado el repositorio, ejecute en el menú contextual de esta carpeta el comando Activate MQL5 Storage. El MetaEditor comprobará de inmediato si hay datos guardados en su repositorio, y también si hay disponible para usted algún proyecto compartido. Los datos disponibles se extraerán instantáneamente del repositorio y luego serán cargados en la computadora (Checkout). Los proyectos compartidos disponibles se mostrarán en el apartado Shared Project, para obtenerlos, pulse "Extraer archivos del repositorio" en el menú contextual.
Para crear un nuevo proyecto compartido, elija la carpeta Shared Projects y pulse "Nuevo proyecto":
A continuación, siga los pasos estándar del Wizard MQL5: indique el tipo, el nombre y las propiedades del futuro programa. Elija para los proyectos compartidos nombres claros y comprensibles, para que los demás miembros puedan distinguirlos fácilmente. En los nombres solo se permiten letras latinas, no están permitidos los espacios en blanco.
Una vez creado, el proyecto se añadirá automáticamente al repositorio MQL5 Storage. Los archivos utilizados de la biblioteca estándar no son añadidos al repositorio, podrá añadirlos manualmente en caso necesario.
Para permitir trabajar en el proyecto a los otros integrantes, abra las propiedades del mismo. Aquí podrá conceder derechos a usuarios concretos (indicando el login de MQL5.community), y también establecer los parámetros generales del trabajo cooperativo:
Para trabajar con mayor comodidad, al compilar un proyecto
compartido, el archivo ejecutable final (EX5) se copia de forma
automática en la carpeta Experts, Indicators o Scripts, dependiendo del
tipo de programa. De esta forma, usted podrá iniciar directamente el
programa en el terminal, sin copiarlo manualmente al catálogo necesario.
Proyectos públicos en MQL5 Storage: participación en los desarrollos
Como ya hemos mencionado anteriormente, cada proyecto compartido en MQL5 Storage dispone de ajustes de privacidad: el proyecto puede ser privado o estár abierto para otros usuarios. Ahora todos los proyectos en los que se puede participar libremente se representan en la pestaña aparte "Proyectos públicos".
Cualquier usuario puede encontrar un proyecto interesante y participar en su desarrollo. Basta con pulsar "Unirse", y después recibir el proyecto desde el repositorio.
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- archivo de la plantilla en forma de matriz binaria unsigned char my_template[]= { 0xFF,0xFE,0x3C, ... ,0x00 // la matriz de datos ha sido acortada en el ejemplo }; //--- guardamos y aplicamos la plantilla if(FileSave("my_template.tpl",my_template)) { Print("Custom template saved in \\MQL5\\Files"); if(ChartApplyTemplate(0,"\\Files\\my_template.tpl")) Print("Custom template applied to the current chart"); else Print("Failed to apply custom template"); } else Print("Failed to save custom template"); }
Función | Acción |
---|---|
CustomSymbolCreate | Crea un símbolo personalizado con el nombre indicado en el grupo indicado |
CustomSymbolDelete | Elimina el símbolo personalizado con el nombre indicado |
CustomSymbolSetInteger | Establece para el símbolo personalizado el valor de propiedad de tipo de número entero |
CustomSymbolSetDouble | Establece para el símbolo personalizado el valor de propiedad de tipo real |
CustomSymbolSetString | Establece para el símbolo personalizado el valor de propiedad de tipo string |
CustomSymbolSetMarginRate | Establece para el símbolo personalizado los coeficientes del margen de carga dependiendo del tipo y la dirección de la orden |
CustomSymbolSetSessionQuote | Establece la hora de comienzo y finalización de la sesión de cotizaciones indicada para los símbolos y el día de la semana indicados |
CustomSymbolSetSessionTrade | Establece la hora de comienzo y finalización de la sesión de comercial indicada para los símbolos y el día de la semana indicados |
CustomRatesDelete | Elimina todas las barras en el intervalo temporal indicado de la historia de precios del instrumento personalizado |
CustomRatesReplace | Sustituye totalmente la historia de precios del instrumento personalizado en el intervalo temporal indicado, con los datos de la matriz del tipo MqlRates |
CustomRatesUpdate | Añade a la historia del instrumento personalizado las barras ausentes y sustituye las existentes con datos de la matriz del tipo MqlRates |
CustomTicksAdd | Añade a la historia de precios del instrumento personalizado los datos de la matriz del tipo MqlTick. El símbolo personalizado debe ser elegido en la ventana de MarketWatch (Observación del mercado) |
CustomTicksDelete | Elimina todos los ticks en el intervalo temporal indicado de la historia de precios del instrumento personalizado |
CustomTicksReplace | Sustituye totalmente la historia de precios del instrumento personalizado en el intervalo temporal indicado, con los datos de la matriz del tipo MqlTick |
La biblioteca se ubica en el catálogo de trabajo del terminal en la carpeta Include\Generic.
bool ArraySwap( void& array1[], // primera matriz void& array2[] // segunda matriz );La función adopta matrices dinámicas de idéntico tipo e idénticas dimensiones. Para las matrices multidimensionales, deberá coincidir el número de elementos en todas las dimensiones, excepto la primera.