am 18.11.2019 11:14
Hallo liebe Community,
es ist soweit: wir stellen ab sofort allen unseren Kunden das comdirect REST API zur Verfügung.
Was heißt das für euch?
Als Kunden von comdirect habt ihr die Möglichkeit, mit euren eigenen Software-Anwendungen
Weitere Informationen findet ihr unter developer.comdirect.de. Die Registrierung zur Nutzung des comdirect REST API ist dort ebenfalls verlinkt.
Fragen zur Integration des APIs in eure Software könnt ihr gerne hier diskutieren.
Viel Spaß beim Ausprobieren wünscht das comdirect API Team!
am 10.12.2019 10:41
Crazy Alex, schau Dir mal die Antwort von @A_J_L vom 10.12.2019 08:44 an.
Er erklärt dort, dass bei einer Kontaktaufnahme zu Json etwas stehen muss.
Es kann also sein, dass Dein Request durchaus ok war, und dass Du jetzt nur noch Daten mitliefern musst.
Falls das nicht klappt, dann liegt es doch an den headern, also der Art, wie Deine Kontaktaufnahme vom Programm deklariert wird. Dann musst Du nur danach suchen, wie Du die Header veränderst.
Wie genau Du das mit VBA machen kannst, kann ich Dir deswegen nicht sagen, weil ich hauptsächlich in PHP arbeite.
Nur Eines weiss ich - die sollte man als aller erstes deklarieren - sogar bevor eine Leerzeile geliefert wird,
weil ansonsten schon ein automatischer Header deklariert wird.
Im Grunde geht es für Dich darum Browser-headings zu simulieren, also zu sagen "hallo ich bin ein Firefox" oder Internet Explorer.
am 10.12.2019 11:52
@SMT_Jan-Ove schrieb:Daher darf der Body nicht (ganz) leer sein, sondern enthält einen leeren JSON-Body - sprich „{ }“.
@SMT_Jan-OveDanke, kaum wird einem das richtige gesagt, schon klappt es auch mit dem Löschen.
Die Gurus sollen mal bei @nmh nachfragen, der hat gute Lektoren 😉
am 10.12.2019 17:44
Nachdem es @Gurus nicht gibt dann eben @SMT_Jan-Ove ... naja, vielleicht können sich die Gurus ja einen Account hier anlegen. Hier brauchen sie auch kein Lektorat 😉
Was mir in dem API als Feature tatsächlich fehlt, ist bei der Orderaufgabe die Kurse der Livetrading-Partner zu bekommen. Ich müsste in der Theorie für jeden Partner orders/quoteticket - dann nochmal mit TAN - und dann noch v3/quotes machen, um die Kurse zu bekommen. Sehr umständlich. Warum geht bei diesen 2 Endpoints nicht ein "venues":[{"venueId": ...},{"venueId": ...}] wo man sich dann für /v3/orders/validation eben eine von aussucht?
Wäre tatsächlich sehr hilfreich!
am 10.12.2019 17:50
Hallo @A_J_L,
ich leite deine Frage mal an die Kollegen weiter und melde mich wieder mit der Antwort. 🙂
Beste Grüße
Philipp
am 10.12.2019 18:32
Wenn Du schon dabei bist, stimmt entweder in der Doku oder in der Implementation folgendes auch nicht beim Erstellen einer Order (/brokerage/v3/orders)
Ich schicke rein:
=>SDAT { "depotId": "abc", "side": "SELL", "instrumentId": "DE000LS9PGR4", "orderType": "STOP_MARKET", "quantity": {"value":"123","unit":"XXX"}, "venueId": "3053FBD1995146598833F23B03301815", "quoteId":"DEF", "quoteTicketId":"GHI" , "triggerLimit": {"value":"xx.yy", "unit": "EUR"}, "validityType":"GTD", "validity":"2020-05-18" }
also GoodTillDate
Die Order die ich zurück bekomme (und so zeigt es auch das Orderbuch an)
"validityType":"GFD"
also Good For Day.
Doku auf Seite 48 sagt, ich soll genau das reinschicken.
Danke fürs Weiterleiten!
am 10.12.2019 18:41
Nachtrag @SMT_Philipp
Also, der 18.05.2020 wäre wohl länger als 3 Monate weg, also kann das nicht gehen. Da sollte dann das API aber eine Fehlermeldung werfen, was es nicht tut.
Ich habe dann noch den 18.2.2020 probiert (also ❤️ Monate), aber, selbes Problem.
am 11.12.2019 09:31
Hallo @A_J_L,
anbei die Antwort unserer Kollegen. 🙂
<<Was mir in dem API als Feature tatsächlich fehlt, ist bei der Orderaufgabe die Kurse der Livetrading-Partner zu bekommen. Ich müsste in der Theorie für jeden Partner orders/quoteticket - dann nochmal mit TAN - und dann noch v3/quotes machen, um die Kurse zu bekommen. >>
Wir stellen derzeit keine Kursversorgungs-API zur Verfügung. Der Aufruf der beschriebenen Schnittstelle darf nur erfolgen, wenn man ein konkretes „Angebot“ eines Emittenten erhalten möchte.
<<{ "depotId": "abc", "side": "SELL", "instrumentId": "DE000LS9PGR4", "orderType": "STOP_MARKET", "quantity": {"value":"123","unit":"XXX"}, "venueId": "3053FBD1995146598833F23B03301815", "quoteId":"DEF", "quoteTicketId":"GHI" , "triggerLimit": {"value":"xx.yy", "unit": "EUR"}, "validityType":"GTD", "validity":"2020-05-18" }>>
Da sich das Problem noch nicht ganz aus dem Geschriebenen ableitet, beschreibe ich ein paar Dinge, die zu beachten sind. Bitte prüfe diese und gib Feedback, ob einer der Punkte bei dir zutreffend ist:
Die Validierung der im Body angegebenen Order-Parameter erfolgt durch die Validation-Schnittstelle. Sobald die challenge-id erzeugt und an die v3/orders-Schnittstelle übergeben wurde, werden Änderungen am Body (an der Order) ignoriert.
Im Beispiel-Code oben ist die Zusammensetzung der Felder nicht korrekt, da die Felder quoteTicketId und quoteId nicht zum Ordertypen „STOP_MARKET“ passen. Das Hinzufügen der beiden Felder ist aber im Prinzip egal, da nur geprüft wird, ob die für die STOP_MARKET-Order benötigten Felder vorhanden sind.
Generell gilt, dass nur für eine Order vom Typ „QUOTE“ die drei Quote-Schnittstellen zuvor ausgeführt werden müssen.
<<Also, der 18.05.2020 wäre wohl länger als 3 Monate weg, also kann das nicht gehen. Da sollte dann das API aber eine Fehlermeldung werfen, was es nicht tut.>>
Bei der Validation wird auch die Validity gemäß Handelsplatz geprüft. Eine Fehlermeldung gibt dann entsprechend an, wenn sie falsch gesetzt ist.
Welchen Prozess wolltest du denn mit dem Request oben abbilden? Wenn du eine außerbörsliche Limit-Order aufgeben möchtest, kannst du dich an Kapitel 9.2.2 orientieren. Als Handelsplatz wählst du dann einen der Handelsplätze vom Typ „OFF“ (siehe Dimensions-Schnittstelle). Auch hierfür ist die Durchführung der drei Quote-Schnittstellen nicht notwendig.
Ich hoffe das hilft dir weiter. Wenn nicht, konkretisiere das Problem gerne noch einmal. 🙂
Beste Grüße
Jan-Ove
am 11.12.2019 10:28
@Crazyalex schrieb:
Einen JSON-Konverter für Excel von dem ich nicht weiß wie ich ihn bedienen muss hab ich auch schon mal gefunden...
Der Weg ist weiterhin verdammt steinig und weit!
Warum willst du denn das alles "zu Fuß" machen, statt eine fertige (und getestete) Library zu nehmen?
11.12.2019 10:35 - bearbeitet 11.12.2019 10:37
11.12.2019 10:35 - bearbeitet 11.12.2019 10:37
Hallo @SMT_Jan-Ove ,
und hier zurück an die Kollegen:
Also, ich habe keine Probleme eine Order aufzugeben, das klappt wunderbar, der Flow ist mir bewusst, ich mache ihn auch so und Alles gut. Ich probiere es nochmal mit den 2 Punkten, ein Wunsch und ein Bugreport:
1. Wunsch Kurse
Also, ich will eine Aktie kaufen. Im Livetrading auf der Seite kann ich auf "Handelspartner - Kurse anzeigen gehen" und sehe bei allen "OFF" - venues den aktuellen Kurs. Das möchte ich auch im API erreichen, es geht da nicht um eine Live-Kursversorgung sondern die Info, wie die Kurse an den LT Handelplätzen sind. Deswegen mein Vorschlag/Wunsch, dass man bei /v3/quotes eben mehr als eine Venue reinschicken kann, um den Handelsplatz mit dem besten Preis identifizieren zu können.
2. Fehler kein GTD möglich
In dem Beispiel oben wollte ich einen Stop-Loss gültig bis 28.2.2020 über LT Lang&Schwarz aufgeben. Die venue kann das, wenn ich das manuell auf der Website mache, das kann nicht das Problem sein und es kommt keine Fehlermeldung.
Obwohl ich in Allen Schritten von Punkt 9.1. immer >>"validityType":"GTD", "validity":"2020-02-29"<< mitschicke, wird dies ignoriert und ich bekomme eine Tagesgültige Order aufgegeben >>"validityType":"GFD"<<. Das ist mein Problem.
Danke für Eure Hilfe!
am 11.12.2019 11:45
Moin @A_J_L,
danke für deine Rückmeldung. Wir haben uns das hier einmal angesehen.
Zu 2.:
Bitte orientiere dich für eine Stop Loss Order (unabhängig ob über die Börse oder einen LiveTrading Partner) an dem Kapitel 9.2.
Das Kapitel 9.1. bezieht sich lediglich auf die Quote Order, gleichzusetzen mit dem LiveTrading ohne Limit im Web. Das von dir angesprochene LiveTrading mit Limit ist in der API-Welt eine „normale“ Order, die als venueId einen LiveTrading-Handelspartner erhält. Wenn du also die grundsätzliche Order Validation (Kapitel 7.1.5) durchführst und diese dann später ausführst (Kapitel 7.1.7), sollte auch deine Ordergültigkeit nicht überschrieben werden.
Bei einer Quote-Order wird die Angabe der Validity ignoriert, da die Order ohnehin nur wenige Sekunden gültig ist. Im Response wird dann als Validity GFD zurückgegeben.
Zu 1.:
Wir verstehen was du meinst; das ist aber leider in der jetzigen Form nicht abbildbar. Vielleicht kommt zu einem späteren Zeitpunkt etwas, was dir hilft. Entweder das, oder unserem Wahrsager droht dasselbe Schicksal wie unserem Lektor.
Beste Grüße
Jan-Ove