【问题标题】:how to handle async error in ib_insync with python3.7?如何使用 python3.7 处理 ib_insync 中的异步错误?
【发布时间】:2019-01-21 06:30:53
【问题描述】:

对不起,我可能会问一个愚蠢的问题,但我只是 python 和算法的初学者。我现在使用 Python 3.7 和带有 ib_insync 的 ibapi 来尝试连接 TWS。但是,由于 Python 3.7 使用 async 作为关键字,所以当我尝试使用 ib_insync 进行编码时:

from ib_insync import *

ib = IB()
ib.connect('127.0.0.1', 7496, clientId=1)

contract = Forex('EURUSD')
bars = ib.reqHistoricalData(contract, endDateTime='', durationStr='30 D', barSizeSetting='1 hour', whatToShow='MIDPOINT', useRTH=True)

df = util.df(bars)
print(df['date', 'open', 'high', 'low', 'close'])

结果是这样的:

File "C:/Users/leung/Documents/MONEY/Algotrade/venv/test1.py", line 1, in <module>
    from ib_insync import *
  File "C:\Users\leung\AppData\Local\Programs\Python\Python37-32\lib\site-packages\ib_insync\__init__.py", line 24, in <module>
    from .ib import *
  File "C:\Users\leung\AppData\Local\Programs\Python\Python37-32\lib\site-packages\ib_insync\ib.py", line 11, in <module>
    from ib_insync.client import Client
  File "C:\Users\leung\AppData\Local\Programs\Python\Python37-32\lib\site-packages\ib_insync\client.py", line 10, in <module>
    from ibapi.client import EClient
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 963, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 906, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1280, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1254, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1235, in _legacy_get_spec
  File "<frozen importlib._bootstrap>", line 441, in spec_from_loader
  File "<frozen importlib._bootstrap_external>", line 594, in spec_from_file_location
  File "C:\Users\leung\AppData\Local\Programs\Python\Python37-32\lib\site-packages\ibapi-9.73.7-py3.7.egg\ibapi\client.py", line 60
    self.async = False
             ^
SyntaxError: invalid syntax

Process finished with exit code 1

我知道我需要将名称异步更改为其他名称。我试图在 ibapi 中修改文件 client.py,但它似乎根本不起作用。我应该更改哪一部分代码才能使其正常工作?

【问题讨论】:

    标签: python python-3.x algorithmic-trading interactive-brokers ib-api


    【解决方案1】:

    我在 API 973.07 中偶然发现了同样的错误。在我的情况下,我使用 MacOS,因此文件路径看起来与您的 Windows 环境不同,但想法是相同的。为了解决这个问题,我刚刚注释掉了文件 IBJts/source/pythonclient/build/lib/ibapi/client.py 中的第 60 行,如下所示:

    #        self.async = False
    

    不确定它是否会影响其他任何东西,但至少我可以通过以下方式编译和正确安装库:

    python3 setup.py install
    

    PS 在第 123 行 os 同一个文件有注释

    #TODO: support async mode
    

    希望我的更改不会破坏任何东西

    【讨论】:

    • 我试过了,还是不行,最后我用python 3.6解决了这个问题
    【解决方案2】:

    安装最新版本的 IB API SW (API_Version=9.75.01) - 该问题已修复。它依赖于 Python 3.7 - 相同的代码在我运行 Python 3.6 时运行良好。

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 2015-07-18
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2013-01-25
      • 1970-01-01
      相关资源
      最近更新 更多