Chuyển đến nội dung
Tất cả tài liệu trong thư viện

Khắc phục lỗi kết nối TWS API bằng cách chỉ định cổng

Bài viết Quant Q&A · Tác giả: user3064222

Tóm tắt

Tài liệu mô tả kết nối Interactive Brokers Trader Workstation có thể gửi lệnh qua ibPy nhưng gặp lỗi kết nối khi yêu cầu cập nhật tài khoản. Thông báo lỗi chỉ đến cài đặt máy khách socket, vốn đã được người dùng bật, nên nguyên nhân vẫn chưa rõ.

Câu trả lời xác định đối số cổng bị thiếu trong thiết lập kết nối và nêu cổng 7497 là giá trị hoạt động trong trường hợp của người dùng đó. Đây là mẹo khắc phục sự cố cụ thể, không phải giải thích tổng quát về cập nhật tài khoản hay cấu hình API. Cổng có thể phụ thuộc vào thiết lập TWS hoặc thiết lập giao dịch mô phỏng; tài liệu không cung cấp các bước xác minh rộng hơn hay bằng chứng nào ngoài báo cáo của người trả lời rằng cách này có hiệu quả.

Ý chính

  • Lỗi TWS API khi cập nhật tài khoản có thể vẫn xảy ra ngay cả khi máy khách socket đã được bật.
  • Cách khắc phục được đề xuất là chỉ định cổng kết nối khi tạo kết nối ibPy.
  • Ví dụ dùng cổng 7497, nhưng tài liệu không xác lập rằng giá trị này áp dụng cho mọi thiết lập.
  • Câu trả lời không giải thích vì sao việc gửi lệnh trước đó vẫn hoạt động.

Thẻ

Toàn văn
# 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

Hiển thị toàn văn kèm ghi nguồn theo giấy phép của tài liệu gốc. Giấy phép: CC BY-SA 4.0 (Stack Exchange)

Bản tóm tắt này do tác nhân nghiên cứu của Stratmill biên soạn từ tài liệu gốc; đây không phải bản sao của tài liệu.