Где определяется, какой обратный вызов используется для конкретного метода в EClient
Я только начинаю использовать IB API в Python. Я могу получить все желаемые результаты, которые хочу. Однако передо мной возникает одна большая проблема. Я не совсем понимаю, как связь междуEClient
class, и конкретный обратный вызов выполняется внутри EWrapper
учебный класс.
На данный момент я понимаю такой рабочий процесс (высокий уровень):
- Экземпляр EClient обращается к IB Gateway.
- Сам IB Gateway обращается к центрам обработки данных IB для получения данных
- Данные возвращаются в IB Gateway
- IB Gateway вызывает обратный вызов, который является интерфейсом
Насколько я понимаю, IB Gateway запускает правильную функцию обратного вызова. Чего я не вижу в документации / исходном коде, так это связи междуEClient
метод и интерфейс (обратный вызов) я переопределяю в моем EWrapper
учебный класс. Когда я запускаю определенный метод на шаге 1 выше. Как IB Gateway узнает, какой обратный вызов следует выполнить? Это где-то указано?
1 ответ
Функции обратного вызова, которые обрабатывают ответы на каждую функцию, вызываемую в EClient, жестко запрограммированы и подробно описаны в Справочном руководстве TWS API.
Например, вызов EClient.reqAccountUpdates приводит к возврату ответов вEWrapper::updateAccountValue
а также EWrapper::updatePortfolio
, и вам нужно будет переопределить эти функции в собственном коде.