Sunday, November 20, 2016

Estrategias

Introducción A menudo necesitamos crear algoritmos que deberían llevarse bien, es decir, la operación de un algoritmo no debe ser influenciada por el algoritmo. Las acciones de otros algoritmos realizados al mismo tiempo. Esta situación se produce cuando es necesario combinar varios algoritmos en un módulo ejecutable ex5. A pesar de su aparente simplicidad, estas tareas tienen algunas trampas significativas características algorítmicas que deben ser considerados al construir el motor de las estrategias comerciales. El motor de comercio de CStrategy incluye un conjunto de algoritmos que implementan la cooperación de dos y más estrategias de negociación. Los analizaremos en detalle en la cuarta parte de esta serie. También crearemos un perfil de negociación de un grupo de Expertos Asesores que operen simultáneamente con el fin de diversificar los riesgos comerciales. La clase CStrategyList un contenedor de estrategias de tipo CStrategy pertenece a los algoritmos que proporcionan la operación simultánea de estrategias. La clase permite cargar la presentación basada en XML de las estrategias, así como crearlas dinámicamente utilizando el método correspondiente una fábrica de estrategias. El vídeo adjunto demuestra el proceso de probar múltiples estrategias en el MetaTrader 5 Strategy Tester. Todas las estrategias basadas en el motor de comercio descrito tienen un panel personalizado predeterminado, que le ayuda a controlar fácilmente estrategias separadas directamente del gráfico. CStrategyList Strategy Manager El segundo artículo de la serie Universal Expert Advisor describió la clase CStrategy y sus módulos principales. Mediante el uso de esta clase y su funcionalidad implementada en los módulos, cada estrategia heredada mantiene una lógica de negociación unificada. Sin embargo, organizar un proceso comercial usando robots es algo más que una mera ejecución de peticiones comerciales. Es importante asegurar su cooperación, incluyendo la operación de varios algoritmos en un módulo ejecutable ex5. La clase CStrategyList especial se utiliza para este propósito en particular. Como se puede adivinar a partir de su nombre, esta clase proporciona una lista de estrategias de tipo CStrategy, pero su operación es algo más complicada que la operación de un contenedor de datos habitual. El módulo resuelve las siguientes tareas: asegurar el funcionamiento simultáneo de varias estrategias de negociación entregando eventos comerciales a cada instancia de estrategia creando objetos de estrategia a partir de la lista de estrategias unificadas de interacción de estrategias (deserialización de datos) con el panel personalizado utilizado para la configuración de EA. Aquí está el encabezado de la clase CStrategyList: Como puede ver, la mayoría de los métodos presentados son manejadores de eventos comerciales. Tienen contenidos del mismo tipo. Vamos a analizar uno de ellos, OnBookEvent: Como se ve desde el contenido de la clase, busca estrategias de CStrategy en la lista y llama a un evento apropiado en cada una de las estrategias. El funcionamiento de otros métodos de eventos es similar. Además de pasar de eventos, CStrategyList lleva a cabo procedimientos especiales que cargan estrategias desde el archivo XML. Para obtener más información sobre cómo funciona, lea la siguiente sección. Estrategias de carga desde una lista XML. Un portafolio de estrategias Si un módulo ejecutable ex5 contiene varios algoritmos de negociación, necesitamos herramientas para generar un portafolio de estrategias. Supongamos que dos algoritmos con diferentes parámetros intercambian en un módulo ejecutable. Cómo configurar estos parámetros Lo más sencillo es emitir los parámetros de cada estrategia en la ventana de propiedades de EA. Pero qué hacer cuando se utilizan muchas estrategias, cada una de las cuales tiene muchos parámetros En este caso, la lista de parámetros con diferentes modificadores, banderas, cadenas y comentarios sería enorme. Eso es lo que la ventana de parámetros de un asesor experto comercial de tres estrategias se vería así: Fig. 1. La lista de parámetros de la EA comercial de tres estrategias Un asesor experto puede utilizar aún más estrategias. En este caso, la lista de parámetros podría tener un tamaño inimaginable. El segundo aspecto importante del comercio de cartera es la creación de estrategias sobre el flujo. Supongamos que queremos ejecutar la misma estrategia con dos conjuntos diferentes de parámetros. Qué debemos hacer Obviamente, a pesar de los diferentes conjuntos de parámetros, estas dos estrategias son una y la misma estrategia, aunque con diferentes configuraciones. En lugar de crear cada una de las estrategias manualmente, podemos confiar esta tarea a una clase separada. La clase puede crear automáticamente un objeto de estrategia y configurarlo correctamente. Antes de crear una estrategia sobre el flujo, es necesario proporcionar su descripción completa. La descripción debe contener los siguientes detalles: el nombre de la estrategia un ID de estrategia único o su número mágico el símbolo de la estrategia que se está ejecutando en el marco de trabajo de la estrategia una lista de parámetros únicos de estrategias (una lista individual para cada estrategia). La descripción de la estrategia puede contener otras propiedades además de la lista anterior. La mejor manera de proporcionar esta descripción es usar XML. El lenguaje se ha creado como una herramienta de descripción especial. Permite describir convenientemente objetos complejos, de modo que un objeto como una estrategia de negociación puede convertirse en un documento XML de texto y un documento de texto puede convertirse en una estrategia. Por ejemplo, basado en un documento XML, el motor de negociación puede crear una estrategia y configurar correctamente sus parámetros. Para trabajar con este tipo de documentos directamente desde MQL5, debemos usar una biblioteca especial de XML-Parser disponible en la base de código. A continuación se muestra un ejemplo de la descripción XML de un portafolio que carga tres estrategias de MovingAverage con diferentes parámetros: Cada una de las estrategias forma la unidad ltStrategygt. Los siguientes atributos se especifican en ella: Símbolo, Tiempo, Magic y StrategyName. A partir del ejemplo anterior, vemos que cada una de las tres estrategias tiene su propio símbolo, su número mágico y su calendario. Además de estos parámetros requeridos, otras propiedades de estrategia se especifican en la lista XML. Sección ltTradeStateStartgt especifica el modo de negociación en el momento del lanzamiento de la estrategia. La sección ltParamsgt contiene los parámetros de la estrategia. Al arrancar, el motor de negociación intentará cargar las estrategias de negociación desde el archivo XML anterior. Se carga y crea una estrategia basada en este documento en la clase CStrategyList en su método LoadStrategiesFromXML. A continuación se presentan los contenidos de este método, así como de todos los métodos relacionados: La parte más interesante de los métodos es la creación de una estrategia utilizando el método estático especial CStrategy :: GetStrategy. El nombre de la estrategia debe pasarle como parámetro. El método devuelve una instancia particular de la estrategia asociada con este nombre. El método se ha hecho estático para permitir el acceso a él antes de que se cree un objeto de estrategia. GetStrategy se escribe en un archivo de encabezado separado, ya que a diferencia de otras partes del motor de comercio, tendrá que editarlo de vez en cuando añadiendo nuevas estrategias. Si desea que su estrategia se cargue desde XML, su procedimiento de creación se debe agregar directamente a este método. El código fuente de este archivo de encabezado es el siguiente: Una vez creada la estrategia, se debe inicializar con los parámetros requeridos de la sección ltParamsgt. Dado que los parámetros de cada estrategia son únicos, no es posible inicializar estos parámetros a nivel del motor de negociación. En su lugar, la clase base de la estrategia puede llamar al método virtual ParseXmlParams. Si la estrategia luego anula este método y analiza correctamente la lista de parámetros como un nodo XML, podrá especificar los valores requeridos de sus propios parámetros. Por ejemplo, vea el método ParseXmlParams de la estrategia CMovingAverage que se basa en dos medias móviles (su algoritmo se describe en el primer capítulo de este artículo). Los detalles de esta estrategia se describen en el tercer artículo de la serie, que abarca el desarrollo de estrategias personalizadas. Utilizando el mecanismo de creación de estrategias a partir de un archivo, es posible configurar un conjunto de estrategias una vez, y luego cargarlo desde un archivo cada vez. Puede ir más lejos y escribir un algoritmo de auto-optimización que guarda los conjuntos de parámetros de sus mejores ejecuciones a un archivo XML. El motor de comercio leerá este archivo en el inicio y formará un conjunto de estrategias sobre su base. Gestión de estrategias mediante un panel personalizado Desde el punto de vista del usuario, las estrategias pueden controlarse convenientemente mediante un panel personalizado especial. Este panel se mostraría en un gráfico después del lanzamiento de EA y permitiría realizar operaciones sencillas con cada uno de los algoritmos de negociación: cambiar el modo de negociación de estrategia comprando o vendiendo el volumen requerido en lugar de la estrategia. Esta última opción es útil si EA ha fallado en ejecutar la acción apropiada por alguna razón, y necesita sincronizar su estado con la situación actual del mercado. Descripción de las clases que crean paneles personalizados y cuadros de diálogo está más allá del alcance del tema discutido, y requiere un artículo por separado. Sólo describiremos los aspectos básicos relacionados con la conexión del panel. El panel de control de Expert Advisor se implementa en una clase CPanel separada que incluye varios controles, como listas, botones y etiquetas de texto. Todas las clases para la creación de gui están disponibles en ltdatafoldergtMQL5IncludePanel. Para asegurar el funcionamiento del panel, es necesario manejar el evento OnChartEvent directamente en el archivo mq5 de EAs. El controlador de eventos de gráfico se encuentra en la clase CStrategyList, por lo que es suficiente para llamar a este controlador en OnChartEvent: El controlador de estos eventos en CStrategyList los envía directamente al panel. Al hacer clic en cualquier botón del panel, define la acción que se va a realizar y la realiza. Por ejemplo, si seleccionamos una estrategia de la lista de estrategias, el índice de la estrategia actual será igual al seleccionado y, a continuación, podrá realizar más acciones comerciales. Por ejemplo, puede cambiar el modo de negociación de la estrategia elegida seleccionando la opción apropiada en la lista desplegable de los modos de estrategia: Fig. 2. La lista de modos de una estrategia seleccionada La compra y venta en nombre de la estrategia seleccionada se realiza de la misma manera. Un puntero a la estrategia llama a los métodos de compra y venta de la clase base de CStrategy. Estos métodos de comprar y vender el volumen pasado en ellos. En este caso, el número mágico en las operaciones realizadas corresponde al número mágico de la estrategia, por lo que es imposible distinguir el comercio manual de las acciones de EA. Cabe señalar que la lógica de comercio EA se implementa de manera que todas las posiciones abiertas por un usuario son mantenidas por este Asesor Experto en el modo normal. Maneja tales posiciones como sus propias posiciones abiertas automáticamente. Asesores expertos que negocian en un grupo Podemos montar una lista de estrategias comerciales. Las estrategias deben contener métodos responsables del análisis de parámetros XML, es decir, necesitamos anular el método ParseXmlParams. También es necesario agregar la creación del tipo apropiado de estrategia al método CStrategy :: GetStrategy. Finalmente, necesitaremos crear un archivo XML con una lista de estrategias y sus parámetros. Después de eso, la clase CStrategyList creará instancias de estrategias y las añadirá a su lista de estrategias. El panel personalizado mostrará estas estrategias después de eso. Creemos una cartera de estrategias consistentes en los Asesores Expertos descritos anteriormente. En las secciones 3.5 y 4.3 se encuentran ejemplos de análisis de parámetros XML para las estrategias CMovingAverage y CChannel. El contenido de CStrategy :: GetStrategy para la creación de las dos estrategias será el siguiente: El último toque es anular el método responsable del nombre completo de EAs. Realice la sustitución para la estrategia CMovingAverage: Ahora todo está listo para crear una cartera de estrategias. Nuestra cartera incluirá cuatro sistemas de negociación. Cada uno de ellos comercializará su propio símbolo. Dos estrategias se basarán en MovingAverage, y otras dos usarán BollingerBands. Una descripción más detallada de estas estrategias está disponible en el artículo anterior: Asesor Experto Universal: Estrategias Personalizadas y Clases Comerciales Auxiliares (parte 3). Nuestra cartera XML será la siguiente: Este archivo debe guardarse una carpeta de datos común de la plataforma MetaTrader como Strategies. xml. Aquí está el código fuente del módulo mq5 que crea un Asesor experto: Las variables personalizadas StrategiesXMLFile y LoadOnlyCurrentSymbol se definen en la clase CStrategyList. Se usan dentro de esta clase para especificar la lista de estrategias a cargar y el modo que permite cargar solamente las estrategias con el símbolo igual al nombre del instrumento en el que se está ejecutando el Asesor experto. También tenga en cuenta que algunos eventos, como OnBookEvent y OnTimer, no se utilizan. Esto significa que no se utilizarán en estrategias personalizadas. La compilación debe tener éxito. Después de que el asesor experto (denominado Agent. ex5 en el proyecto) está listo para su uso. Intentemos ejecutarlo en el gráfico. Antes de eso, debemos asegurarnos de que todos los símbolos usados ​​estén disponibles en el MetaTrader Market Watch. Después de iniciar con éxito, aparecerá el icono de Expert Advisor en la esquina superior derecha del gráfico. Se agrega otro botón a la esquina superior izquierda del gráfico que maximiza el panel personalizado. Si seleccionamos la lista de EA (denominada Agente) en el panel, se abrirá una lista de cuatro Asesores Expertos: Fig. 3. Lista de asesores expertos cargados La captura de pantalla incluye la lista de asesores expertos formados por nuestro archivo XML Strategies. xml. Después de un tiempo, las estrategias comenzarán a negociar cada estrategia en su símbolo individual. Analizando la Operación del Asesor Experto en el Probador de Estrategia Después de haber generado una cartera de estrategias, podemos probarla en el Probador de Estrategia para asegurarnos de que funciona correctamente. No se requiere ninguna acción específica adicional, ya que la lista de estrategias XML se encuentra en la carpeta de datos global, accesible a través del probador de estrategias. Después de lanzar el módulo Agent. ex5 EA en él, todos los símbolos requeridos se cargarán automáticamente. Cada Asesor Experto llevará a cabo operaciones comerciales siguiendo sus reglas comerciales individuales y, además, elaborará su propio conjunto de indicadores. El siguiente video muestra la prueba de un portafolio de estrategias en cuatro instrumentos diferentes: La simulación de estrategias basadas en CStrategy en el Strategy Tester es similar al comercio en tiempo real usando estas estrategias. La opción de prueba visual le permite comprobar fácilmente la exactitud de las entradas y salidas de las estrategias. Conclusión Hemos considerado algoritmos que permiten crear conjuntos aleatorios de estrategias comerciales. Con estos conjuntos o carteras de estrategias, puede escalar de forma flexible y eficiente el proceso de negociación, al mismo tiempo que gestiona varios algoritmos de negociación ubicados en el mismo módulo ejecutable. Los algoritmos son particularmente útiles para las estrategias que utilizan múltiples instrumentos de negociación simultáneamente. Utilizando el enfoque propuesto, la creación de algoritmos comerciales similares es tan fácil como el desarrollo de estrategias de negociación convencionales. Bienvenido Estrategias de Inversión Universal ofrece opciones de inversión de una a una y la educación a los inversores que buscan generar ingresos activos, pasivos y / o de jubilación. Con más de 25 años de experiencia combinada y miles de clientes satisfechos, Universal Investment Strategies se fundó en los principios de que vamos a caminar con ustedes lado a lado en cada paso del camino. Nos esforzamos por ayudar a nuestros clientes a desarrollar una sólida estrategia de negociación de opciones para que puedan tener éxito. Trabajaremos para mejorar su comprensión de Opciones, técnicas de comercio y disciplina. Permítanos ayudarle a convertirse en un operador de opciones eficaz Entendemos que el mercado financiero puede ser un lugar intimidante, especialmente si no está bien versado en la articulación financiera. Sin embargo, aquí en Universal Investment Strategies tomamos el miedo y el factor de intimidación fuera de los mercados como nuestro equipo de profesionales financieros caminar con usted lo que puede parecer un pasillo complicado de confusión financiera. Adaptamos nuestra plataforma educativa a cada cliente individual mientras enseñamos solamente lo que están interesados ​​en aprender. Hacemos que la educación comercial no sólo sea divertida, sino tan ventajosa como sea posible para que nuestros clientes reciban el máximo retorno de la inversión por su dinero, así como el tiempo invertido. Nuestros ClientesMetaTrader 5 - Ejemplos Universal Expert Advisor: Modelo de Evento y Prototipo de Estrategia de Negocio (Parte 2) Contenido Introducción El artículo contiene una descripción más detallada del motor de negociación universal CStrategy. En el primer artículo Universal Expert Advisor: Modos de Negociación de Estrategias (Parte 1). Hemos discutido detalladamente los modos comerciales y las funciones que permiten su implementación. Hemos analizado un sistema de Asesoramiento Experto universal que consta de cuatro métodos, dos de los cuales abren nuevas posiciones y los otros dos métodos los cierran. Diferentes combinaciones de llamadas de método definen un modo de negociación particular. Por ejemplo, un asesor experto sólo puede permitirse vender o comprar, puede gestionar posiciones previamente abiertas o esperar. Utilizando estos modos, una operación de asesor experto se puede configurar de forma flexible en función del tiempo de negociación o el día de la semana. Sin embargo, los modos comerciales no son lo único que un asesor experto puede necesitar. En la segunda parte discutiremos el modelo de eventos del modo de negociación de CStrategy basado en el manejo centralizado de eventos. El esquema de manejo de eventos propuesto difiere de los eventos del sistema en que todos los eventos se reúnen en un lugar. Las ventajas de tal implementación serán consideradas más adelante. Además, este artículo describe dos clases importantes del motor de comercio CStrategy y CPosition. El primero es el núcleo de toda la lógica de comercio EA, que une eventos y modos en un único marco flexible que el EA personalizado hereda directamente. La segunda clase es la base de las operaciones comerciales universales. Contiene acciones aplicadas a una posición abierta (como cierre de una posición o modificación de su Stop Loss o Take Profit). Esto permite formalizar todas las acciones comerciales y hacerlas independientes de la plataforma. Tenga en cuenta que todas las características específicas de trabajar con el motor, que tendrá que cumplir, se crean en última instancia para su beneficio. Por ejemplo, la búsqueda habitual mediante posiciones y acceso a eventos del sistema no están disponibles para la estrategia. Por lo tanto, no hay necesidad de preocuparse por la secuencia de acciones y sobre qué manejador utilizar para manejar el evento. En su lugar, CStrategy ofrece una EA personalizada para centrarse en su lógica de negociación mediante la realización de estas y muchas otras operaciones. Motores comerciales similares a los descritos están diseñados para usuarios comunes que les permite utilizar fácilmente la funcionalidad deseada. No es necesario analizar los detalles de los algoritmos descritos. Sólo debe comprender los principios generales y la funcionalidad de CStrategy. Por lo tanto, si encuentra algunas partes del artículo difícil de entender, no dude en saltarse. Modelo de evento basado en el procesamiento centralizado, ENUMMARKETEVENTTYPE MetaTrader 5 proporciona una gran cantidad de eventos. Estos eventos incluyen notificaciones de cambios en el precio del mercado (NewTick. BookEvent) y eventos del sistema como Timer o TradeTransaction. Una función de sistema del mismo nombre con el prefijo On está disponible para cada evento. Esta función es el controlador de este evento. Por ejemplo, si desea manejar la llegada de una nueva marca, agregue un conjunto apropiado de procedimientos a la función OnTick: Cuando Ocurre OnBookEvent, otra unidad del código que maneja los cambios en los precios de la lista de pedidos (Depth of Market) debe ser Llamado: Con este enfoque, los eventos más son manejados por nuestro asesor experto, más se fragmenta su lógica se convierte. Las condiciones para abrir y cerrar la posición se pueden separar en diferentes unidades. Desde el punto de vista de la programación eficiente, la separación en diferentes unidades puede ser una buena solución, pero este enfoque es indeseable en nuestro caso. Por el contrario, una mejor solución es reunir la lógica de negociación en un lugar especialmente asignado. Además, algunos eventos no son compatibles con MetaTrader 5. En este caso, el Asesor experto debe detectar la aparición de condiciones por sí mismo. Por ejemplo, MetaTrader 5 no tiene ningún evento que maneja la apertura de una nueva barra. Mientras tanto, es el cheque más comúnmente utilizado realizado por expertos asesores. Por lo tanto, el modelo de evento del motor de comercio descrito soporta no sólo los eventos del sistema, sino también los eventos personalizados (que no deben confundirse con los eventos de usuario en el gráfico), lo que facilita enormemente el desarrollo de expertos asesores. Por ejemplo, uno de estos eventos es la creación de una nueva barra en el gráfico. Para entender el modelo de evento propuesto, describamos los eventos relacionados con los cambios de precio o tiempo usando la enumeración especial ENUMMARKETEVENTTYPE: Como puede ver, la enumeración incluye la descripción de los eventos del sistema y el evento que no se admite directamente en MetaTrader 5 MARKETEVENTBAROPEN apertura de una nueva barra del símbolo de trabajo EAs). Supongamos que nuestro Asesor experto universal tiene cuatro métodos de lógica de negociación: InitBuy, InitSell, SupportBuy, SupportSell. Hemos descrito estos métodos en la primera parte del artículo Universal Expert Advisor. Si uno de los valores de enumeración se utiliza como parámetro en estos métodos, la lógica de procesamiento de EAs puede averiguar en cualquier momento el suceso, sobre la base del cual se ha llamado el método. Describamos un esquema simplificado del Asesor experto: Los eventos que indican cambios en los precios de mercado llaman a la misma función CallExpertMagic, a la que se pasa el evento actual como un parámetro. Esta función a su vez llama a los cuatro métodos de CExpert. Cuando se llama, cada uno de estos métodos imprime su nombre y el identificador del evento que provocó su llamada. Si ejecuta este Asesor experto en un gráfico, los registros apropiados que indican que se han procesado los identificadores de sucesos se mostrarán después de algún tiempo: Acceso a eventos que ocurren en otros instrumentos, la estructura MarketEvent Al diseñar un sistema de negociación que analiza varios símbolos, necesita Para crear un mecanismo que pueda rastrear cambios en los precios de múltiples instrumentos. Sin embargo, la función OnTick estándar sólo se llama para una nueva marca del instrumento en el que se está ejecutando el Asesor experto. Por otro lado, los desarrolladores de sistemas comerciales pueden utilizar la función OnBookEvent que responde a los cambios en el libro de pedidos (Depth of Market). A diferencia de OnTick. OnBookEvent se llama para cualquier cambio en el libro de pedidos del instrumento, al cual se suscribió utilizando la función MarketBookAdd. Los cambios en el libro de órdenes ocurren muy a menudo, por eso el monitoreo de este evento es un procedimiento que requiere muchos recursos. Por regla general, los cambios en el flujo de ticks del símbolo requerido son suficientes para los Asesores Expertos. Por otro lado, el evento del cambio en el libro de pedidos también incluye la llegada de un nuevo tick. Aparte de OnBookEvent. Puede configurar llamadas de OnTimer a intervalos especificados y analizar los cambios de precios de varios símbolos en esta función. Así que en las funciones del sistema que reaccionan a los eventos NewTick, BookEvent y Timer, puede agregar una llamada de algún módulo intermedio (lo llamará EventProcessor), que analizaría simultáneamente los cambios en los precios de varios instrumentos y generaría un evento apropiado. Cada evento tendría una descripción unificada en forma de estructura y sería enviado por los métodos de control de la estrategia. Habiendo recibido un evento apropiado como una estructura, la estrategia o reaccionaría a ella o la ignoraría. En este caso, la función del sistema que realmente inició el evento para el asesor experto final sería desconocida. De hecho, si un Asesor experto recibe una notificación de una nueva marca entrante, no importa si la información se recibe a través de OnTick. OnTimer o OnBookEvent. Lo único que importa es que hay una nueva marca para el símbolo especificado. Un controlador de eventos se puede utilizar para muchas estrategias. Por ejemplo, si cada estrategia se representa como una clase personalizada, se pueden almacenar varias instancias de estas clases en la lista especial de estrategias. En este caso, cualquier estrategia de la lista podrá recibir un nuevo evento generado por EventProcessor. El siguiente diagrama muestra cómo se generan y envían los eventos: Fig. 1. Diagrama de generación y envío de eventos Ahora consideremos la estructura real que se pasará a los Asesores Expertos como un evento. La estructura se llama MarketEvent. Su definición es la siguiente: Después de recibir una instancia de la estructura por referencia, el método que toma una decisión comercial será capaz de analizar y tomar la decisión correcta sobre la base de la siguiente información: el tipo de evento el período de tiempo de la tabla , En el que se ha producido el evento el nombre del instrumento, en el que se ha producido el evento Si el análisis del gráfico es inútil para un evento (por ejemplo, NewTick o Timer), el campo de período de la estructura MarketEvent siempre se rellena con el valor PERIODCURRENT . El evento de la nueva barra. Nuevos algoritmos de detección de garrapatas y barras Para seguir las nuevas señales y la formación de nuevas barras en varios instrumentos, necesitaremos escribir clases de módulos apropiadas para implementar esta tarea. Estos módulos son partes internas de la clase CStrategy y el usuario no interactúa directamente con ellos. El primer módulo a considerar es la clase CTickDetector. El código fuente de la clase está disponible a continuación: Su principal método utilizado es IsNewTick. Devuelve true si se ha recibido una nueva marca del símbolo supervisado. El instrumento financiero a supervisar se establece mediante el método Symbol. La clase CTickDetector se deriva de CObject. Por lo tanto, se puede agregar como un elemento de la colección CArrayObj. Eso es lo que necesitamos. Por ejemplo, podemos crear diez copias de CTickDetect, cada una de ellas supervisará su propio símbolo. Al hacer referencia consistentemente a la colección de clases del tipo CArrayObj, puede encontrar rápidamente el símbolo en el que se formó la nueva marca y, a continuación, generar el evento correspondiente que pasaría esta información a la colección de asesores expertos. Como ya se ha mencionado, además de las nuevas garrapatas, a menudo es necesario determinar la aparición de nuevas barras. Lo mejor es entregar esta tarea a la clase especial CBarDetector. Funciona de forma similar a CTickDetector. El método principal de CBarDetector es IsNewBar el método devuelve true, si hay una barra nueva del instrumento, cuyo nombre fue previamente especificado usando el método Symbol. Su código fuente es el siguiente: La clase CPositionMT5 la base del algoritmo independiente de la plataforma Ahora es el momento de analizar una de las clases más importantes que proporcionan la operación de los asesores expertos universales. Esta clase incluye métodos para trabajar con posiciones en MetaTrader 5. Desde un punto de vista técnico, es muy simple. Es una clase de contenedor que actúa como intermediario entre los Asesores Expertos y las funciones del sistema relacionadas con operaciones con posiciones en MetaTrader 5 PositionSelect y PositionGet. Sin embargo, implementa una importante función de la independencia de la plataforma de clases ofrecidas. Al analizar cuidadosamente todos los módulos descritos anteriormente, podemos concluir que no utilizan funciones específicas de una plataforma de negociación (MetaTrader 4 o MetaTrader 5). Esto es cierto porque las versiones modernas de MQL4 y MQL5 son, de hecho, un mismo lenguaje de programación con diferentes conjuntos de funciones. Los conjuntos específicos de funciones para las dos plataformas están relacionados principalmente con la gestión de posiciones comerciales. Naturalmente, todos los asesores expertos utilizan funciones de gestión de posición. Sin embargo, si en lugar de estas funciones, un Asesor Experto usara una sola interfaz abstracta en forma de una clase de posición, sería posible (por lo menos teóricamente) desarrollar un robot comercial que pudiera ser compilado para MetaTrader 4 y MetaTrader 5 sin Cualquier cambio en su código fuente. Todo lo que necesitamos hacer es desarrollar unas pocas clases alternativas que implementen el trabajo con las posiciones. Una clase usará las funciones de MetaTrader 4, la otra utilizará las funciones de MetaTrader 5. Sin embargo, ambas clases proporcionarán el mismo conjunto de métodos para el asesor experto final, proporcionando así independencia de la plataforma. En la práctica, sin embargo, el problema de la creación de un asesor experto independiente de la plataforma es algo más complicado y requiere un artículo aparte. Este sería un material bastante largo, por lo que no lo discutiremos en este artículo, será considerado en otras partes. El segundo argumento a favor de la clase especial que representa una posición abierta de la estrategia es que cada posición se maneja individualmente. El motor de negociación pasa a través de la lista de posiciones y pasa cada uno de ellos a la lógica de los asesores expertos. Por lo tanto, conseguimos la máxima flexibilidad: el Asesor Experto administra cada posición individualmente y por lo tanto es posible describir reglas para estrategias que gestionan más de una posición de negociación. Por supuesto, sólo puede tener una posición en MetaTrader 5. Pero si llevamos el motor de negociación a la plataforma MetaTrader 4, estas características se vuelven muy importantes. Aquí está el código fuente de esta clase. Es simple y directo: Como puede ver, la tarea principal de la clase es devolver una propiedad particular de las posiciones abiertas. Además, la clase proporciona varios métodos para administrar la posición actual: cierre, cambio de su toma de ganancia y pérdida de parada. Estrategia de Negocio Prototipo de la Clase CStrategy Hemos considerado una serie de módulos que realizan tareas comunes. También hemos analizado el modelo de eventos, el modelo de toma de decisiones y el algoritmo de acción de un asesor experto típico. Ahora necesitamos combinar la información en un solo módulo de Expert Advisors de la clase CStrategy. Es realizar varias tareas. Éstos son algunos de ellos: Arreglar una sola secuencia de acciones comerciales para todas las estrategias que se basan en CStrategy. Identificar los eventos Timer, NewTick, BookEvent, NewBar y pasarlos a una estrategia personalizada. Implementación de fácil acceso a las cotizaciones de símbolos basadas en el modelo MetaTrader 4. Gestión de los modos comerciales. Acceder a información sobre las posiciones abiertas y recibir estadísticas sobre ellas. CStrategy es una gran clase, por lo que no publicaremos su código fuente completo aquí. En su lugar, nos centraremos en los algoritmos más importantes de la clase. Lo primero que consideraremos es su modelo de eventos. Ya conocemos este modelo. Ahora solo necesitamos considerar un proceso de recibir eventos y entregarlos a una determinada estrategia. CStrategy es una clase padre de nuestra futura estrategia. Por consiguiente, estamos familiarizados con sus métodos que notifican la recepción de eventos apropiados: Tenga en cuenta que todos los manejadores de eventos excepto OnTradeTransaction no son virtuales. Esto significa que Tick, Timer o BookEvent no se pueden manejar directamente al nivel de la estrategia. En su lugar, son manejados por CStrategy. El evento TradeTransaction no se utiliza en esta clase, por lo tanto, es virtual. A continuación se muestra el contenido de OnTick. OnTimer and OnBookEvent : As mentioned above, the NewTick system event only applies to the instrument, on which the current Expert Advisor is running. If we want NewTick to be a multiple-symbol event, we should use a special handler of new ticks and track the emergence of new bars. This task is delegated to appropriate closed methods: NewBarDetect and NewTickDetect. Below is their source code: The methods actually check detectors of new ticks and bars (the CTickDetector and CBarDetector classes described above). Each of these detectors is first configured for the financial instrument the Expert Advisor actually trades. If a new tick or bar appears, special CallSupport and CallInit methods are called, which then call trading methods of the specific strategy. The general algorithm of event handlers, including NewBarsDetect and NewTickDetect, is as follows: detecting the occurrence of a new event filling the MarketEvent structure with a specification of the appropriate event ID and its attributes calling the CallSupport method, which then calls the virtual SupportBuy and SupportSell with the event passed to the method similarly, calling the CallInit method, which then calls the virtual InitBuy and InitSell with the event passed to the method. To understand how the control is passed to a certain strategy, we need to consider the CallInit and CallSupport methods. Here is the source code of CallInit: The method receives the trading state from the mstate module (of the CTradeState class described in the first article ) and decides whether it is possible to call new position initialization methods for the given trading state. If the trading state prohibits trading, these methods are not called. Otherwise they are called with an indication of the event, which caused the call of CallInit the method. CallSupport works similarly, but its logic is somewhat different. Here is the source code: In a similar manner, the method receives the current trading state of the Expert Advisor. If it allows moving on to position management, the method will start to search through all currently open position. These positions are represented by the special CPosition class. Having received access to each position, the method compares its magic number with the magic number of the current Expert Advisor. Once a match is found, appropriate position management methods are called: SupportBuy for a long position and SupportSell for a short one. Conclusion We have examined all the main modules of the CStrategy class, through which it provides extensive functionality for a custom strategy. A strategy derived from this class can operate with price quotes and trade events. Also, the strategy gets a unified sequence of trading action inherited from the CStrategy class. In this case, the strategy can be developed as a separate module, which only describes trading operations and rules. This solution helps to significantly reduce the effort invested into the development of the trading algorithm. In the next article Universal Expert Advisor: Custom Strategies and Auxiliary Trade Classes (Part 3), we will discuss the process of strategy development based on the algorithms described. The Universal system was designed principally for use as a day trading / swing trading system for stock index futures and spot currency exchange (forex) markets. La matriz significativa de insumos que impulsan las reglas de generación de comercio para el sistema permite al usuario crear una estrategia de comercio específicamente diseñada que encajará bien con la mayoría de los estilos personales de comercio personal. En sólo unos pocos minutos puede adaptarse a este sistema de autoadaptación a su propio comercio efectivamente cualquier mercado en cualquier marco de tiempo de su elección. EURUSD - USDJPY - E Indice Mini Russel 2000 - GOOG - E Índice Mini SampP 1000 Gráfico ShareBar 12 tick Diagrama de barras 1597 Diagrama de 120 minutos Diagrama de 120 minutos O - Cualquier mercado / horario de su elección. El sistema universal es más efectivo cuando el sistema se optimiza selectivamente cuando es necesario utilizando TradeStations recién lanzado Walk-Forward Optimizer. En mi opinión este programa tiene el potencial de revolucionar totalmente las pruebas de estrategia y el comercio. Watch this section for more info on this revolutionary system In the meantime heres a link to an introductory video I did for TradeStation on February 28, 2012:Universal Trading Strategies utscorp newly set up in January this year in Bundall on the Gold Coast, they are selling sports betting investments and also forex trading software. About the Forex software: The software comes with strategies working well, we can run a particular strategy to see what we could have made. 100 guaranteed for huge profits. Regarding their sports trading. They able to make around some percent returns per week. Licenses are sold starting at low prices for one year and they also will take out nothing on any profit. They offer a trial with their own bucks. The website was only set up in January this year, so we have much faith in them. I tried calling the support number for Australia, they had the response (on a Sunday night) they answer the call. Ive seen a sample of their trading from my account. It was going along fine on modest 100 bets and i have massive profits when the bet size suddenly jumped to well over a thousand dollars. If you were to sign up for a license, there is a ten day cooling off period. While they will not take any money from you in the ten days, they also trade for you in the ten days for supply software. So it is simply giving you time to your purchase. You get to use the product in those ten days. Make sure as with any investment, the returns sound so good. Never underestimate the human capability to look for workarounds. many enterprising folks check up on the unfortunates who don constricting garments, commute to 9-to-5 jobs and passively settle for annual cost-of-living will increase whereas looking forward to retirement, and assume in fact, many such ways in which. However most of them involve beginning a business and outlay years looking at it grows whereas encountering setbacks and triumphs on the means. For the less-patient among us, that isnt enough. Higher to assume that youre outsmarting the lots whereas obtaining purchased the privilege. And few endeavors need as very little visible effort as day commerce will. More or less it appears. Thats why aspirants number legitimate skilled gamblers on the order of thousands to at least one. A similar goes for day trading is sort of the definition of gambling taking risky action within the hope of a desired result. Whether you trade frequently or you8217re a casual investor looking for low brokerage, utscorp. au makes it easy to trade online. The benefits of universal trading strategies with one of Australias fastest growing share trading platforms: Cost effective trades and accounts Trade online from as little as 14.95 No set up or account service fees. Enjoy a competitive cash rate on our High Interest Account. Convenient access to account information Check your utscorp cash holdings in utscorp Internet Banking. Transfer money between utscorp and your utscorp accounts in real time. View accounts like cash accounts, credit cards, and mortgages in utscorp. Check utscorp margin loan balances and Loan to Value Ratio (LVR) in utscorp. Expert advice and research at your fingertips Over 1,500 ASX research recommendations 8211 more than any other online broker. Exclusive investing insights and strategies from industry experts. Access to research from leading providers. For Further Information Kindly Visit - www. utscorp. au Recent Posts Recent Comments Archives Categories


No comments:

Post a Comment