Tuesday 17 October 2017

Jforex Api Wiki


JForex API JForex API proporciona la posibilidad de desarrollar aplicaciones de software personalizadas utilizando el lenguaje de programación Java. La biblioteca de cliente de API se puede vincular a sistemas de cliente. Se comunica directamente con los servidores comerciales de Dukascopy Bank a través de sesiones de Internet seguras y autenticadas. No es necesario ejecutar la plataforma JForex al mismo tiempo, pero la plataforma puede utilizarse para supervisar en tiempo real cualquier acción tomada por un sistema de clientes. Para comenzar a trabajar con el kit de desarrollo de software JForex (JForex SDK), descargue e importe en un entorno de desarrollo integrado de Java (IDE) de su elección: El SDK de JForex contiene ejemplos de: estrategia que se ejecuta con estrategia de datos en vivo back - Pruebas en modo visual La descripción general de JForex SDK describe cómo modificar y mejorar esos casos de uso. Para el desarrollo de la estrategia, comience con la visión general de la API de estrategia. Las últimas dependencias de JForex SDK siempre se pueden encontrar en el repositorio público de Dukascopy Maven. Lo que significa que uno puede configurar su proyecto para utilizar siempre la última versión de la API de JForex. Manténgase al día con nuestros últimos desarrollos de api de Jforex y suscríbase a los correos electrónicos automáticos de notas de la versión de Jforex API. Además, no olvide revisar nuestro foro de soporte de API donde se publican y discutieron todas las versiones de API de Jforex. Al estudiar la anatomía de una estrategia vacía de JForex (Parte 1 y Parte 2), es hora de diseccionar una de trabajo. MAPlay es la estrategia que se incluye con cada descarga de API de JForex como una demostración. Puede encontrar el código fuente completo de esta estrategia en / src / singlejartest / en el paquete comprimido de JForex API. Recuerde que el primer método de interfaz que se ejecuta al inicio de la estrategia es onStart. El método onStart de MAPlay se reproduce a continuación. El motor de las variables. Indicadores. Y la consola son campos de la clase MAPlay. Son variables globales dentro de la clase. ¿Qué líneas 42--44 hacer es guardar el IEngine. Indicadores. Y objetos de IConsole para uso posterior. La última línea de onStart, línea 45, es simplemente imprimir un mensaje en la consola del programa JForex para notificar al usuario que la estrategia ha comenzado. Una vez que onStart ha terminado de procesar, es probable que el servidor llame a onTick si llega una señal de mercado. Si no es durante las horas de mercado, entonces theres ninguna señal y algún otro evento podría suceder en lugar de onTick. Piense en los métodos como eventos más que en un proceso lineal. Programe su estrategia de JForex según lo que desee hacer con cada uno de los seis eventos de Interfaz IStrategy. Para esta estrategia en particular, el programador decide implementar su estrategia a nivel de tick. Como tal, gran parte del algoritmo de negociación reside en onTick para MAPlay. Tenga en cuenta que esta es una opción de diseño, puede utilizar onBar si desea que su estrategia para procesar a nivel de barra (o puede utilizar tanto onTick y onBar). Aquí está el código fuente de onTick en MAPlay. De un vistazo, puede observar que las variables ma0 y ma1 juegan un papel clave en la determinación de la configuración. Sugerencia: Para invertir la ingeniería de una estrategia, puede ser más fácil trabajar hacia atrás desde el momento en que se coloca el pedido, lo que es hecho por engine. submitOrder en este caso. Ma0 y ma1 tienen resultados de promedios móviles exponenciales (EMA). Ma0 es el valor actual. Ma1 es el valor de barras anterior. Líneas 56--63 compruebe utilizando las pruebas IF (líneas 56 y 60) para ver si alguna de las variables contiene datos no válidos. Si los datos no son válidos, se calcula el indicador y se omite el resto de la onTick con la declaración de retorno en la línea 62. Nota: A veces, los valores de indicador pueden ser inválidos (cero, negativo o doble. NaN dependiendo de la implementación del indicador concreto ) Si no hay datos suficientes para calcularlo o se ha producido un error, por ejemplo. Las EMA se obtienen en las líneas 57 y 59 utilizando el objeto IIndicators (que se inicializó en onStart). La JForex Wiki proporciona una explicación de su uso. Observe que ma1 es una matriz, que fue declarada en la línea 38 con un tamaño equivalente al número de todos los instrumentos JForex disponibles. En particular, se utiliza con un valor de índice especial como en ma1instrument. ordinal (). En otras palabras, está pidiendo la ranura de instrumentos actual en el array ma1. El instrumento actual es el que se pasa al método en la línea 55. Desplazando hacia abajo el código, otro punto de interés es la línea 65, mostrando el uso de instrument. getPipValue (). La línea 67 comprueba si el número total actual de posición es cero. Si lo es, es decir sin posición abierta, entonces la estrategia procede a comprobar la señal de entrada para entrar en un comercio (líneas 68 - 76). PositionsTotal () es un método personalizado definido en las líneas 84-92. Utiliza un bucle FOR para recorrer todas las órdenes obtenidas de engine. getOrders (instrumento) Una vez que se cumple la condición larga o corta, las líneas 68 y 72, respectivamente, la estrategia envía un orden en las líneas 69 para un corto y Línea 73 durante un largo. Los detalles de la presentación de órdenes de mercado se describe en el JForex Wiki. Cuando detiene esta estrategia, onStop (líneas 48--53) se llama. Para esta estrategia, el programador vuelve a recorrer todos los pedidos utilizando engine. getOrders () y cierra cada posición con un comando order. close () en la línea 50. Eso es para esta estrategia trivial. Si hay un punto que usted debe recordar. Tenga en cuenta mi uso de los muchos enlaces a JForex javadoc y JForex Wiki a lo largo de este post. Es probable que encuentre muchas de sus respuestas de esas dos fuentes. Si no, theres siempre el tablero de la ayuda de JForex. Ahora que has tenido una idea de cómo MAPlay. java funciona, es hora de probarlo. En el próximo post en enero, vamos a discutir el JForex Historical Tester y qué ver cuando se ejecuta una estrategia en vivo. Examinamos cuatro de los seis métodos de la Interfaz IStrategy en una publicación anterior. Los dos últimos métodos, onTick y onBar, es donde su estrategia de conectar con los datos del mercado. Uno o ambos de estos métodos es donde usted pone su algoritmo de negociación adentro. Su estrategia entonces podría procesar los datos del mercado mientras que llegan una señal / barra a la vez. Recuerde que IStrategy Interface es el esqueleto de su estrategia. Y ese objeto IContext es el corazón de su estrategia. OnTick / onBar es el jefe de su estrategia, que contiene su algoritmo comercial, que es el cerebro. OnTick Heres la definición del método de onTick. Importante: onTick se llama para cada uno de los instrumentos a los que se suscribe su plataforma JForex (la lista de instrumentos en su caja de espacio de trabajo). Permítanme decir que de nuevo, onTick se llama para cada instrumento que su plataforma JForex está suscrito. La práctica estándar es filtrar las garrapatas de los instrumentos que no desea con una simple declaración de devolución de IF. If (instrument myInstrument) return Los datos reales de tick se pasan a su estrategia usando el objeto ITick del parámetro onTick. Echa un vistazo a la entrada de jickead de ITick para ver lo que ofrece. OnBar onBar funciona de manera similar a onTick. En el cual se llama onBar para cada instrumento y periodo subsubvertidos conocidos por JForex. Del mismo modo, tiene que filtrar todos los instrumentos no deseados y períodos o de lo contrario se esperan resultados de su estrategia. Otro punto a tener en cuenta es que onBar proporciona tanto un IBar askBar como un IBar bidBar, representando las barras ask y bid. Pregunta: ¿Qué sucede cuando dos o más períodos se superponen como en las barras 13:45 1, 5 y 15 minutos están llegando al mismo tiempo (sin mencionar los períodos en segundos también). Respuesta: Según Dukascopy Soporte en el foro, Vienen en un orden estricto, por ejemplo (1min 1min 1min 1min 1min 5min 1min 1min 1min 1min 1min 5min.) Vienen en ciclos, donde los periodos más pequeños viene primero. Foro de soporte de JForex Al programar su estrategia con JForex, sin duda encontrará preguntas propias. El mejor lugar para preguntar es en el foro oficial de soporte de JForex. Este es el último de los tres recursos esenciales de JForex a los que aludí anteriormente. Incluso si usted no tiene ninguna pregunta específica, hay códigos de ejemplo, la discusión de codificación, y cientos de QampA existente de otros desarrolladores de JForex publicado en el foro. Resumen La discusión hasta ahora ha sido de muy alto nivel. Para mostrarle lo que realmente puede hacer en una IStrategy, disecaremos una estrategia de trabajo en el próximo post. Y qué más mejor examinar que la estrategia más popular de JForex de todos ellos - MAPlay. java. Continuando con la parte 1 de esta serie: Comenzando a aprender la programación de JForex. Ahora estaban listos para discutir lo real. Usted construye estrategias de JForex usando la interfaz de IStrategy (qué es una interfaz). Básicamente, una interfaz es un esqueleto de código con un conjunto de métodos vacíos predefinidos que necesitará implementar. Los seis métodos estándar de la Interfaz IStrategy son: A continuación se muestra una implementación de interfaz IStrategy vacía, también conocida como estrategia JForex. Este código compilará bien en JForex e incluso podrá ejecutarlo. Pero no hace nada en absoluto porque no hay código para ejecutar en cada uno de los métodos. Cada uno de los seis métodos sólo se llamará y salir inmediatamente. Cada uno de los métodos es activado por un evento específico. Usted puede probablemente adivinar lo que son de su nombre. OnStart (línea 5) Este es el primer método que se llama cuando se ejecuta su estrategia. Se ejecutará una vez y sólo una vez al comienzo de su estrategia. Normalmente usted hace su inicialización aquí. Lo que hay que tener en cuenta para onStart está en la línea 5 del código. La firma del método de onStart es El objeto en el parámetro y dado a usted en este método es un objeto IContext. Si IStrategy es el esqueleto, entonces IContext es el corazón de la estrategia. Por favor, eche un vistazo a este enlace javadoc a IContext para ver qué hace este objeto. Javadoc. Ahora es un buen momento para introducir el segundo de los tres recursos esenciales de un programador JForex. JForex Javadoc es la documentación de API más actualizada que explica cada objeto y todos los métodos de la API de JForex. Piense en ello como un manual de referencia. Tenga en cuenta que aunque su integral, la mayor parte de la explicación es muy escasa y posiblemente incompleta. IContext es un objeto principal de JForex para acceder a muchos componentes importantes del sistema JForex, como el motor de pedido, gráficos, consola, indicadores. Tienes la idea. Es importante que normalmente desee conservar una copia local, ya que es la única vez (en onStart) que este objeto se le pasará a IStrategy. OnStop (línea 26) Como su nombre sugiere, este método se llama una vez que envía un comando stop a su estrategia. Usted hace su programa de recapitulación como el registro y la descarga de datos aquí. No mucho fuera de lo común con este. OnMessage (línea 18) Mientras que sabemos cuando onStart y onStop serán llamados, onMessage es un método asíncrono en que no se sabe exactamente cuándo se ejecutará. Este método se llama cuando el servidor Dukascopy envía a su estrategia un mensaje. Por ejemplo, el servidor llama aMessage para hacerle saber que su pedido ha sido llenado. Recibe y procesa el mensaje del servidor accediendo al objeto IMessage que se le pasa a usted. Importante: No hay garantía de que recibirá todos y cada uno de los mensajes enviados a su estrategia desde el servidor. Tal vez su proceso de estrategia está obstruido. O tal vez su conexión a Internet tenía un hipo. Si su estrategia onMessage no se llama por el servidor por cualquier razón, el servidor no podría importar menos y no será la comprobación ni tratar de nuevo. Así que no haga nada crítico como administrar sus pedidos en onMessage onAccount (línea 22) Este método se llama cuando se recibe la actualización de su información de cuenta. El método proporciona acceso al objeto IAccount. Que utiliza para obtener la información de su cuenta. Decir si tiene una posición abierta, la información de su cuenta cambia en cada tick porque su capital es la ganancia / pérdida no realizada en efectivo. En ese caso, onAccount es llamado cada 5 segundos por el servidor como máximo para evitar inundar su estrategia. Más Importante: El objeto IAccount no está conectado en directo a su cuenta en el servidor. Es simplemente una instantánea de su cuenta. Por ejemplo, si guarda una copia local de un objeto IAccount. Hacer algunas operaciones para cambiar su saldo. Luego, solicite la misma cuenta de IA para la información del saldo de la cuenta, no verá ningún cambio. Como tal, siempre actualice su copia local de IAccount dentro del método onAccount para mantener la información de su cuenta actualizada para el uso de sus estrategias. Para continuar los métodos onStart, onStop, onMessage y onAccount son métodos administrativos para su estrategia. Los dos últimos métodos que bien discutir, onTick y onBar, es donde la magia ocurre en una estrategia. Estoy guardando el mejor para el último en el poste siguiente. El mayor problema que tuve al aprender a programar mis propias estrategias de negociación en JForex es encontrar dónde empezar a aprender. Había pocas documentación de JForex disponible en ese momento y tuve que aprender a través de minuciosos experimentos con la ayuda del soporte técnico de Dukascopys. Las cosas ciertamente han cambiado para mejor, como una comunidad de JForex está empezando a brotar y la documentación de que es por lo menos suficiente para conseguir que nadie comenzó. Este post es el primero de una serie de guías de principiantes rápidos para aprender la programación de JForex al poner todos estos recursos en un tutorial. JForex es una herramienta Java JForex no es en realidad un lenguaje de programación. Es una interfaz de programación de aplicaciones (API) para su uso con el lenguaje de programación Java estándar. Como tal, el primer paso para aprender a programar en JForex es aprender Java. Afortunadamente, Java es uno de los lenguajes de programación más populares. Así que hay un montón de recursos dentro y fuera de la web para aprender la programación Java. Algunos ejemplos de tutoriales en línea gratuitos son: Los Tutoriales de Java - Este es un tutorial oficial del desarrollador de Java ellos mismos. Muy recomendable. Principiantes Java Tutorial - Más orientado para los principiantes absolutos a la programación. Si prefieres un libro, recomiendo Head First Java, 2nd Edition. Me cepilló en mi Java de este libro. No te preocupes demasiado por Java, ya que solo necesitas saber lo básico para comenzar con JForex. Basta con leer algunos capítulos para entender la sintaxis de Java y luego seguir adelante. Siempre se puede volver a ellos más tarde. Buceo en JForex El JForex Wiki es uno de los tres recursos esenciales para los programadores de JForex. Me referiré a algunas páginas específicas del Wiki en gran parte de esta serie de mensajes. Si no lo ha hecho ya, regístrese para una cuenta DEMO en Dukascopy. A continuación, ejecute la plataforma JForex y siga las instrucciones de la página wiki Use in JForex para ensamblar su primera estrategia JForex. Resumen Hasta el momento, tan bueno Espero que pueda entender el código fuente básico de Java y saber cómo iniciar / abrir, compilar, Y ejecutar una estrategia de JForex. En el siguiente post de esta serie de JForex de aprendizaje, estudiaremos la anatomía de una estrategia de JForex. JForexUtils es una colección de herramientas fáciles de usar, robustas y útiles para trabajar con la API JForex de Dukascopy. El propósito de esta librería es evitar la incómoda codificación de la fraseología y una forma más fácil de trabajar la API. Heres una breve lista de lo que se puede hacer: Creación de orden, cambio y cierre de una manera simple y declarativa Creación / combinación de monedas e instrumentos de diferentes fuentes Conversión de cantidades de un instrumento a otro Ejecución de acciones y callables en el hilo de estrategia en una línea Compatibilidad con reconectar automáticamente para la API independiente Para todas las funciones y cómo ver la página principal de Wiki. JForexUtils se basa exclusivamente en Java 8, por lo que no es compatible con las versiones de Java lt 8 Actualmente, JForexUtils no está alojado en MavenCentral ni en ningún otro repositorio en línea (se realizará más adelante). Para usar la biblioteca en su proyecto, debe obtenerla de la página de publicaciones. Aquí encontrará dos versiones: el archivo JForexUtilsUberJar-.jar incluye todas las dependencias el archivo JForexUtils-.jar no tiene dependencias incluidas, exporta sus paquetes para que pueda usar el archivo en un entorno OSGI Bugs y Discusión

No comments:

Post a Comment