如何解决盈透证券交易平台、Python API
我有一个问题。在我的程序中间,请参阅下面的大写问题。 不知何故,这两个列表是空的。类 TestApp 中的函数位置似乎没有被调用。 任何帮助表示赞赏。我被困在这里,没有帮助就找不到解决方案。
An error occurred (InvalidPermission.Duplicate) when calling the AuthorizeSecurityGroupIngress operation: the specified rule "peer: sg-blah,ALL,ALLOW" already exists
解决方法
您应该为 EClient.run() 方法使用新线程。然后在主线程中执行其他所有操作。
现在可以使用了:
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from threading import Thread
import time
class TestApp(EWrapper,EClient):
def __init__(self):
EClient.__init__(self,self)
self.position_symbols = []
self.position_shares = []
def error(self,reqId,errorCode,errorString):
print('Error: '," ",errorString)
def position(self,account,contract,position,avgCost):
super().position(account,avgCost)
print("Position",contract.symbol,avgCost)
self.position_symbols.append(contract.symbol)
self.position_shares.append(str(position))
def nextValidId(self,orderId):
self.nextOrderId = orderId
self.start()
def start(self):
self.reqPositions()
def stop(self):
self.done = True
self.cancelScannerSubscription(1)
self.disconnect()
# class MyThread(Thread,EWrapper,EClient):
# ib = None
#
# def __init__(self):
# self.ib = TestApp()
# Thread.__init__(self)
#
# self.start()
#
# self.ib.connect('127.0.0.1',7497,0)
# app = TestApp()
# app.nextOrderId = 0
#
# def run(self):
# for i in range(332,345,2):
# time.sleep(4)
# # loopindex = i % numsymbol
#
# # THOSE TWO LINES OF CODES ARE NOT WORKING.
# # PROBABLY DUE TO THREADING ISSUES.
# # THE TWO LISTS ARE EMPTY
#
# print(self.ib.position_symbols)
# print(self.ib.position_shares)
app = TestApp()
app.connect('127.0.0.1',0)
my = None
while True:
app.nextOrderId = 0
user_input = input("What do I do?")
if user_input == "start thread":
if my == None:
my = Thread(target=app.run)
my.start()
elif user_input.upper() in ["REMOVE","ADD"]:
# do
# something....
pass
for i in range(332,2):
time.sleep(4)
# loopindex = i % numsymbol
# NOW WORKING
print(app.position_symbols)
print(app.position_shares)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。