Python 我无法从ibapi获得“调整后的最后一次”

Python 我无法从ibapi获得“调整后的最后一次”,python,algorithmic-trading,interactive-brokers,Python,Algorithmic Trading,Interactive Brokers,我使用Python API_版本=9.73.04 from ibapi import wrapper from ibapi.client import EClient from ibapi.wrapper import EWrapper from ibapi.contract import Contract as IBcontract from threading import Thread import queue import datetime from ibapi.utils import

我使用Python

API_版本=9.73.04

from ibapi import wrapper
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract as IBcontract
from threading import Thread
import queue
import datetime
from ibapi.utils import iswrapper #just for decorator
from ibapi.common import *
from ibapi.contract import *
from ibapi.ticktype import *

class TestApp(wrapper.EWrapper, EClient):

    def __init__(self):
        wrapper.EWrapper.__init__(self)
        EClient.__init__(self, wrapper=self)


    @iswrapper
    def historicalData(self, reqId:int, bar: BarData):
        print("HistoricalData. ", reqId, " Date:", bar.date, "Open:", bar.open,
              "High:", bar.high, "Low:", bar.low, "Close:", bar.close, "Volume:", bar.volume)
        self.done = True





def main():
    t = time()
    max_amount_per_Iter = 70 #max number per iter to save cost
    max_Iter = ceil(len(all_data)/max_amount_per_Iter)-1
    for i in range (0,max_Iter):
        print('====================round : ',i+1,'===============================')
        app = TestApp()
        app.connect("127.0.0.1", 7496, clientId=i)
        print("serverVersion:%s connectionTime:%s" % (app.serverVersion(),app.twsConnectionTime()))
        for j in range (0,min(max_amount_per_Iter,len(all_data)-i*max_amount_per_Iter)):
            print(j+i*70)
            app.done = False
            app.i = j+i*max_amount_per_Iter

            contract = Contract()
            contract.symbol = all_data.iloc[app.i,0]
            contract.secType = all_data.iloc[app.i,1]
            contract.currency = all_data.iloc[app.i,3]
            contract.exchange = all_data.iloc[app.i,2]
            queryTime = (datetime.datetime.today() - datetime.timedelta(days=180)).strftime("%Y%m%d %H:%M:%S")

            print('i=', i)
            app.reqHistoricalData(app.i, contract, queryTime,"1 W", "1 day", "Adjusted_Last", 1, 1, False, [])
            i+1
            app.run()

        sleep(1)
        app.disconnect()
        sleep(0.02)
        print('=========End round : ',i+1,'with time :',time() - t,'==============')

if __name__ == "__main__":
    main()
作为

它返回没有数据的错误

ERROR:root:ERROR 0 321 Error validating request:-'bm' : cause - What to show value of ADJUSTED_LAST rejected.
我试过各种方法。但我是Python新手,所以我甚至不知道如何开始搜索。因为所有的_数据都是一个pd.DataFame,我用它从标准普尔500成分股中持有一只股票,我将用这些价格来计算回报

然后,我计划获得我持有的股票头寸,并系统地进行交易

我知道我还有一个关于这个应用程序的问题。done=True,我想我可以自己解决。但我不知道该怎么办。 谢谢

我想我必须更新

TWS应用程序不是API

现在错误是

ERROR:root:ERROR 0 321 Error validating request:-'bA' : cause - End date not supported with adjusted last
我有邮件要问IB团队。他让我把日期时间留空。这是工作

app.reqHistoricalData(app.i, contract, "","1 W", "1 day", "Adjusted_Last", 1, 1, False, [])

尝试发布一个新问题,而不是在回答另一个问题时问一个问题。谢谢,因此我认为我必须删除此问题。我收到相同的错误:验证请求时出错:-“bm”:原因-显示上次被拒绝的调整的_值的内容。你找到解决方案了吗?没有,但是你可以尝试从第一个答案的链接下载新版本的API。尝试app.reqHistoricalDataapp.i,合同,1周,1天,最后调整,1,1,False,[]
app.reqHistoricalData(app.i, contract, "","1 W", "1 day", "Adjusted_Last", 1, 1, False, [])