رفتن به محتوا
همه اسناد کتابخانه

رفع خطای اتصال TWS API با تعیین درگاه

مقاله Quant Q&A · نویسنده: user3064222

خلاصه

سند اتصالی به Trader Workstation شرکت Interactive Brokers را شرح می‌دهد که می‌توانست با ibPy سفارش ثبت کند، اما هنگام درخواست به‌روزرسانی حساب خطای اتصال برمی‌گرداند. پیام خطا به تنظیمات کارخواه سوکت اشاره می‌کرد؛ کاربر این گزینه را قبلاً فعال کرده بود و علت همچنان نامشخص بود.

پاسخ، آرگومان درگاهِ جاافتاده در راه‌اندازی اتصال را شناسایی می‌کند و درگاه 7497 را مقدار کارآمد در مورد همان کاربر می‌داند. این نکته‌ای محدود برای عیب‌یابی است، نه توضیحی کلی دربارهٔ به‌روزرسانی حساب یا پیکربندی API. درگاه ممکن است به تنظیمات TWS یا معاملهٔ کاغذی وابسته باشد؛ سند مراحل بررسی گسترده‌تر یا شواهدی جز گزارش پاسخ‌دهنده مبنی بر کارکرد آن ارائه نمی‌کند.

ایده‌های کلیدی

  • خطای TWS API هنگام به‌روزرسانی حساب ممکن است با وجود فعال‌بودن کارخواه‌های سوکت ادامه پیدا کند.
  • راهکار پیشنهادی این است که هنگام ساخت اتصال ibPy، درگاه اتصال را مشخص کنید.
  • نمونه از درگاه 7497 استفاده می‌کند، اما سند اثبات نمی‌کند این مقدار برای همهٔ تنظیمات کاربرد دارد.
  • پاسخ توضیح نمی‌دهد چرا ثبت سفارش پیش‌تر کار می‌کرده است.

برچسب‌ها

متن کامل
# 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

با ذکر منبع و مطابق مجوز اثر، به‌طور کامل نمایش داده می‌شود. مجوز: CC BY-SA 4.0 (Stack Exchange)

این خلاصه را عامل پژوهشی Stratmill بر پایه متن اصلی نوشته است؛ نسخه‌ای از اثر منبع نیست.