[英]how to handle async error in ib_insync with python3.7?
Sorry I may ask a stupid question but I am just a beginner in python and algotrading. 对不起,我可能会问一个愚蠢的问题,但我只是python和algotrading的初学者。 I am now using Python 3.7 and ibapi with ib_insync to try connect TWS.
我现在使用Python 3.7和ibapi与ib_insync来尝试连接TWS。 However, as Python 3.7 use async as a keyword so when I try to code with ib_insync:
但是,由于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'])
It end up like this: 它最终是这样的:
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
I know I need to change the name async to other name. 我知道我需要将名称async更改为其他名称。 I tried to modify the file client.py in ibapi but it seems not work at all.
我试图在ibapi中修改文件client.py,但它似乎根本不起作用。 Which part of code I should change in order to get it work?
为了让它工作,我应该改变哪部分代码?
I stumbled upon same error in API 973.07. 我在API 973.07中偶然发现了同样的错误。 In my case I use MacOS, so file path looks different from your Windows environment, but idea is the same.
在我的情况下,我使用MacOS,因此文件路径看起来与Windows环境不同,但想法是一样的。 To fix the issue I just commented out line 60 in file IBJts/source/pythonclient/build/lib/ibapi/client.py to look like:
为了解决这个问题,我刚刚将文件IBJts / source / pythonclient / build / lib / ibapi / client.py中的第60行注释掉,如下所示:
# self.async = False
Not sure if it will affect anything else, but at least I can compile and properly install library via: 不确定它是否会影响其他任何东西,但至少我可以通过以下方式编译并正确安装库:
python3 setup.py install
PS in line 123 os the same file there is a comment PS在123行os中同一个文件有评论
#TODO: support async mode
Hopefully my change doesn't break anything 希望我的改变不会破坏任何东西
Install newest version (API_Version=9.75.01) of IB API SW - this issue is fixed there. 安装IB API SW的最新版本(API_Version = 9.75.01) - 此问题已修复。 It is Python 3.7 dependent - same code worked well running Python 3.6 for me.
它依赖于Python 3.7 - 相同的代码对我来说运行Python 3.6运行良好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.