Puede probar IBridgepy para construir y probar modelos.
El IBridgePy del Dr. Liu es el contenedor que lo ayudará a operar en la API de Interactive Brokers utilizando Python, en lugar de IBPy o Quantopian. QuantInsti organizó un seminario web muy exitoso sobre este tema y tuvimos un número récord de inscriptos (más de 1000) que asistieron al seminario web realizado por el propio Dr. Liu. Compartiré el enlace al seminario web al final de este artículo.
IBridgePy
IBridgePy es uno de los paquetes Python más flexibles y amigables que se puede usar para implementar Python en la API de Interactive Brokers. Es bastante diferente de IBPy.
¿Cómo?
Bueno, es una implementación de terceros de la interfaz de programación de aplicaciones que se utiliza para acceder a la estación de trabajo Trader de IB. Mientras IBridgePy funciona de manera diferente; no vuelve a implementar la API de los corredores interactivos. En cambio, ayuda a Python a llamar a la API C ++ de IB directamente, ya que actúa como un contenedor. Dado que IBridgePy llama directamente a la API C ++ de IB, por lo tanto, podemos esperar menos errores y excepciones en el programa.
¿Por qué?
Por una simple razón: Interactive Brokers C ++ API es oficialmente mantenida por Interactive Brokers. De hecho, cuando Interactive Brokers tendrá una nueva versión de su plataforma, la API también se actualizará.
¿Cuáles son los beneficios de usar IBridgePy?
IbridgePy tiene algunas características clave que lo hacen más beneficioso para los usuarios y voy a enumerarlas como:
- Flexibilidad
- Facilidad de uso
- Intimidad
Flexibilidad
Lo mejor de IBridgePy es el hecho de que puede usarlo para negociar cualquier tipo de valores. Puede intercambiar acciones, futuros, opciones, divisas, etc. Una de las motivaciones del Dr. Liu para desarrollar IBridgePy fue hacer que la aplicación sea flexible. Quantopian le permite operar solo en acciones y la frecuencia de tiempo para operar es de solo dos minutos. En IBridgePy, puede usar cualquier paquete de Python y acceder a la fuente de datos desde cualquier lugar.
Fácil de usar
La complejidad de la API de Interactive Brokers ha sido completamente eclipsada por la interfaz fácil de usar de IBridgePy . No tendrá que hacer ningún esfuerzo adicional para administrar sus pedidos pendientes o escribir códigos para obtener datos históricos o cotizaciones del servidor, ya que el contenedor se encarga de ello.
Intimidad
La privacidad es muy importante y uno de los factores pasados por alto a veces cuando entrega sus credenciales a un programa de terceros que se ejecuta en un servidor diferente. Sin embargo, IBridgePy se está ejecutando en su computadora, por lo que su privacidad está totalmente bajo su control.
¿Quién debe usar IBridgePy?
- Las personas que están en el comercio automatizado
- Aquellos que quieran usarlo como un mercado o una bolsa de valores
¿Cómo instalar IBridgePy?
En primer lugar, deberá enviar un correo electrónico a [correo electrónico protegido] solicitando la aplicación independiente. Recibirá el enlace de descarga por correo electrónico.
Descargue el archivo comprimido (.zip) y extráigalo en su carpeta local.
Prerrequisitos
Debe tener los siguientes programas instalados en su sistema:
- Corredores interactivos TWS. Hemos discutido en detalle cómo instalar Interactive Brokers TWS en el artículo anterior.
- Alternativamente, también puede usar IB Gateway (que viene junto con TWS)
- También debe tener un paquete de Python instalado en su sistema. Estoy usando Anaconda, sin embargo, el Dr. Liu me recomendó usar Python (XY), que es un IDE científico para Python que solo se ejecuta en Windows.
- Debe tener IbridgePy (y el conjunto de programas de muestra) que puede obtener escribiendo una solicitud al correo electrónico de IbridgePy mencionado anteriormente.
TWS o IB Gateway?
Tanto TWS como Gateway se pueden usar para comerciar. Si eres relativamente nuevo en el comercio, entonces recomendaría TWS ya que es más fácil de usar. Sin embargo, si desea ahorrar tiempo y evitar reinicios del sistema IB, vaya a la puerta de enlace IB.
Seguiremos los mismos pasos que en el artículo anterior. Cuando aparezca la pantalla de inicio de sesión, verifique IB Gateway y continúe. Cuando se abre IB Gateway, vamos a su configuración, tal como lo hicimos con TWS.
Esto será seguido por la configuración manual de IB Gateway. A continuación, haga clic en Configuración. Aunque no hay nada que cambiar aquí, podemos configurar el puerto según su necesidad, aunque no se recomienda.
También configuraremos TWS, como hicimos en el artículo anterior. Reinicie TWS después de configurarlo.
Preparando IDE
El siguiente paso importante en este tutorial es preparar el IDE de Python. Si está utilizando Python (XY), debe iniciar el ejecutable y ejecutar spyder desde allí:
Una vez que Spyder se inicia, y sigue estos pasos:
- Vaya a Ver luego Paneles y marque Editor y Consola
- Agregue la carpeta a la Ruta de Python haciendo clic en Herramientas y luego seleccionando el administrador PYTHONPATH . Aquí hará clic en Agregar ruta y elegirá la carpeta donde descomprimió IBridgePy .
- Haga clic en cerrar para aceptarlo.
- Reinicia Spyder.
Ejecución de programa de muestra
Haga clic en RUN_ME.py en Spyder IDE haciendo clic en Archivo y luego en Abrir.
* RUN_ME.py es el programa en el que puede ejecutar esto como entrada, pero example_moving_average_cross.py es el archivo donde se mantiene la estrategia comercial.
Después de esto, asegúrese de iniciar sesión en IB TWS o IB Gateway. Presiona el triángulo verde o presiona F5.
Decodificando la Estructura del Código
Tal como había discutido sobre la estructura del programa en mi artículo anterior, aquí también voy a hablar sobre la estructura del código.
Definimos initialize (), que es un método incorporado para reclamar variables que solo se ejecutarán una vez.
A continuación definimos handle_data () , que también es un método incorporado donde se toma la decisión comercial. Aquí se dan dos entradas (contexto, datos) . El contexto contiene las variables reclamadas en initialize () . Mientras que los datos son la transmisión en vivo recibida diariamente o minuciosamente.
Línea 16 ~ línea 19: puede elegir un algoritmo que desee ejecutar comentando otros
Línea 20: el código de su cuenta de Interactive Brokers
Línea 21: La frecuencia o con qué frecuencia la función de handle_data (contexto, datos), 60 significa ejecutarlo cada minuto y 1 significa ejecutarlo cada segundo.
Línea 22: hay 4 niveles para mostrar resultados
- ERROR: solo muestra mensajes de error
- INFORMACIÓN: los usuarios típicos lo usarán para conocer los resultados de tu algo
- DEPURACIÓN: es posible que sepa más información cuando depure su algo
- NOTSET: verá información tremenda si realmente quiere saber qué está pasando
Las 3 piedras angulares de IBridgePy
Estas son tres de las funciones integradas más llamativas que forman los pilares de IbridgePy:
- Show_real_time_price
- Request_data
- Poner orden
Cotizaciones en tiempo real
Siempre que necesite cotizaciones en tiempo real, puede usar la función integrada show_real_time_price
En la línea anterior, verá que los parámetros utilizados son EFECTIVO, EUR, USD, que regresará con las tasas de cambio en tiempo real para las monedas especificadas.
Del mismo modo, puede usar STK, AAPL, USD y el valor de las acciones de APPLE en dólares estadounidenses. STK es el tipo de seguridad, que hemos discutido en detalle en el artículo anterior sobre Implementar Python en la API de Interactive Brokers usando IBPy.
Obteniendo datos históricos
request_data es la función que se utiliza para obtener datos históricos de Interactive Brokers. También deberá especificar un parámetro historyData .
Parámetros involucrados
- Usando los parámetros, seleccionamos el instrumento para el que se deben obtener los datos históricos, en el ejemplo anterior es SPY, que es un seguimiento de ETF en el índice S & P500
- A continuación especificamos el intervalo de tiempo, en nuestro ejemplo es ‘1 día’
- El período de retroceso es el siguiente parámetro donde especificamos el período de datos históricos que se requiere. En nuestro ejemplo, es ’50 D ‘ significa retroceder 50 días a partir de hoy.
- Los datos históricos recuperados se guardan en un marco de datos de pandas que se guardan en hist, un atributo de la clase de datos, guardado en un diccionario llamado datos.
Salida
Solicitar múltiples datos históricos
Al igual que solicitó datos históricos de Interactive Brokers durante un período de tiempo específico, también puede obtener múltiples datos históricos a la vez. Mira el código a continuación:
He especificado SPY y AAPL y el intervalo de tiempo especificado es de 1 min (1 minuto) y 1 día respectivamente. El período especificado es 1 D y 10 D (D = días) respectivamente. Del mismo modo, también hemos especificado los requisitos en la función de salida.
La salida
Poner orden
La colocación de pedidos es el paso importante en todo nuestro proceso y así es como hacemos pedidos en Interactive Brokers usando IBridgePy:
- Colocar órdenes de mercado: orden (símbolo (‘seguridad’), x)
Aquí la seguridad es la seguridad objetivo, por ejemplo, SPY yx es el número de acciones. –X significa VENDER yx significa COMPRAR .
Por ejemplo, orden (símbolo (‘SPY’), 100)
- El objetivo de seguridad es SPY
- La acción es COMPRAR 100 acciones cuando n> 0
- Si fue -100, entonces el número negativo significa VENDER, -100 = VENDER 100 acciones
- order_target (symbol (‘SPY’), 100) ajustará las posiciones en función de sus posiciones de tenencia, ya sea COMPRAR o VENDER hasta que tenga 100 acciones
- Realizar orden de límite / detención (símbolo (‘SPY’), 100, orden de límite (213.42)) realizar una orden de límite para COMPRAR 100 acciones de SPY al precio = $ 213.42 por acción (símbolo (‘SPY’), -100, orden de detención (213.42 )) coloque una orden de stop para VENDER 100 acciones de SPY al precio = $ 213.42 por acción
- Se recomienda realizar un seguimiento del estado del pedido que realizó mediante order_status_monitor ()
Al igual que en el tutorial anterior, habíamos especificado un orderId, aquí también especificamos una función orderId que es la identidad única de sus solicitudes de pedido. Para las órdenes de mercado, debe esperar ‘Llenado’ como el punto final de su solicitud de orden, lo que significa que las órdenes se han ejecutado en Interactive Brokers.
Para las órdenes de límite y detención, el estado esperado es ‘Enviado’, lo que significa que las órdenes han sido aceptadas por IB y en espera de ejecuciones. Para valores de alta liquidez, no llevará mucho tiempo (unos segundos) completar las transacciones.
IbridgePy.Trader_single_account es el nombre del módulo y le sigue una SOLICITUD para comprar 100 acciones. Esto es seguido por el saldo de la cuenta .