Tuesday, November 15, 2016

Diseño De Una Aplicación Automatizada De Comercio En El Netbeans Rich Client Platform (Parte 1 )

Diseño de una aplicación automatizada de comercio en el Netbeans Rich Client Platform (Parte 1) La Zona DevOps es traído a usted en asociación con Librato. Echa un vistazo a whitepaper de Librato en Selección de una solución de monitorización de la nube. En los últimos 10 años las nuevas oportunidades se han abierto en las acciones, futuros y los mercados de divisas para permitir que los comerciantes minoristas la capacidad de producir sus propias estrategias de trading automatizado que una vez fue sólo el ámbito de los fondos de cobertura y bancos de inversión. Interactive Brokers fue una de las primeras firmas de corretaje para ofrecer una API de Java para sus clientes minoristas. Originalmente concebido como camino para los desarrolladores para aumentar Interactive Brokers Trader Workstation (TWS) aplicación de escritorio con características tales como la cartografía o el mantenimiento de registros, la API ha ganado popularidad como una manera de automatizar estrategias de negociación. En mi primera iteración de desarrollar una estrategia de negociación y el software para automatizar las operaciones que construí una aplicación de escritorio Java utilizando componentes Swing que monitorear las poblaciones a lo largo de los oficios del día y lugar en que se cumplen ciertos parámetros, y luego salir de los oficios en el cierre de la día de negociación. El software funcionó bien, y era adecuada para la estrategia que fue diseñado para el comercio, sin embargo, no era extensible y tratar de poner en práctica nuevas estrategias comerciales para automatizar, así como conectarse a diferentes cuentas de corretaje resultó difícil y engorroso. Además, existen restricciones en la cantidad de las existencias podrían ser controlados a través del feed de datos del corredor por lo que el software tenía que ser capaz de adaptarse en tiempo real los datos de mercado se alimenta de otras fuentes, además de fuente de datos del corredor. Me presentaron a la Netbeans Rich Client Platform (RCP) hace un par de años y han decidido recientemente iniciar portar mi aplicación a la plataforma debido a un gran número de ventajas que proporciona. El Netbeans RCP se basa en un principio de diseño modular que permite al desarrollador definir APIs abstractos para características y luego proporcionar módulos que pueden tener diferentes implementaciones de la API, lo que permite la aplicación para seleccionar en tiempo de ejecución que la aplicación a utilizar. No sólo se prevé un diseño más limpio por las preocupaciones que separan, pero mediante el uso de la API de búsqueda de Netbeans también desacopla la aplicación y sus diversos componentes entre sí. Hay muchas otras características que pueden ser aprovechados que incluye un sistema integrado de ventanas, editor de textos, explorador de archivos, barra de herramientas, mesa y componentes de la tabla del árbol, así la API de Acción (sólo para nombrar unos pocos). La aplicación de comercio hará uso del sistema de módulos RCP para definir APIs abstractas con las siguientes funcionalidades: Coloque y cancelar los pedidos de acciones, opciones, futuros, o divisas Proporcionar notificación de eventos cuando las órdenes se llenan Monitorear los saldos de efectivo en la cuenta Market Data API Suscríbete a Cotizaciones en tiempo real a cualquier símbolo ticker Suscríbete al Nivel 2 de datos (profundidad de mercado / fin-book) a cualquier símbolo ticker Histórico API de datos Solicitar datos de precios históricos para cualquier símbolo Trading API Estrategia Definir un conjunto de reglas para entrar y salir de los oficios Capacidad para utilizar cualquier corredor, los datos del mercado, y las implementaciones de la API de datos históricos con el fin de tomar decisiones comerciales. La aplicación principal para el Broker, datos de mercado y de los módulos de la API de datos históricos será la utilización de la API de Java Interactive Broker, pero otras implementaciones también puede ser creado como módulos Netbeans y luego importados en la aplicación de comercio, de manera que las estrategias comerciales pueden hacer uso de los datos del mercado de diferentes fuentes si es necesario. Nuevas estrategias de negociación pueden ser construidos como módulos Netbeans implementan la API de estrategia comercial, donde cada estrategia puede hacer uso de una de las implementaciones de los diversos datos y APIs corredor. Utilizando el API de búsqueda de Netbeans, las estrategias pueden consultar la plataforma para obtener una lista de todas las implementaciones de las API de corredores y datos de mercado que prevén la articulación flexible entre las API y que permite al usuario seleccionar la aplicación para utilizar en tiempo de ejecución. A continuación se muestra un diagrama que ilustra la organización de los diversos componentes de la API de la aplicación: En próximos posts voy a entrar en más detalles sobre cómo crear un plug-in de API para el Netbeans RCP, así como mostrar cómo crear una aplicación concreta de la API. En la ilustración de arriba el corredor abstracto, los datos del mercado, y las API de estrategia comercial se instalan en el RCP como plug-ins. La API corredor tiene una sola aplicación de Interactive Brokers en este punto en el tiempo. El API de datos de mercado tiene los plug-ins que proporcionan implementaciones para datos de mercado en tiempo real de Yahoo Finanzas, así como de Interactive Brokers datos de mercado en tiempo real. Por último, la API de estrategia comercial tiene 2 implementaciones en este ejemplo. La primera estrategia llamado "Límite Comprador" vigilará los precios de aproximadamente 800 acciones y orden limitada lugar para comprar cuando se cumplen ciertas condiciones. La segunda estrategia en el ejemplo anterior, el nombre AUD / NZD Estrategia moneda supervisará los tipos de cambio de los dólares de Australia y Nueva Zelanda y realizar pedidos de compra o venta cuando se cumplen ciertas condiciones. En este momento la aplicación es funcional y está utilizando Interactive Brokers como el corretaje principal, así como proveedor de datos de mercado. La estrategia comercial AUD / NZD activa se comercializa a través de la aplicación, aunque con una interfaz de usuario rudimentaria que está publicando mensajes a un área de texto dentro de la pestaña principal de la estrategia. La pantalla de abajo ilustra la aplicación Interactive Brokers "Trader Workstation", la aplicación grande negro (que es una aplicación de Java Swing), así como la aplicación de comercio automatizado Netbeans RCP que es la aplicación blanco pequeño, con la gran área de texto. En la siguiente captura de pantalla de la aplicación en la actualidad el seguimiento de los precios y la colocación de las operaciones para el dólar australiano, dólar de Nueva Zelanda, el dólar de Hong Kong y las divisas en yenes japoneses. Este blog es sólo una visión general de alto nivel sobre el diseño de una aplicación RCP con el comercio en los mercados financieros. Partes futuros en esta serie incluirán más información sobre cómo implementar las API abstractos y ponerlos a disposición de otras partes de la aplicación para utilizar a través de la API de Netbeans de búsqueda, así como trabajar con algunos de los componentes de Netbeans interfaz de usuario incluido en la plataforma, tales como fichas , árboles y tablas, que muestran lo fácil que es hacer que los mismos datos a través de estos puntos de vista diferentes que utilizan la API de Netbeans nodos. Además de esto me gustaría incorporar algunos componentes de JavaFX en la aplicación como los componentes gráficos que se pueden encontrar en la biblioteca central JavaFX que proporcionan una representación gráfica de algunos de los datos de las estrategias de seguimiento que será un poco más fácil de usar que el área grande de texto actual. La integración de los componentes de JavaFX dentro de la aplicación será documentado en un futuro post también. Puedes seguir mi comercio blog relacionado si desea ver los resultados comerciales reales de la aplicación como su ser refinado en:


No comments:

Post a Comment