Sunday 26 November 2017

Forex Pitón Api


forex-pitón 0.3.0 Los tipos de cambio y conversión de divisas. Estado de divisas-pitón Construido (travis-ci. org/MicroPyramid/forex-python. svgbranchmaster) (travis-ci. org/MicroPyramid/forex-python) Estado de Cobertura (coveralls. io/repos/github/MicroPyramid/forex-python/ badge. svgbranchmaster) (coveralls. io/github/MicroPyramid/forex-pythonbranchmaster) Soporte Python (img. shields. io/badge/python-2.72C203.32C203.42C203.5-blue. svg) (pypi. python. org/ PyPI / divisas-python) licencia (img. shields. io/github/license/MicroPyramid/forex-python. svgmaxAge2592000) (pypi. python. org/pypi/forex-python) Código de la Salud (landscape. io/github/MicroPyramid/ forex-python / maestro / landscape. svgstyleplastic) (landscape. io/github/MicroPyramid/forex-python/master) Los tipos de cambio libres, bitcoin precios y conversión de divisas. Características: --------- - Lista de todos los tipos de cambio. - Precio de BitCoin para todos los curuncies. - La conversión de la cantidad de bitcoins. - Obtener las tasas históricas para cualquier día desde 1999. - Tipo de cambio para una moneda (ex USD a INR). - Convertir cantidad de una moneda a otra (USD 10 a INR).. - Símbolos de moneda. - Nombres de las monedas. Moneda Fuente: --------------- Fixer. io es una API libre para los tipos de cambio actuales e históricos publicados por el Banco Central Europeo. Las tarifas se actualizan CET 15:00 todos los días. BitCoin Precio Fuente: --------------------- precios Bitcoin calculan cada minuto. Con para más información, visite la API CoinDesk (www. coindesk / api /) Instalar usando el paquete python-pip instalar divisas Python o clonar directamente el repositorio: python setup. py instalar Inicializar gtgtgt pitón clase de forexpython. converter CurrencyRates importación gtgtgt c CurrencyRates get () tasa de conversión de USD a INR pitón gtgtgt c. getrate (USD, INR) 67.473 Convertir cantidad de USD a INR: pitón gtgtgt c. convert (USD, INR, 10) 674,73 Obtener el último precio de Bitcoin. gtgtgt pitón de forexpython. bitcoin gtgtgt BtcConverter importación b BtcConverter () gtgtgt b. getlatestprice (USD) 533.913 Convert La cantidad a bitcoins en base al último precio de intercambio. pitón gtgtgt b. converttobtc (400, USD) ,7492699301118473 Obtener símbolo de moneda utilizando código de moneda pitón gtgtgt de CurrencyCodes forexpython. converter CurrencyCodes importación gtgtgt c () print gtgtgt c. getsymbol (GBP) Agradecemos sus comentarios y apoyo. encontrado error plantear cuestión GitHub. Necesitan nuevas características Póngase en contacto con nosotros en micropyramid / contacto con nosotros / Aprender habilidades Quant Si usted es un comerciante o un inversor y desea adquirir una serie de habilidades cuantitativas de comercio, usted está en el lugar correcto. El curso de Comercio con Python le proporcionará las mejores herramientas y prácticas para la investigación de intercambio cuantitativa, incluidas las funciones y scripts escritos por los comerciantes expertos cuantitativos. El curso le da el máximo impacto por su tiempo y dinero invertido. Se centra en la aplicación práctica de la programación a negociación en lugar de la informática teórica. El curso se pagará por sí mismo rápidamente ahorrando tiempo en el procesamiento manual de los datos. Va a pasar más tiempo investigando su estrategia y ejecución de operaciones rentables. Resumen del curso Parte 1: Conceptos básicos Usted aprenderá por qué Python es una herramienta ideal para el comercio cuantitativo. Vamos a empezar por la creación de un entorno de desarrollo y luego se dará a conocer las bibliotecas científicas. Parte 2: Manejo de los datos de aprender cómo obtener datos de diversas fuentes gratuitas como Yahoo Finanzas, CBOE y otros sitios. Leer y escribir en varios formatos de datos, incluyendo archivos CSV y Excel. Parte 3: Investigando estrategias Aprende a calcular PL y métricas de rendimiento que se acompañan como Sharpe y Disposición. Construir una estrategia de negociación y optimizar su rendimiento. Múltiples ejemplos de estrategias se discuten en esta parte. Parte 4: La emisión en directo Esta parte se centra alrededor de la API de Interactive Brokers. Usted aprenderá cómo obtener datos en tiempo real de valores y realizar pedidos en directo. Las porciones de código de ejemplo El material del curso consta de cuadernos que contienen texto junto con el código interactivo como éste. Usted será capaz de aprender mediante la interacción con el código y modificarlo a su gusto. Va a ser un gran punto de partida para escribir sus propias estrategias Mientras que algunos temas se explican en gran detalle para ayudarle a entender los conceptos subyacentes, en la mayoría de los casos usted incluso no necesita escribir su propio código de bajo nivel, debido al apoyo por existir abierta bibliotecas - source. biblioteca TradingWithPython combina muchas de las funciones discutido en este curso como funciones listas para su uso y se utilizará durante todo el curso. Pandas le proporcionará toda la energía necesaria trabajo pesado en el crujido de datos. Todo el código se proporciona bajo la licencia BSD, que permite su uso en aplicaciones comerciales Curso rating Un piloto del curso se llevó a cabo en la primavera de 2013, esto es lo que los estudiantes llegaron a decir: Matej curso bien diseñado y un buen entrenador. Definitivamente vale la pena su precio y el tiempo de Lave Jev obviamente sabía lo suyo. profundidad de la cobertura era perfecto. Si Jev se ejecuta nada como esto otra vez, la enfermedad sea el primero en inscribirse. John Phillips Su curso realmente me saltar comenzado a considerar pitón para el sistema de archivo de API analysis. OANDA Trading Utilidades en Python Programas de ejemplo de negociación con la API de OANDA través Python2.7 Este repo contiene un programa comercial que realiza operaciones cuando transversales WMA y SMA. También hay un archivo que contiene algunas funciones muy simples que abrirán un comercio o una orden, respectivamente. Clonar este repo a la ubicación de su elección Modificar api-order. py para hacer lo que desea, o simplemente correr api-trade-averages. py usando Python2.7 Para ejecutar la secuencia de comandos especifique el número de velas sobre el que se calcula la WMA y SMA, la granularidad de la vela, el instrumento y su ID de cuenta. Este script utiliza el entorno de pruebas, por lo que por favor utilice Sandbox accountId. pitón api-trade-averages. py 10 S5 EURUSD Este programa está destinado a demostrar la funcionalidad de la API de OANDA y no se piensa como consejo de inversión o una solución para comprar o vender cualquier inversión product. Forex Trading Diario 1 - Automatizado de Forex Trading con la API de OANDA por Michael Salas-Moore el 21 de enero 2015 he mencionado anteriormente en el QuantStart: en 2014 Artículo de revisión que iba a pasar algo de 2015 escribiendo sobre el mercado de forex automatizado. Ya que yo mismo suelo llevar a cabo investigaciones en los mercados de valores y de futuros, pensé que sería divertido (y educativo) para escribir sobre mis experiencias de entrar en el mercado de divisas en el estilo de un diario. Cada entrada del diario intentará construir sobre todo los de antes, sino que también debe ser relativamente autónomo. En esta primera entrada del diario La enfermedad esté describiendo cómo configurar una nueva cuenta de práctica de corretaje con OANDA, así como la forma de crear un motor de comercio orientado a eventos multiproceso básica que puede ejecutar de forma automática las operaciones tanto en una práctica y entorno en vivo. El año pasado pasamos mucho tiempo mirando el backtester por eventos. principalmente para las acciones y ETFs. El que les presento a continuación se orienta hacia la divisa y se puede utilizar ya sea para el comercio de papel o el comercio directo. He escrito todas las siguientes instrucciones para Ubuntu 14.04, pero se debería traducir fácilmente a Windows o Mac OS X, usando una distribución de Python como Anaconda. La única biblioteca adicional que se utiliza para el motor de comercio Python es la biblioteca de peticiones, que es necesaria para la comunicación HTTP a la API de OANDA. Dado que este es el primer mensaje directamente sobre el comercio de divisas, y el código presentado a continuación puede ser francamente adaptado a un entorno real de operaciones, me gustaría presentar la siguiente renuncias de responsabilidad: La negociación de divisas con apalancamiento conlleva un alto nivel de riesgo, y puede no ser adecuado para todos los inversores. El rendimiento pasado no es indicativo de resultados futuros. El alto grado de apalancamiento puede trabajar en contra de usted, así como para usted. Antes de decidir invertir en divisas debe considerar cuidadosamente sus objetivos de inversión, nivel de experiencia y apetito de riesgo. Existe la posibilidad de que deba afrontar la pérdida de parte o la totalidad de su inversión inicial y por lo tanto no debe invertir dinero que no pueda permitirse perder. Usted debe ser consciente de todos los riesgos asociados con el comercio de divisas y buscar el asesoramiento de un asesor financiero independiente si tiene alguna duda. Este software se proporciona tal cual y cualquier garantía explícita o implícita, incluyendo, pero sin limitarse a, las garantías implícitas de comerciabilidad y adecuación para un propósito en particular. En ningún caso, los desarrolladores o sus colaboradores serán responsables de los daños directos, indirectos, incidentales, especiales, ejemplares o consecuentes (incluyendo, pero no limitado a, la adquisición de la pérdida de bienes o servicios sustitutos de uso, datos o beneficios o interrupción del negocio ), sin embargo la causa y bajo cualquier teoría de responsabilidad, ya sea por contrato, responsabilidad estricta o agravio (incluyendo negligencia o de otra manera) que surjan de cualquier de la utilización de este software, incluso si se advirtió de la posibilidad de tales daños. Configuración de una cuenta con OANDA La primera pregunta que viene a la mente es ¿Por qué elegir OANDA. En pocas palabras, después de un poco de google en torno a los corredores de divisas que tenían API, vi que OANDA había publicado recientemente una API REST adecuada que podría ser fácilmente comunicada con desde casi cualquier lenguaje de una manera extremadamente sencilla. Después de leer a través de su documentación de la API del desarrollador. Decidí darles una oportunidad, al menos con una cuenta de práctica. Para que quede claro - no tengo ninguna relación previa o existente con OANDA y sólo estoy proporcionando esta recomendación en base a mi limitada experiencia de jugar con su API de práctica y algo breve uso (para descargar los datos de mercado), mientras trabajaba en un fondo previamente. Si alguien ha llegado a través de cualquier otro corredores de la divisa que también tienen una API de manera similar moderno, entonces identificación esté dispuesto a darles un aspecto también. Antes de utilizar la API es necesario registrarse para obtener una cuenta de práctica. Para ello, puede ir al enlace de registro. Usted verá la siguiente pantalla: A continuación, será capaz de iniciar sesión con sus credenciales de inicio de sesión. Asegúrese de seleccionar la pestaña fxTradePractice desde la pantalla de inicio de sesión: Una vez en la que tendrá que hacer una nota de su número de cuenta. Se enumera debajo del negro Mis fondos de cabecera junto a Principal. El mío es un número de 7 dígitos. Además también se tendrá que generar un token de la API personal. Para ello haga clic en Administrar Acceso a la API por debajo de la pestaña Otras acciones en la parte inferior izquierda: En esta etapa, usted será capaz de generar un token de API. Necesitará la clave para su uso posterior, así que asegúrese de que anotarla también. Ahora tendrá que iniciar la aplicación Práctica FXTrade, lo que nos permitirá ver las órdenes ejecutadas y nuestra pérdida amplificador (papel) de beneficio. Si está ejecutando un sistema Ubuntu tendrá que instalar una versión ligeramente diferente de Java. En particular, la versión de Oracle de Java 8. Si usted no hace esto, entonces el simulador de la práctica no se carga desde el navegador. Me encontré con estos comandos en mi sistema: Ahora será capaz de poner en marcha el entorno de la práctica comercial. Volver al tablero de instrumentos OANDA y haga clic en el enlace resaltado en verde Lance Práctica FXTrade. Nos aparecerá un cuadro de diálogo de Java que le pregunta si desea que se ejecute. Haga clic en Ejecutar y la herramienta de fxTrade Practice se puede cargar. Mina automáticamente a un gráfico de velas de 15 minutos de EUR / USD con el Grupo Especial Cita de la izquierda: En este momento estamos listos para comenzar el diseño y la codificación de nuestro sistema automatizado de compraventa de divisas en contra de la API de OANDA. Visión general de Comercio Arquitectura Si usted ha estado siguiendo la serie backtester evento impulsado por las acciones y ETFs que creé el año pasado, usted será consciente de cómo funciona un sistema de comercio tales por eventos. Para aquellos de ustedes que son nuevos en el software orientado a eventos. Me gustaría sugerir fuertemente la lectura a través del artículo con el fin de hacerse una idea de cómo funcionan. En esencia, todo el programa se ejecuta en un bucle infinte mientras que sólo termina cuando el sistema de comercio se ha apagado. El mecanismo de comunicación central del programa se da a través de una cola que contiene los eventos. La cola se consulta constantemente para comprobar si hay nuevos eventos. Una vez que un evento ha sido retirado de la parte superior de la cola debe ser manejado por un componente apropiado del programa. Por lo tanto, una fuente de datos de mercado podría crear TickEvent s que se coloca en la cola cuando un nuevo precio de mercado llega. Un objeto estrategia de generación de señal podría crear OrderEvent s que van a ser enviados a una casa de valores. La utilidad de un sistema de este tipo está dada por el hecho de que no importa qué orden o tipos de eventos se coloca en la cola, ya que siempre serán manejados correctamente por el componente de la derecha dentro del programa. Además diferentes partes del programa se puede ejecutar en hilos separados. lo que significa que nunca hay ninguna espera para cualquier componente en particular antes de procesar cualquier otro. Esto es muy útil en situaciones de negociación algorítmica, donde los manipuladores de alimentación de datos de mercado y generadores de señales de estrategia tienen muy diferentes características de rendimiento. El bucle principal de comercio está dada por la siguiente pseudo-código Python: Como hemos dicho más arriba se ejecuta el código en un bucle infinito. En primer lugar, la cola se realiza un sondeo para recuperar un nuevo evento. Si la cola está vacía, entonces el bucle simplemente se reinicia después de un corto período de tiempo del sueño conocido como el latido del corazón. Si se encuentra un evento de su tipo se evalúa y luego el módulo correspondiente (ya sea la estrategia o el controlador de ejecución) está llamado a controlar el evento y posiblemente generar otros nuevos que se remontan a la cola. Los componentes básicos que vamos a crear para nuestro sistema de comercio incluyen los siguientes: Transmisión de precio Handler - Permite mantener una conexión de larga duración abierta a los servidores OANDAs y enviar datos de garrapatas (es decir, oferta / demanda) a través de la conexión de los instrumentos que estaban interesados generador de señal Estrategia -. Esto tomará una secuencia de eventos de garrapatas y utilizarlos para generar órdenes de operaciones que serán ejecutadas por el controlador de ejecución. Ejecución Handler - Toma un conjunto de eventos de orden y luego los ejecuta ciegamente con OANDA. Eventos - Estos objetos constituyen los mensajes que se pasan alrededor de la cola de eventos. Sólo se requieren dos para esta aplicación, a saber, la TickEvent y la OrderEvent. Principal punto de entrada - El punto de entrada principal también incluye el lazo comercial que sondea continuamente la cola de mensajes y envía mensajes al componente correcto. Esto a menudo se conoce como el ciclo de eventos o controlador de eventos. Ahora vamos a discutir la implementación del código en detalle. En la parte inferior del artículo es la lista completa de todos los archivos de código fuente. Si se colocan en el mismo directorio y ejecutar pitón trading. py va a empezar a generar órdenes, suponiendo que haya rellenado su cuenta ID y autenticación de señales de OANDA. Aplicación Python Es una mala práctica para almacenar contraseñas o claves de autenticación dentro de una base de código que nunca se puede predecir quién se le permitirá el acceso con el tiempo a un proyecto. En un sistema de producción nos almacenar estas credenciales como variables de entorno con el sistema y luego consultar estos envvars cada vez que se vuelve a desplegar el código. Esto garantiza que las contraseñas y tokens de autenticación no se almacenan en un sistema de control de versiones. Sin embargo, ya que es el único interesado en la construcción de un sistema de comercio de juguetes, y no estamos interesados ​​en los detalles de producción en este artículo, vamos a su lugar separamos estos tokens de autenticación en un archivo de configuración. En el siguiente archivo de configuración settings. py tenemos un diccionario llamado ENTORNOS que almacena los puntos finales de API tanto para la transmisión de la API de OANDA precio y la API de comercio. Cada diccionario sub contiene tres puntos finales de API separados: real. la práctica y la caja de arena. La API de caja de arena es puramente para el código de prueba y para comprobar que no hay errores o bugs. No tiene las garantías de tiempo de actividad de las API reales o de práctica. La API de la práctica, en esencia, proporciona la capacidad de comercio de papel. Es decir, que proporciona todas las características de la API real en una cuenta de práctica simulada. La API real es sólo eso - que es real de operaciones Si utiliza ese punto final en su código, que será el comercio contra el saldo de su cuenta real. Sea extremadamente cuidadoso IMPORTANTE: Cuando se opera en contra de la API de la práctica recordar que un costo de transacción importante, el de impacto en el mercado. no es considerado. Dado que no hay oficios en realidad están siendo colocados en el medio ambiente este costo debe tenerse en cuenta en otro camino en otro lugar utilizando un modelo de impacto en el mercado, si desea evaluar de manera realista el rendimiento. En la siguiente estamos usando la cuenta de práctica según lo dado por la configuración de dominio. Necesitamos dos distintos diccionarios para los dominios, uno para cada uno de los componentes de la API de streaming y comerciales. Por último tenemos el accessToken y ACCOUNTID. Ive llenó el dos por debajo con ID ficticias por lo que tendrá que utilizar su propia, que se puede acceder desde la página de la cuenta de OANDA: El siguiente paso es definir los eventos que la cola utilizará para ayudar a todos los componentes individuales se comunican. Necesitamos dos: TickEvent y OrderEvent. La primera almacena información sobre los datos del mercado de instrumentos tales como el (mejor) de oferta / demanda y el tiempo de comercio. La segunda se utiliza para transmitir órdenes al controlador de ejecución y por lo tanto contiene el instrumento, el número de unidades para el comercio, el tipo de orden (mercado o límite) y el lado (es decir, compra y venta). Asegurar el futuro de nuestros eventos de código que vamos a crear una clase base llamada de eventos y tienen todos los eventos heredan de esto. El código se proporciona a continuación en events. py: La próxima clase vamos a crear se encargará de la estrategia de negociación. En esta demo vamos a crear una estrategia más bien sin sentido de que se limita a recibir todas las garrapatas de mercado y en cada 5 de garrapata compra o vende 10.000 unidades de EUR / USD al azar. Es evidente que esto es una estrategia ridícula Sin embargo, es fantástico para propósitos de prueba, ya que es fácil de código y entender. En futuras entradas del diario que va a reemplazar esto con algo mucho más emocionante que (con suerte) una ganancia strategy. py El archivo se puede encontrar a continuación. Vamos a trabajar a través de él y ver que hay de nuevo. En primer lugar importamos la biblioteca aleatoria y el objeto de OrderEvent events. py. Necesitamos la lib al azar con el fin de seleccionar al azar una compra o de venta. Necesitamos OrderEvent ya que esta es la forma del objeto estrategia enviará órdenes a la cola de eventos, que más tarde será ejecutado por el controlador de ejecución. La clase TestRandomStrategy simplemente toma el instrumento (en este caso el EUR / USD), el número de unidades y los eventos en cola como un conjunto de parámetros. A continuación, crea un contador de garrapatas que se utiliza para contar cuántas instancias TickEvent que ha visto. La mayoría del trabajo se produce en el método calculatesignals, que simplemente toma un evento, determina si es un TickEvent (de lo contrario ignorar) e incrementa el contador de garrapata. A continuación, comprueba para ver si el recuento es divisible entre 5 y luego al azar compra o vende, con un orden de mercado, el número especificado de unidades. Su duda no es el grande de los mundos estrategia de negociación, pero será más conveniente para nuestros propósitos de prueba API de OANDA corretaje El siguiente componente es el manejador de ejecución. Esta clase se encarga de actuar sobre casos OrderEvent y de pedir al intermediario (en este caso OANDA) de una manera tonta. Es decir, no hay gestión del riesgo o la construcción potfolio superposición. El manejador de ejecución será simplemente ejecutar cualquier orden que se le ha dado. Debemos pasar toda la información de autenticación a la clase de ejecución, incluyendo el dominio (la práctica, real o caja de arena), el token de acceso y la identificación de la cuenta. entonces se crea una conexión segura con httplib. uno de los pitones construidos en las bibliotecas. La mayoría del trabajo se produce en executeorder. El método requiere un evento como un parámetro. Se construye entonces dos diccionarios - los encabezamientos y los params. Estos diccionarios entonces serán codificados correctamente (en parte por urllib. Otra biblioteca de Python) para ser enviados como una solicitud HTTP POST con el API OANDAs. Pasamos a los parámetros de tipo de contenido y la cabecera de Autorización, que incluyen nuestra información de autenticación. Además codificamos los parámetros, que incluyen el instrumento (EUR / USD), unidades, tipo de orden y lateral (compra / venta). Por último, hacemos la solicitud y guardar la respuesta: El componente más complejo del sistema de comercio es la StreamingForexPrices objeto, que se ocupa de los cambios de los precios de mercado de OANDA. Hay dos métodos: connecttostream y streamtoqueue. El primer método utiliza la biblioteca de Python solicitudes para conectarse a una toma de streaming con las cabeceras y los parámetros adecuados. Los parámetros incluyen la identificación de la cuenta y la lista instrumento necesario que debe ser escuchado para las actualizaciones (en este caso, sólo es EUR / USD). Tenga en cuenta la siguiente línea: Esto le dice a la conexión a ser escuchados y por lo tanto mantiene abierta de manera duradera. El segundo método, streamtoqueue. de hecho intentos para conectarse a la corriente. Si la respuesta no es satisfactoria (es decir, el código de respuesta no es HTTP 200), entonces simplemente retorno y salida. Si tiene éxito trataremos de cargar el paquete JSON devuelto en un diccionario de Python. Por último, convertimos el diccionario de Python con el instrumento, compra / venta y la marca de tiempo en un TickEvent que se envía a la cola de eventos: Ahora tenemos todos los componentes principales en su lugar. El paso final es para envolver todo lo que hemos escrito hasta ahora en un programa principal. El objetivo de este archivo, conocido como trading. py. es la creación de dos hilos separados. uno de los cuales se ejecuta el manejador de fijación de precios y el otro que se ejecuta el manejador de comercio. ¿Por qué necesitamos dos hilos separados En pocas palabras, estamos ejecutando dos piezas separadas de código, los cuales se ejecutan de forma continua. Si se tuviera que crear un programa sin rosca, a continuación, la toma de streaming se utiliza para las actualizaciones de precios nunca jamás liberar de nuevo a la ruta de código principal y, por tanto, que en realidad nunca llevaría a cabo este tipo de transacciones. Del mismo modo, si nos encontramos con el bucle de comercio (véase más adelante), tendríamos en realidad nunca volver la trayectoria del flujo a la toma de streaming de precio. Por lo tanto necesitamos múltiples hilos, uno para cada componente, de modo que puedan llevarse a cabo de forma independiente. Serán tanto comunicarse entre sí a través de la cola de eventos. Vamos a examinar esto un poco futher. Creamos dos hilos separados con las siguientes líneas: Pasamos por el nombre de la función o método para el argumento de palabra clave objetivo y luego pasar un iterable (tales como una lista o tupla) al argumento args palabra clave, que pasa entonces a esos argumentos al método real /función. Finalmente empezamos los dos hilos con las siguientes líneas: Por lo tanto somos capaces de ejecutar dos, efectivamente bucle infinito, segmentos de código de forma independiente, que ambos se comunican a través de la cola de eventos. Tenga en cuenta que la biblioteca de Python enhebrar no produce un entorno multiproceso multi-núcleo verdadero debido a la implementación CPython de Python y el intérprete de bloqueo global (GIL). Si desea leer más acerca de múltiples hilos en Python, por favor, eche un vistazo a este artículo. Vamos a examinar el resto del código en detalle. En primer lugar importamos todas las bibliotecas necesarias, como cola. roscado y el tiempo. A continuación, importar todos los archivos de código de seguridad. Prefiero personalmente para capitalizar cualquier configuración, que es un hábito que tome de trabajar con Django Después de que definamos la función del comercio, que fue explicado en Python-pseudocódigo anterior. Un bucle infinito mientras se lleva a cabo (si bien es cierto:) que sondea continuamente de la cola de eventos y sólo se salta el bucle si se encuentra vacía. Si se encuentra un evento, entonces es o bien un TickEvent o una OrderEvent y luego el componente apropiado es llamado para llevarlo a cabo. En este caso, es ya sea una estrategia o ejecución del gestor. El bucle luego simplemente duerme durante segundos del latido del corazón (en este caso 0,5 segundos) y continúa. Por último, definimos el punto de entrada principal del código de la función principal. Está bien comentado más adelante, pero voy a resumir aquí. En esencia, una instancia de la cola de eventos y definir los instrumentos / unidades. entonces se crea la clase de flujo StreamingForexPrices precio y, posteriormente, el manejador de ejecución de ejecución. Ambos reciben los datos de autenticación necesarios que se dan por OANDA al crear una cuenta. entonces se crea la instancia TestRandomStrategy. Para finalizar se definen los dos hilos y luego empezar a ellos: Para ejecutar el código que sólo hay que poner todos los archivos en el mismo directorio y llame a la siguiente en la terminal: Tenga en cuenta que para detener el código en esta etapa requiere una matanza duro de la proceso de Python. a través de Ctrl-Z o equivalente no he añadido un hilo adicional para manejar en busca de la sys. exit () que sería necesaria para detener el código de seguridad. Una posible manera de detener el código en una máquina de Ubuntu / Linux es escribir: Y a continuación, pasar la salida de este (un número de proceso) en lo siguiente: Donde ProcessId debe ser reemplazado con la salida del pgrep. Tenga en cuenta que esto no es particularmente buena práctica En artículos posteriores vamos a crear un mecanismo de parada / arranque más sofisticado que hace uso del proceso de supervisión Ubuntus con el fin de tener el sistema de comercio funcionando 24/7. La salida después de 30 segundos más o menos, dependiendo de la hora del día en relación con los principales horario de negociación de EUR / USD, por el código anterior, es la siguiente: Las cinco primeras líneas muestran los datos JSON garrapatas regresar de OANDA con bid / ask precios. Posteriormente se puede ver la salida de fin de Ejecución, así como la respuesta JSON regresar de OANDA que confirma la apertura de una operación de compra de 10.000 unidades de EUR / USD y el precio que se logró a. Esto evitará que se ejecuta de forma indefinida hasta que termine el programa con un comando Ctrl-Z o similar. ¿Cuál es siguiente en artículos posteriores vamos a llevar a cabo algunas mejoras muy necesarias, incluyendo: estrategias Real - estrategias de divisas adecuados que generan señales rentables. infraestructura de producción - la implementación del servidor remoto y 24/7 sistema de comercio supervisado, con capacidad de parada / arranque. Cartera y gestión de riesgos - riesgo y cartera superposiciones para todos los pedidos sugeridos de la estrategia. - La construcción de estrategias múltiples de una cartera de estrategias que se integran en la superposición de gestión de riesgos Al igual que con la backtester impulsado por el evento de la renta variable, también tenemos que crear un módulo de pruebas retrospectivas de divisas. Que nos permitirá llevar a cabo una investigación rápida y hacer más fácil la implementación de estrategias. settings. py Código original (recuerde que debe cambiar ACCOUNTID y accessToken): El uso de Python, IBPy y la API de Interactive Brokers para automatizar las operaciones por parte de Michael Salas-Moore el 5 de febrero, 2014 Hace un tiempo hablamos sobre cómo configurar una cuenta de demostración Interactive Brokers . Interactive Brokers es uno de los principales agentes de valores utilizados por los comerciantes minoristas algorítmicos debido a los requisitos mínimos relativamente bajos de saldo de cuenta (10.000 USD) y (relativamente) de la API sencillo. En este artículo vamos a hacer uso de una cuenta de demostración para automatizar las operaciones contra la API de Interactive Brokers, a través de Python y el plugin IBPy. Divulgación: No tengo ninguna afiliación con Interactive Brokers. Los he utilizado antes en un contexto de fondos profesional y como tal estoy familiarizado con su software. Las Interactive Brokers Interactive Brokers API es una gran empresa y, como tal abastece a una amplia gama de los comerciantes al por menor, que van desde discrecional para automatizado institucional. Esto ha llevado a su interfaz gráfica de usuario, Trader Workstation (TWS), que poseen una cantidad significativa de campanas y silbatos. Además de TWS también hay un componente de peso ligero llamado el IB Gateway, que proporciona el mismo acceso a los servidores de IB, aunque sin la funcionalidad adicional de la GUI. Para nuestros propósitos comerciales automatizados nos volveremos realmente se necesita la interfaz gráfica de usuario de TWS, pero creo que para este tutorial es demostrativa de hacer uso de ella. La arquitectura subyacente se basa en un modelo cliente / servidor que ofrece ambas fuentes de datos de ejecución y de mercado (en tiempo real) y la histórica a través de una API. Es esta API que vamos a utilizar en este tutorial para enviar órdenes automáticas, a través de IBPy. IBPy ha sido escrito para envolver la API Java nativo y hacer que sea sencillo para llamar desde Python. Las dos bibliotecas principales que nos interesan dentro IBPy son ib. ext y ib. opt. Este último es el nivel más alto y hace uso de la funcionalidad en el primero. En la siguiente aplicación que vamos a crear un ejemplo muy sencillo, que se limitará a enviar una sola orden de mercado para comprar 100 unidades de acciones de Google, con el fin de enrutamiento inteligente. Este último está diseñado para lograr el mejor precio en la práctica, aunque en ciertas situaciones puede ser subóptima. Sin embargo, para los propósitos de este tutorial será suficiente. Implementación en Python Antes de empezar es necesario haber seguido los pasos del tutorial anterior sobre cómo configurar una cuenta de Interactive Brokers. Además, es necesario disponer de un espacio de trabajo antes de Python para que podamos instalar IBPy. que le permiten atar otros aspectos de su código juntos. El tutorial sobre la instalación de un entorno de investigación Python va a crear el espacio de trabajo necesario. Instalación IBPy IBPy es un envoltorio de Python escrito alrededor de la API de Interactive Brokers basado en Java. Esto hace que el desarrollo de los sistemas de negociación algorítmica en Python algo menos problemático. Será utilizado como base para todas las comunicaciones posteriores con Interactive Brokers hasta que consideremos el protocolo FIX en una fecha posterior. Desde IBPy se mantiene en GitHub como un repositorio git tendremos que instalar git. En un sistema Ubuntu esto es manejado por: Una vez que haya instalado git puede crear un subdirectorio para almacenar IBPy. En mi sistema, simplemente he colocado debajo de mi directorio home: El siguiente paso es descargar IBPy a través de git clone: ​​Asegúrese de introducir el directorio IbPy e instalar con el entorno virtual de Python preferido: Eso completa la instalación del IBPy. El siguiente paso es abrir TWS (como se describe en el tutorial anterior). Automated Trading El siguiente código demostrará un mecanismo de pedidos basado en la API extremadamente simple. El código está lejos de ser preparado para la producción pero demuestra la funcionalidad esencial de la API de Interactive Brokers y la forma de utilizarlo para la ejecución de órdenes. Todo el código siguiente debe residir en el archivo ibapidemo. py. El primer paso es importar el Contrato y objetos de la biblioteca ib. ext nivel inferior Orden. Además importamos los objetos de conexión y el mensaje de la biblioteca de nivel superior ib. opt: ​​IB nos ofrece la posibilidad de errores de manejo y las respuestas del servidor por un mecanismo de devolución de llamada. Las siguientes dos funciones no hacen más que imprimir los contenidos de los mensajes devueltos por el servidor. Un sistema de producción más sofisticada tendría que aplicar la lógica para asegurar el funcionamiento continuo del sistema en el caso de un comportamiento excepcional: Las siguientes dos funciones envuelven la creación de los contratos y pedidos objetos, la fijación de sus respectivos parámetros. Los documentos describen la función de cada parámetro individualmente: La función principal crea inicialmente un objeto de conexión de Trader Workstation, que debe estar en ejecución para que el código funcione. Las funciones de controlador de error y respuesta son luego registrados en el objeto de conexión. Posteriormente se define una variable idpedido. En un sistema de producción que esto debe ser incrementado para cada orden comercial. Los próximos pasos son para crear un contrato y una Orden que representa una orden de mercado para comprar 100 unidades de acciones de Google. La última tarea es colocar en realidad ese orden mediante el método PlaceOrder del objeto Connection. a continuación, nos desconectamos de TWS: El último paso es ejecutar el código: Inmediatamente se puede observar que la pestaña API abre en Trader Workstation, que muestra el orden de mercado para ir largos 100 acciones de Google: Si ahora nos fijamos en la pestaña Parque podemos ver la posición de Google.

No comments:

Post a Comment