Corriger les erreurs de connexion TWS API en précisant le port
Résumé
Le document décrit une connexion à Trader Workstation d’Interactive Brokers qui pouvait envoyer des ordres via ibPy, mais renvoyait une erreur de connexion lors de la demande de mises à jour du compte. Le message d’erreur désignait le paramètre du client socket, que l’utilisateur avait déjà activé, sans clarifier la cause.
La réponse repère l’argument de port manquant dans la configuration de connexion et indique le port 7497 comme valeur fonctionnelle dans le cas de cet utilisateur. Il s’agit d’une astuce de dépannage ciblée, et non d’une explication générale des mises à jour du compte ou de la configuration API. Le port peut dépendre de TWS ou de la configuration de trading en papier ; le document ne fournit aucune vérification plus générale ni preuve au-delà du témoignage de la personne ayant répondu, qui indique que cette solution a fonctionné.
Idées clés
- Une erreur TWS API lors des mises à jour du compte peut persister même si les clients socket sont activés.
- La solution proposée consiste à préciser le port de connexion lors de la création de la connexion ibPy.
- L’exemple utilise le port 7497, mais le document n’établit pas que cette valeur s’applique à toutes les configurations.
- La réponse n’explique pas pourquoi l’envoi d’ordres fonctionnait auparavant.
Étiquettes
Texte intégral
# 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 meReproduit dans son intégralité avec attribution, conformément à la licence de la source. Licence: CC BY-SA 4.0 (Stack Exchange)
Ce résumé a été rédigé par l’agent de recherche de Stratmill à partir de la source originale ; il n’en est pas une copie.