• Únete >>

Monitoreo multidivisas de las señales comerciales (Parte 1): Desarrollando la estructura de la aplicación

24 enero 2020, 10:27
Alexander Fedosov
0
978

Contenido

Introducción

Con la evolución de la plataforma comercial MetaTrader 5, obtenemos cada vez más y más posibilidades y herramientas para trabajar con mercados de divisas, bolsas de acciones, etc. También se desarrolla el campo de esta actividad como el trading algorítmico, aparecen los sistemas comerciales automáticos que intentan implementar las ideas de sus autores al máximo y con mayor precisión. No obstante, sigue existiendo una parte de los traders que prefieren operar como suele llamarse «manualmente». A saber, se crean los sistemas comerciales cuyas señales se atienen a ciertas reglas y se basan en determinados algoritmos, pero la decisión final sobre la entrada en el mercado se reserva para el ser humano. En comparación con un sistema comercial automático, la desventaja de este enfoque consiste en que siempre existe una subjetividad de la percepción y un factor humano, a pesar de la rigidez con la que han sido establecidas las normas de trading. Pero si el sistema comercial manual surte un efecto positivo para su autor, ¿por qué no?

Incluso al tradear manualmente, el trader se basa en un determinado algoritmo de trabajo y una secuencia de acciones que consisten en cinco tareas principales:

  • Definición de señales comerciales.
  • Reglas y tipo de la entrada en el mercado.
  • Acompañamiento de posiciones abiertas.
  • Definición de las señales para salir del mercado.
  • Reglas de la salida del mercado.

Durante el trading manual, cada una de estas tareas supone una cierta interacción del trader tanto con el terminal (cierre, apertura, monitoreo de la posición), como con su su sistema comercial (búsqueda de las señales en los mercados establecidos para el sistema mediante unos determinados medios técnicos). Todo esto absorbe bastante tiempo y requiere mucha atención, concentración y asiduidad. La presente serie de artículos está destinada para eximir a los traders que operan manualmente de una parte de su trabajo. Crearemos paso a paso una aplicación multidivisas ajustada de forma flexible que permite tanto crear las señales comerciales, como exonerar a los traders de buscarlas, representando todo eso de forma más conveniente.


Estructura base de la aplicación

Antes de implementar la aplicación, primero vale la pena definir los bloques principales, su composición interna, así como, la secuencia de interacción entre los mismos. Pues, lo mismo que para la mayoría de las aplicaciones modernas, hay dos momentos clave durante el trabajo con ellas:

  • Inicio primario. Durante el primer inicio de la aplicación, ella estudia el entorno comercial, obtiene datos necesarios para su trabajo, así como, permite a su usuario configurarla paso a paso y recordar todas sus preferencias seleccionadas en la interfaz.
  • Inicio secundario. Se trata del inicio de la aplicación ya configurada. Normalmente, en esta fase se realiza el trabajo directo de la aplicación de acuerdo con los ajustes establecidos anteriormente. Sin embargo, se puede reconfigurarla parcialmente en cualquier momento o permitir al usuario volver al Inicio primario.

Fig. 1 Estructura base de la aplicación.

Como podemos observar, el orden del arranque durante el Inicio Primario y Secundario se diferencia sólo por la secuencia de pasos. Vamos a considerar qué es lo que debe incluir el Inicio Primario y Secundario.


Inicio primario de la aplicación

Para el Inicio primario la tareas principales serán aquéllas que han sido descritas antes. Pero la cosa es que, dependiendo del bróker, tipo de la cuenta en la Observación del mercado del terminal MetaTrader 5, pueden haber centenares de instrumentos propuestos para la negociación. Se trata de un bloque de datos bastante grande, pero es dudoso que sea necesario enteramente para un determinado sistema comercial, salvo que éste sea tan universal. Dado que la mayoría de los sistemas se crean para las particularidades de determinados mercados, grupo de pares de divisas, o incluso para una determinada acción en el mercado de valores, en un determinado marco temporal.

Debido a eso, debe haber una herramienta de selección y filtración tanto para los instrumentos comerciales en los que va a realizarse la búsqueda de señales y la negociación, así como el timeframe actual o un grupo de los mismos.

Por tanto, la estructura del Inicio primario se compone de tres pasos sucesivos:

  • Selección del símbolo para el trabajo.
  • Selección del timeframe para el trabajo.
  • Creación de la señal comercial.

Paso 1. Ahora vamos a crear los maquetas de cada uno de ellos para la implementación subsiguiente en el futuro monitoreo.

Fig. 2 Paso 1: Selección del símbolo para el trabajo.

Vamos a considerar con más detalles los elementos de la interfaz y la funcionalidad del primer paso del Inicio primario de la aplicación:

  1. El encabezado con el nombre de la aplicación y con la información sobre el número del paso y su nombre. En este caso, será el Paso 1: Selección del símbolo.
  2. Incluye un grupo de botones para la selección rápida de los grupos del uso frecuente, como «Todos, Mayores, Cruzamientos». En este caso, los botones poseen la propiedad de conmutadores, como nos indica el botón Majors. En caso del estado activo (color azul), el grupo de símbolos está seleccionado, si está desactivado (color gris), la selección del grupo de símbolos está desactivada.
  3. El campo de edición para introducir el nombre de un conjunto de símbolos personalizado. Es necesario para indicar personalmente los símbolos para el trabajo. Es útil cuando en el monitoreo se utilizan varias configuraciones o variaciones de la estrategia.
  4. El botón Load (Cargar) carga el conjunto de símbolos seleccionados creado anteriormente con el nombre desde el campo de edición (pos. 3), también tiene el atajo de teclado L para esta acción.
  5. El botón Save (Guardar) guarda el conjunto de símbolos seleccionados creado anteriormente con el nombre desde el campo de edición (pos. 3), también tiene el atajo de teclado S para esta acción.
  6. El conjunto de las casillas de verificación (checkbox) con el nombre de los símbolos. Contiene la lista completa de símbolos desde la Observación del mercado disponible en esta cuenta comercial.
  7. El botón para ir al siguiente paso del Inicio primario de la aplicación. 

Fig. 3 Número de símbolos activos y totales disponibles.

Además, en la fase de programación de este paso, hay que tener en cuenta que el número total de los símbolos (fig. 2) puede superar la altura de la aplicación, por eso, hay que incluir la función del cambio automático de la altura.

Paso 2. Ahora procedemos al segundo paso (selección de timeframes). Puesto que el número de los timeframes en MetaTrader 5 es constante, la creación del maqueta base para el segundo paso será más fácil.


Fig. 4 Paso 2: Selección de timeframes para el trabajo.

Vamos a considerar de qué se compone el segundo paso de las configuraciones primarias:

  1. El encabezado con el nombre de la aplicación y paso actual de su configuración. En este caso, será el Paso 2: Selección de timeframes.
  2. El grupo de botones predefinidos tiene el mismo sentido que en el paso 1, es decir, la selección rápida de los grupos de uso frecuente. En este caso, se ofrece la selección de todos los timeframes (ALL), los Mayores (Senior) o los Menores (Junior).
  3. El conjunto de las casillas de verificación (checkbox) con todos los timeframes disponibles.
  4. Los botones para ir al paso 1 (Back) o al siguiente paso (Next).

Paso 3. Antes de componer el modelo de la creación de señales, es necesario definir el formato del monitoreo multidivisas, así como, el conjunto de medios gráficos que serán usados para mostrar e indicar las señales comerciales.


Fig. 5. Esquema del bloque de indicación.

En la figura 5, se muestra el bloque estándar de la indicación de una señal, así como sus cinco componentes. Vamos a considerarlos más detalladamente:

  1. Border. El borde del bloque de indicación tiene la única propiedad, su color.
  2. Background. El fondo también tiene una propiedad del color.
  3. Image. El elemento gráfico representa una imagen en el formato bmp.
  4. Label. El elemento d texto tiene varias propiedades: color, tamaño, valor.
  5. Tooltip. Ayuda emergente. Tiene la propiedad del valor de texto.

No es difícil de adivinar que diferentes combinaciones de las propiedades de estos elementos pueden ser ajustadas para diferentes tareas, indicadores, señales, sus conjuntos y tipos. Ahora, veremos cómo será el tercer paso de la Configuración primaria.

Fig. 6 Paso 3: Creación de señales comerciales.

Aquí hay que prestar atención en dos elementos principales. Se trata del botón para añadir una señal a la lista de señales (Signal List) y la propia lista de señales, con el nombre y la posibilidad (Edit) de empezar la edición. Al pulsar en el botón Edit, se abre una ventana adicional con ajustes de señales. En la primera fase del desarrollo de la aplicación, el conjunto de configuraciones será estándar, con posibilidad de ser ampliado y completado en el futuro.


Fig. 7 Prototipo de la ventana para crear y editar una señal comercial.

Vamos a analizar el prototipo del trabajo con una señal nueva y con una señal ya creada:

  1. Después de pulsar en el botón Add Signal (Añadir señal), se abrirá la ventana para su edición. En el primer punto, se selecciona el tipo del indicador a cuya base será creada la señal comercial. 
  2. Dependiendo de la selección del indicador, los ajustes para él se mostrarán en la sección Indicator Settings (Ajustes del indicador).
  3. A continuación, se le ofrece definir las condiciones de la aparición de la señal. También depende del tipo del indicador seleccionado.
  4. En el prototipo, a base del indicador RSI se muestra la selección de la condición de la aparición de la señal (Rule). En este caso, es su valor mayor o igual a 70.
  5. En la subsección Label hay una opción que indica cómo se usa la etiqueta de texto en el bloque de la señal. Mostrar el valor del indicador, o agregar una etiqueta de texto personalizada.
  6. En Label color seleccionamos el color de la etiqueta de texto.
  7. Opción ajustada. Use Background permite ajustar el color del fondo del bloque de señales.
  8. Opción ajustada. Use Border permite ajustar el color del borde del bloque de señales.
  9. Opción ajustada. Use Tooltip permite añadir el comentario emergente para la señal actual.
  10. Opción ajustada. Use Image permite añadir un elemento gráfico desde la lista establecida al bloque de señales.
  11. Timeframes permite ajustar la lista de marcos temporales en los que vamos a buscar la señal configurada.

Después de añadir una cantidad necesaria de señales y su configuración, pasamos al propio monitoreo de señales comerciales. En esta fase, la Configuración primaria de la aplicación queda por concluida, y en el siguiente paso vamos a la parte principal de la aplicación donde vamos a realizar el trabajo siguiente.

Inicio secundario de la aplicación

Durante el Inicio secundario de la aplicación, su reinicio en otro gráfico o en un gráfico nuevo del terminal abierto, ocurre la llamada a los datos ya existentes del Inicio primario. Por eso, las ventanas de la selección de símbolos y timeframes se omiten y pasamos inmediatamente al monitoreo comercial. En este caso, como se indica en la Fig. 1, siempre se puede volver a la fase del Inicio primario, o editar/añadir parcialmente señales nuevas.

Fig. 8 Ventana principal del monitoreo de señales comerciales.

Pues bien, durante el Inicio secundario, veremos la ventana principal del monitoreo en modo de trabajo. Vamos a analizar los grupos principales de los elementos que se muestran aquí y cuáles de los ajustes anteriores han tenido efecto en ellos.

  1. La lista vertical de los símbolos seleccionados en el Paso 1 del Inicio primario. Son principales y operativos, y coinciden con los seleccionados en la Observación del mercado del propio terminal.
  2. Los timeframes seleccionados en el Paso 2 del Inicio primario.
  3. Conjunto de bloques de señales correspondientes a los timeframes y símbolos seleccionados.
  4. Botones de control en el encabezado de la ventana, de izquierda a derecha: Ajustes, Minimizar ventana, Cerrar aplicación.

Fíjense en el botón Ajustes, ya que permite ir a la edición/creación de señales comerciales (fig. 6) durante el Inicio secundario, así como, sirve para ir al modo de la Configuración primaria.

Creando la plantilla de la aplicación

Bien, una vez definida la estructura principal de nuestra futura aplicación, creamos una carpeta que va a contener todos los archivos de nuestro monitoreo. Creamos la carpeta Signal Monitor en el directorio <carpeta de datos>\MQL5\Experts.Creamos dentro el siguiente conjunto de archivos:

  • Signal Monitor.mq5 — archivo principal de la aplicación.
  • Program.mqh — va a contener la clase principal de la aplicación CProgram, además, tendrá conectada una biblioteca gráfica.
  • MainWindow.mqh — archivo incluido que contiene la implementación de los métodos necesarios para crear la ventana principal de la aplicación.
  • SetWindow.mqh — archivo incluido con los métodos que implementan el contenido visual y lógico de las ventanas de configuraciones (Fig. 6-7).
  • StepWindow.mqh — archivo incluido con los métodos de la implementación de la interfaz de la configuración paso a paso durante el Inicio primario.

Si ha hecho todo correctamente, tendrá una estructura de archivos como en la figura 9.

Fig. 9 Estructura de archivos de la aplicación.

Ahora, nos queda conectar la biblioteca gráfica a ellos, y unirlos en un sistema. Primero, entramos en los archivos Signal Monitor, MainWindow, SetWindow, StepWindow e incluimos el archivo con la clase principal de la aplicación Program en ellos.

//--- Incluir la clase de la aplicación
#include "Program.mqh"

Ahora, entramos en Program.mqh y conectamos la biblioteca gráfica, así como, los archivos con elementos principales de la interfaz.

#include <EasyAndFastGUI\WndEvents.mqh>
//+------------------------------------------------------------------+
//| Clase para crear la aplicación                                     |
//+------------------------------------------------------------------+
class CProgram
{
public:
   CProgram(void);
   ~CProgram(void);
};
//+------------------------------------------------------------------+
//| Añadir controles                                  |
//+------------------------------------------------------------------+
#include "MainWindow.mqh"
#include "SetWindow.mqh"
#include "StepWindow.mqh"
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CProgram::CProgram(void)
{
}
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CProgram::~CProgram(void)
{
}
//+------------------------------------------------------------------+

Ahora, la configuración inicial está concluida. En el siguiente artículo, crearemos las ventanas principales de la interfaz, configuraremos su interacción, así como, las llenaremos con los controles descritos en este artículo.


Conclusión

Al final del articulo se adjunta el archivo comprimido con todos los ficheros mencionados, ordenados por carpetas. Por eso, para un trabajo correcto basta con colocar la carpeta MQL5  en la raíz del terminal. Para abrir el directorio raíz del terminal que contiene la carpeta MQL5, pulse en la combinación Ctrl+Shift+D o utilice el menú contextual, tal como se muestra en la imagen 10.


Fig. 10 Abrir la carpeta MQL5 en el directorio raíz del terminal MetaTrader 5


Traducción del ruso hecha por MetaQuotes Software Corp.
Artículo original: https://www.mql5.com/ru/articles/7417

Archivos adjuntos |
MQL5.zip (474.84 KB)
Ampliamos la funcionalidad del Constructor de estrategias Ampliamos la funcionalidad del Constructor de estrategias

En dos artículos anteriores, analizamos el uso de las figuras técnicas de Merrill aplicándolas a diferentes tipos de datos. Fue desarrollada una aplicación para la simulación a base de esta idea. En este artículo, continuaremos nuestro trabajo con el Constructor de estrategias, mejoraremos su funcionamiento, lo haremos más cómodo, así como ampliaremos su funcionalidad y capacidades.

Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXIV): Clase comercial principal - corrección automática de parámetros erróneos Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXIV): Clase comercial principal - corrección automática de parámetros erróneos

En el presente artículo, analizaremos el manejador de parámetros erróneos de la orden comercial, mejoraremos la clase comercial básica y también corregiremos el funcionamiento de la clase de eventos comerciales: ahora, todos los eventos comerciales, tanto únicos, como simultáneos en un mismo tick, serán correctamente determinados en los programas.

Trabajando con las funciones de red, o MySQL sin DLL: Parte I - el conector Trabajando con las funciones de red, o MySQL sin DLL: Parte I - el conector

Hace relativamente poco, aparecieron en MetaTrader 5 las funciones de red. Este hecho abre un amplio abanico de posibilidades para los programadores que desarrollan productos para el Mercado, ya que ahora es posible implementar aquello que antes no se podía conseguir sin bibliotecas dinámicas. En este artículo, nos familiarizaremos con ellas usando como ejemplo la escritura de un conector MySQL.

Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXV): Procesando los errores retornados por el servidor comercial Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXV): Procesando los errores retornados por el servidor comercial

Después de enviar una orden comercial al servidor, no deberíamos pensar que "ya está todo hecho", ya que ahora tendremos que comprobar los códigos de error, o bien la ausencia de los mismos. En el presente artículo, vamos a implementar el procesamiento de los errores retornados por el servidor comercial, preparando asimismo la base para crear solicitudes comerciales pendientes.