Я не могу получить 'Adjusted_Last' от ibapi

Я использую питон

Api_version=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()

Как

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

Возвращает ошибку без данных.

ERROR:root:ERROR 0 321 Error validating request:-'bm' : cause - What to show value of ADJUSTED_LAST rejected.

Ссылка для 'Adjusted_Last'

Ссылка на код ошибки

Я пробовал различные методы. Но я новичок в Python, поэтому даже не знаю, как начать поиск. for all_data - это pd.DataFame, который я использую для хранения акций из S&P 500, и я буду использовать эту цену для расчета доходности.

Затем я планирую получить позицию, которую я держал, и систематически торговать ими.

Я знаю, что у меня есть еще одна проблема с app.done = True, я думаю, что справлюсь сам. Но я не могу понять это. Спасибо!

1 ответ

Я думаю, что я должен обновить Click_Here

приложение TWS НЕ является API.

Теперь ошибка

ERROR:root:ERROR 0 321 Error validating request:-'bA' : cause - End date not supported with adjusted last

У меня есть почта, чтобы спросить команду IB. Он сказал мне оставить endDateTime пустым. Это работает!!

app.reqHistoricalData(app.i, contract, "","1 W", "1 day", "Adjusted_Last", 1, 1, False, [])
Другие вопросы по тегам