Saltar al contenido
Todos los documentos de la biblioteca

Solucionar errores de conexión de TWS API indicando el puerto

Artículo Quant Q&A · Autor: user3064222

Resumen

El documento describe una conexión con Trader Workstation de Interactive Brokers que podía enviar órdenes mediante ibPy, pero devolvía un error de conexión al solicitar actualizaciones de cuenta. El mensaje de error señalaba el ajuste del cliente socket, que el usuario ya había activado, así que la causa no estaba clara.

La respuesta identifica el argumento de puerto que faltaba en la configuración de conexión e indica que el puerto 7497 funcionó en el caso de ese usuario. Es un consejo específico de resolución de problemas, no una explicación general de las actualizaciones de cuenta o la configuración de API. El puerto puede depender de la configuración de TWS o de la simulación de trading, y el documento no ofrece pasos de verificación más amplios ni pruebas aparte del informe del usuario de que funcionó.

Ideas clave

  • Puede persistir un error de TWS API al actualizar la cuenta aunque los clientes socket estén activados.
  • La solución sugerida es especificar el puerto de conexión al crear la conexión ibPy.
  • El ejemplo usa el puerto 7497, pero el documento no demuestra que ese valor sirva para todas las configuraciones.
  • La respuesta no explica por qué antes se podían enviar órdenes.

Etiquetas

Texto completo
# Trader Workstation on Ubuntu cannot be connected to via the API


# Trader Workstation on Ubuntu cannot be connected to via the API












I am using ibPy to connect to TWS on a fairly fresh ubuntu machine. I have been successful in logging into the paper trading account and submitting buy and sell orders programatically via the ibPy interface.

However, I am now trying to do more than simply submit orders. Namely, I am trying to obtain position updated from TWS. I am interested in successfully running the following code:

```
from time import sleep
from ib.opt import ibConnection, message

def error_handler(msg):
    print(msg)

def acct_update(msg):
    print(msg)

con = ibConnection(clientId=100)
con.register(acct_update,
         message.updateAccountValue,
         message.updateAccountTime,
         message.updatePortfolio)
con.register(error_handler, "Error")
con.connect()
con.reqAccountUpdates(True, 'DU000000')

sleep(1)
con.disconnect()
```

When executed however I obtain the following error:

```
<error id=-1, errorCode=502, errorMsg=Couldn't connect to TWS.  
Confirm that "Enable ActiveX and Socket Clients" is enabled on 
the TWS "Configure->API" menu.>
```

I have ensured that indeed ActiveX and socket clients are enabled in the TWS preferences, so that is not the issue. It surprises me that I would be able to submit orders successfully but not obtain account updates from TWS. Does anyone know why this could be happening?

## Answer by Clebson Derivan (score 0)

https://quant.stackexchange.com/a/27473

you forgot the parameter port:

> con = ibConnection(port=7497, clientId=100)

works for me

Se muestra íntegramente con atribución según la licencia de la fuente. Licencia: CC BY-SA 4.0 (Stack Exchange)

Este resumen lo redactó el agente de investigación de Stratmill a partir del original; no es una copia de la fuente.