Kit del Trader: Librería del trade de arraste

TheXpert | 21 septiembre, 2015


Introducción

En el momento del desarrollo, ya existían algunos productos que en cierta medida implementan la funcionalidad proporcionada por la libreria o tenía características similares. No puedo decir si la librería es mejor o peor que aquellos. En alguno de ellos se pierden funcionalidades, por ejemplo el conocido Autógrafo y en otros - en comodidad. Sin embargo La librería de Trade de Arrastre tiene sus particularidades y el producto se espera que sea en demanda.


1. Propósito del Desarrollo

Fue planeado inicialmente para crear un Asesor Experto para operar y manejar órdenes directamente en una gráfica usando el ratón y el control de objetos manteniendo la facilidad de uso y una interfaz minimalista. Dicho esto, una característica importante del EA fue el hecho de que fue desarrollado totalmente en el idioma original del terminal, por lo tanto sera seguro para los usuarios ya que no puede contener código malicioso. Además, el EA fue pensado originalmente para ser software libre.

El proyecto dio lugar a la librería que combina las características anteriores y podría integrarse fácilmente en prácticamente cualquier EA. Además, el código de la librería contiene muchas funciones útiles que pueden ser utilizadas fuera del marco de la librería.


2. Estructura

La funcionalidad de la librerís se puede dividirse en cuatro bloques:

  1. Bloque del Trading
  2. Bloque de información
  3. Bloque del control de ordenes
  4. Bloque de configuración


Fig. 1. Funcionalidad de la librería

La Funcionalidad del EA se muestra basadose en el mismo principio de división del bloque - la interfaz de usuario se divide en 3 bloques independientes que pueden utilizarse conjuntamente y de manera independiente al activar y desactivar los bloques requeridos que sean necesarios durante la operación. Por otra parte, este enfoque permite ahorrar recursos conseguiendo perdidos durante la elaboración de bloques lógicos innecesarios o incluso utilizar recursos mínimos cuando las funcionalidades de los bloques están deshabilitadas. Todos las funciones de los bloques están deshabilitados por defecto.


2.1. Principios de la activación y desactivación de los bloques

Todas las funcionalidades del bloque trazadas y procesas se encuentran en el Asesor Experto. Sin embargo la información y más objetos de información y control no se trazan en la ventana de herramientas principal. El espacio de dibujo es proporcionado por pseudoindicators que también sirven para activar y desactivar las funcionalidades de los bloques. Esto significa que si un determinado indicador está presente en la gráfica, las respectivas funciones del bloque del EA se habilitan y operan.

Como tal no se utilizan los indicadores. Su único propósito es proporcionar el espacio del trazo.


Fig 2. Indicadores auxiliares

Existen algunas limitaciones en el uso de indicadores. Cualquier indicador externos puede ser arrastrados al una ventana del pseudoindicator, pero no al revés como se determinó la presencia de una ventana con el nombre de pseudoindicator y las funciones respectivas del bloque simplemente no se conseguen habilitar.


3. Interfaz de usuario

3.1. Configuración del Asesor Experto

Los ajustes fueron tomados de la librería para formar una funcionalidad del bloque separada. Esto nos permitió realmente singularizar y colocar la funcionalidad completa en la librería y realizar a ajustes externamente antes y durante la operación del Asesor Experto. Además, la configuración puede dividirse en bloques lógicos separados, sin escatimar en especificaciones.

El proceso en sí consiste en aplicar el script correspondiente en el gráfico requerido.

Por el momento, hay 3 secuencias de comandos de configuración:

El script proporciona una descripción de cada propiedad por lo que no debería haber ningún problema en averiguar cómo se establecen.

La implementación de esta característica se basa en el uso de variables globales del terminal para almacenar la configuración. Esto impone algunas limitaciones en su uso - las líneas no puede pasar de esta manera ya que el tamaño máximo de información es limitado y es igual a la del tipo doble, es decir, 8 bytes.

A continuación se muestra un ejemplo de configuración de las propiedades de Asesor Experto. Los ajustes del comentario y del objeto de salida se cambian por un Asesor Experto ejecutandose:

Para poder probar libremente estrategias en el probador sin tener miedo de reajustar o cambiar los parámetros para el trading en línea, el parámetro diferente si se pasa por online o por modo de prueba. Ajustando en el los parámetros no afectará en el otro.

Por lo tanto, si desea cambiar los parámetros por defecto en el medidor, debe usar los scripts similares para el modo de prueba:

3.2. Funcionalidad

Por lo tanto, la interfaz está dividida en 3 zonas independientes que pueden ser desactivadas:

En su conjunto se ve así:


Echemos un vistazo más detallado a cada uno de ellos.

3.2.1. Panel de información

El panel de información es un área de visualización de la información. Esta es la parte más sencilla de la funcionalidad. Muestra información general de la cuenta o del instrumento así como la configuración actual de la librería.

Fig. 3. Panel de información

La información para su presentación se puede ampliar fácilmente pero sin embargo requieren modificaciones de código de la librería.

Si no está sorpredido, la funcionalidad está representada por las siguientes funciones: void ClearInformation() y void DrawInformation()

3.2.2. Panel de ordenes

Este panel muestra información sobre órdenes actuales (abiertas) de los instrumento y contiene controles para manipularlos.

Fig 4. Panel de ordenes

Qué puede hacer habilitando este panel:

El siguiente video ofrece una demostración gráfica de la funcionalidad de este panel:

3.2.3. Panel de Trading

Este panel se utiliza para mostrar la funcionalidad de trading. Es el grupo más importante y necesario ya que contiene la funcionalidad principal de la librería. Conseguir este panel activo te da la oportunidad de hacer pedidos y manejar a través de algunos controles directamente en el gráfico.


Fig. 5. Panel de Trading

Qué puede hacer habilitando este panel:

Las órdenes de mercado se colocan como sigue:

Una orden de mercado se cierra simplemente arrastrando cualquiera de los niveles de stop al otro lado del precio.

El video de abajo muestra ejemplos de órdenes de mercado

Manejo de órdenes de compra:




Manejo de órdenes de venta:




Órdenes pendientes se colocan como sigue:

Una orden pendiente es cerrada simplemente arrastrando la línea de orden al otro lado del precio.

El video de abajo muestra ejemplos de manejo de órdenes pendientes.

Manejo de órdenes de stop:




Manejo de órdenes de límite:



4. Integración en el Asesor Experto

Y por último, la parte más interesante.

De hecho es muy simple. El proceso de integración se simplifica considerablemente debido a que sólo el mínimo necesario de configuración se pasa a la librería durante la integración; los valores restantes están cubiertos por scripts externos.

El ejemplo más simple de un Asesor Experto se puede demostrar envolviendo en un caparazón a la librería dentro del EA. Aparecerá como sigue:

//+------------------------------------------------------------------+
//|                                      DragTrade_Example_v_1.0.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, TheXpert"
#property link      "theforexpert@gmail.com"

extern int      Magic          = 1111;
extern int      EAMagic        = 1234;
extern int      TimesToRepeat  = 3;
extern int      Slippage       = 3;

#include <DragTrade_v_1.0/DragTradeLib_v_1.0.mqh>

bool Testing;

int init()
{
   Testing = IsTesting();
   DragTrade_Init(Magic, EAMagic, TimesToRepeat, Slippage, "Drag Trade Example");

   Comment_("Prueba ejemplo de uso de librería de trazado de trade");

   return(0);
}

int deinit()
{
   DragTrade_Deinit();
   return(0);
}

int start()
{
   DragTrade_Start();
   
   return(0);
}

El código anterior puede ser aplicado como una lista para usar el EA en el trade con el ratón.

Los eventos en este código se tratan con cada nuevo tick.

Los puntos de integración principal de la librería:

  1. DragTrade_Init
  2. DragTrade_Deinit
  3. DragTrade_Start

The DragTrade_Init la función es la siguiente:

   void DragTrade_Init(int magic, int eaMagic, int timesToRepeat, int slippage, string ordersComment = "");

Vamos a tener una vista detallada de los parámetros que deben pasarse:

Si desea una rápida ejecución de comandos, función Inicio del EA se puede colocar:

int start()
{
   while (!IsStopped())
   {
      DragTrade_Start();
      Sleep(200);
   }
   return(0);
}

Sin embargo será imposible probar el EA en el probador - se congelará.

Puede encontrar una solución haciendo una provisión para un comportamiento diferente del probador:

int start()
{
   if (Testing)
   {
      DragTrade_Start();
   }
   else
   {
      while (!IsStopped())
      {
         RefreshRates();
         
         DragTrade_Start();
         Sleep(200);
      }
   }
   
   return(0);
}

El paquete estándar que se adjunta al artículo contiene este particular EA más simple.

Además, el paquete incluye un asesor experto estandar MACD muestra que cuenta con la librería integrada y la librería de funciones de trading.

Aparte de las funciones necesarias para la integración, el archivo DragTradeLib_v_1.0.mqh proporciona un conjunto de funciones que pueden ser útiles en la implementación de estrategias que se utilizan en la librería y pueden utilizarse para implementar el código de comercio.


5. Instalación de la librería

La instalación es simple: necesitas descomprimir el archivo adjunto en la carpeta terminal, reiniciar el terminal si estaba trabajando, para que los archivos ejecutables aparezcan en la lista de ficheros disponibles en el terminal.


6. Licencia de

/* =============================================================================================== */
/* Copyright (c) 2010 Andrey Nikolaevich Trukhanovich (aka TheXpert)                               */
/*                                                                                                 */
/* Por la presente se autoriza, de forma gratuita, a cualquier persona obtener una copia de este   */
/* software y archivos de documentación (el "Software")                                            */
/* en el Software sin restricción, incluyendo sin limitación los derechos                          */
/* para utilizar, copiar, modificar, fusionar, publicar, distribuir,                               */
/* sublicenciar, y/o vender copias del Software y permitir personas                                */
/* para que el Software está equipado para ello, conforme a las siguientes condiciones:            */
/*                                                                                                 */
/*                                                                                                 */
/* El aviso de copyright y este aviso de permiso serán incluidos                                   */
/*  en todas las copias o sustancial porciones del Software.                                       */
/*                                                                                                 */
/* ESTE SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA                   */
/* O IMPLÍCITA, INCLUYENDO PERO NO LIMITADAS A, LAS GARANTÍAS DE COMERCIABILIDAD,                  */
/* APTITUD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO, LOS AUTORES O             */
/* LOS TITULARES DEL COPYRIGHT SERÁN RESPONSABLES DE CUALQUIER RECLAMACIÓN, DAÑOS U OTROS          */
/* RESPONSABILIDADES, YA SEA EN UNA ACCIÓN DE RESPONSABILIDAD CONTRACTUAL,                         */
/* EXTRACONTRACTUAL O DE OTRO TIPO, QUE SE PRESENTA, DE O                                          */
/* EN RELACIÓN CON EL SOFTWARE O EL USO DE OTRAS RELACIONES EN EL SOFTWARE.                        */
/* =============================================================================================== */

Conclusión

La librería fue probada mientras trabajaba con una cuenta real y demostró ser una herramienta útil, fiable y estable.

Una vez más, quisiera expresar mi profundo agradecimiento a Viktor Khabibulaevich Rustamov. Fue el creador de la idea de crear la librería, así como un tester y una fuente valiosa de asesoramiento en la implementación de la idea.

Hay un buen montón de código con tantos pequeños errores y fallos que están muy probablemente presentes. Realmente apreciaría si usted me lo hace saber.

Y voy a tratar de hacer el mantenimiento de código (no garantizado) factible. Otros progresos del proyecto en los términos de la licencia por otras personas tendrán todo mi apoyo. Todos los comentarios y sugerencias con respecto a la librería se tendrán en cuenta en la medida posibles en futuras versiones.

¡Que tengan un trade fácil y buena suerte!