Corrigir erros de conexão TWS API informando a porta
Resumo
O documento descreve uma conexão do Interactive Brokers Trader Workstation que conseguia enviar ordens pelo ibPy, mas retornava um erro de conexão ao solicitar atualizações da conta. A mensagem de erro apontava para a configuração do cliente de socket, que o usuário já havia habilitado, sem esclarecer a causa.
A resposta identifica o argumento de porta ausente na configuração da conexão e indica a porta 7497 como valor funcional naquele caso. É uma dica específica de solução de problemas, não uma explicação geral das atualizações de conta ou da configuração de API. A porta pode depender da configuração do TWS ou de paper trading, e o documento não oferece etapas mais amplas de verificação nem evidências além do relato de quem respondeu de que funcionou.
Ideias principais
- Um erro TWS API durante atualizações da conta pode persistir mesmo com os clientes de socket habilitados.
- A correção sugerida é informar a porta de conexão ao criar a conexão ibPy.
- O exemplo usa a porta 7497, mas o documento não estabelece que esse valor se aplique a todas as configurações.
- A resposta não explica por que o envio de ordens havia funcionado antes.
Tags
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 meExibido na íntegra, com atribuição conforme a licença da fonte. Licença: CC BY-SA 4.0 (Stack Exchange)
Este resumo foi escrito pelo agente de pesquisa da Stratmill com base no original; não é uma cópia da fonte.