- 116.208 Mitglieder,
- 71.710 Diskussionen,
- 1.159 Gelöste Fragen

am 04.06.2020 11:12
Hallo Zusammen,
ich habe es grundsätzlich geschafft, dass die TAPI unter Python läuft.
Siehe hier: https://wissen.consorsbank.de/t5/Consorsbank-API/Trading-API-mit-Python-f%C3%BCr-Einsteiger/m-p/9802...
Jetzt möchte ich eine einfache Kursabfrage zu einer WKN durchführen.
Es findet sich sicher alles in der Dokumentation, aber ich blicke es nicht. . .
Wenn ich noch Stunden suche, finde ich es vielleicht. . .
Wenn jemand einen Tip hätte - wäre super!
Ein paar Zeilen Code - so etwa im Stile wie das hier reicht völlig aus:
account_service_stub = TradingAPI_pb2_grpc.AccountServiceStub(channel) accounts_response = account_service_stub.GetTradingAccounts(Common_pb2.AccessTokenRequest(access_token=login_response.access_token)) print("Accounts response: " + str(accounts_response))
Wäre mir ein große Hilfe.
HG,
Stefan
am 04.06.2020 11:59
Hallo @HimbeerToni,
hier ein Beispiel um die historischen Kurse der letzten 15 Tage am Handelsplatz "OTC" abzurufen:
security_service_client = TradingAPI_pb2_grpc.SecurityServiceStub(channel) securitycode = SecurityService_pb2.SecurityCode(code=code, code_type=code_type) stockexchange = StockExchangeService_pb2.StockExchange(id='OTC') security_with_stock_exchange = SecurityService_pb2.SecurityWithStockExchange( security_code=securitycode, stock_exchange=stockexchange ) security_price_history_request = SecurityService_pb2.SecurityPriceHistoryRequest( access_token=access_token, security_with_stockexchange=security_with_stock_exchange, days=15, time_resolution=time_resolution ) quote_data = security_service_client.GetSecurityPriceHistory(security_price_history_request) for day_data in request_data.price_entries: # Daten verarbeiten
hier ein Beispiel um die aktuellen Kurse am Handelsplatz "OTC" abzurufen:
security_service_client = TradingAPI_pb2_grpc.SecurityServiceStub(channel=channel) securitycode = SecurityService_pb2.SecurityCode(code=code, code_type=code_type) stockexchange = StockExchangeService_pb2.StockExchange(id='OTC') security_with_stock_exchange = SecurityService_pb2.SecurityWithStockExchange( security_code=securitycode, stock_exchange=stockexchange ) security_price_marketdata_request = SecurityService_pb2.SecurityMarketDataRequest( access_token=token, security_with_stockexchange=security_with_stock_exchange, currency='EUR' ) market_data = security_service_client.StreamMarketData(security_price_marketdata_request) for hist_data in market_data: # Daten verarbeiten
Bei den Marketdaten werden immer nur die Änderungen geschickt. Ändert sich z.B. nur das Bid-Volumen, werden auch nur diese Daten gesendet.
Wichtige Variablen-Definitionen, die Werte steht in der Datei "TradingTypes.proto":
# Werte für "code_type" NO_CODE_TYPE = 0 WKN = 1 ISIN = 2 ID_NOTATION = 3 ID_OSI = 4 ID_INSTRUMENT = 5 MNEMONIC = 6 MNEMONIC_US = 7 # Werte für "time_resolution" NO_RESOLUTION = 0 TICK = 1 SECOND = 2 MINUTE = 3 HOUR = 4 DAY = 5
Hier die Definition der Felder für die Marktdaten. Die Werte steht in der Datei "SecurityService.proto":
# Price of the last trade
last_price = 4
# Volume last trade
last_volume = 5
# Last quote date and time
last_date_time = 6
# Today number of tradings
today_num_trades = 7
# Today volume
today_volume = 8
# Last ask price
ask_price = 9
# Volume last ask
ask_volume = 10
# Time of the last ask
ask_time = 11
# Last bid price
bid_price = 12
# Volume last bid
bid_volume = 13
# Time of the last bid
bid_time = 14
# Quote of the previous trading day
previous_price = 15
# Date of the previous trading day
previous_date = 16
# Relative difference to the previous day
relative_diff = 17
# Absolute difference to the previous day
abs_diff = 18
# Highest price
high_price = 19
# Lowest price
low_price = 20
# Price at opening
open_price = 21
# Highest price of the previous week
week_high_price = 22
# Date of highest price of the previous week
date_week_high = 23
# Lowest price of the previous week
week_low_price = 24
# Date of lowest price of the previous week
date_week_low = 25
# Highest price of the previous month
month_high_price = 26
# Date of highest price of the previous month
date_month_high = 27
# Lowest price of the previous month
month_low_price = 28
# Date of lowest price of the previous month
date_month_low = 29
# Highest price of the current year
year_high_price = 30
# Date of the highest price of the current year
date_year_high = 31
# Lowest price of the current year
year_low_price = 32
# Date of the lowest price of the current year
date_year_low = 33
# Addendum of the last price.
last_addendum = 34
# Trading phase
trading_phase = 35
# Indicative price
indicative_price = 36
# Trading volume corresponding to the last price
prevalence_volume = 37
Ohne Anpassung der Buffergröße wird ein Abruf der historischen Intraday-Kurse über einen größeren Zeitraum eventuell nicht funktionieren. Damit man die Daten abrufenkann muss man den Buffer entsprechend vergrößern.
# Buffer auf 100 MB setzen channel = grpc.secure_channel( '{}:{}'.format(host, port), credentials, options=[('grpc.max_receive_message_length', 104857600)] )
Grüße
immermalanders
am 04.06.2020 15:15
am 04.06.2020 16:34
Wenn ich das halbwegs richtig verstehe:
Solange ich den Streamer nicht beende, (oder wie auch immer das korrekt formuliert wird) werden Änderungen in der For-Schleife verarbeitet.
Wie kann ich das beenden?
Kann ich innerhalb der For- Schleife ein "Logout" senden?
Oder hab' ich den Ablauf grundsätzlich nicht verstanden?
Meine Absicht ist den Kurs einmal abzufragen und dann soll mein Programm was anderes tun. Später je nach User-Eingabe mal wieder 'ne Abfrage - usw.
Gruß,
Stefan
am 04.06.2020 16:53
[...] Solange ich den Streamer nicht beende, (oder wie auch immer das korrekt formuliert wird) werden Änderungen in der For-Schleife verarbeitet. [...]
Richtig verstanden. Um den Streamer zu beenden reichte es, die Schleife per "break" zu verlassen.
am 09.06.2020 11:06
am 21.12.2020 13:46
Vielen Dank für das Beispiel! Funktioniert super.
Kann mir einer helfen, wie ich das Ergebnis der Kursabfrage (quote_data) in einen Pandas DataFrame bekommen?
Vielen Dank vorab.
am 22.12.2020 10:08
Vielen Dank für das Beispiel! Funktioniert super.
Kann mir jemand helfen, wie ich das Ergebnis der Kursabfrage (quote_data) in einen Pandas DataFrame bekomme?
Vielen Dank vorab.