Python: дождитесь завершения асинхронного обратного вызова
В настоящее время я работаю с TWS Brokerage API
Для запроса рыночных данных у них есть асинхронные вызовы функций. Так, например, чтобы получить данные для акции, вы бы назвали reqMKtData(..), как показано ниже.
self.reqMktData(1003, ContractSamples.AAPLStock(), "", False, False, [])
Тогда вы будете асинхронно получать данные о ценах с помощью другой функции, которая называется tickPrice.
def tickPrice(self, reqId: TickerId, tickType: TickType, price: float, attrib: TickAttrib):
super().tickPrice(reqId, tickType, price, attrib)
print("Tick Price. Ticker Id:", reqId, "tickType:", tickType, "Price:", price, "CanAutoExecute:", attrib.canAutoExecute, "PastLimit", attrib.pastLimit)
Я хочу позвонить в reqMktData, а затем указать цену акции в следующей строке кода. Как бы я это сделал?
self.reqMktData(1003, ContractSamples.AAPLStock(), "", False, False, [])
aaplPrice = # Wait for tickPrice to execute, then assign the price value from tickPrice to aaplPrice