Die XML-API von BullionVault
Zusammenfassung
Es gibt zwei Schnittstellen zum BullionVault-System: Die normale GUI-Schnittstelle für Benutzer und eine XML-Schnittstelle für Handelsroboter. Die XML-Schnittstelle wird zwar nicht als primärer BullionVault-Dienst betrachtet, kann jedoch dazu verwendet werden, die Entwicklung von Handelsrobotern erheblich zu vereinfachen.
Dieses Dokument beschreibt die XML-Schnittstelle und gibt Bot-Entwicklern ausreichend Informationen für den Einstieg. Es handelt sich weder um eine umfassende Anleitung noch enthält es Informationen zu Handelsstrategien.
Für wen ist dies gedacht?
Dieses Dokument richtet sich an Programmierer. Insbesondere sollte der Leser mit CGI und dem HTTP-Anfrage-/Antwortprotokoll sowie XML-Dateiformaten vertraut sein.
Disclaimer
Die XML-Schnittstelle wird ohne Mängelgewähr und ohne Support bereitgestellt. BullionVault selbst nutzt die Schnittstelle und hat daher ein großes Interesse an ihrer Genauigkeit und Stabilität. Dennoch übernimmt BullionVault keine Garantie für die Stabilität der Schnittstelle oder die Richtigkeit der bereitgestellten Informationen.
Der Handel birgt das Risiko finanzieller Verluste. Der automatisierte Handel birgt viele zusätzliche Risiken, darunter die Genauigkeit von Informationen, die Zuverlässigkeit von Verbindungen, die Reaktionsgeschwindigkeit des Systems usw. Durch die Nutzung der XML-API akzeptieren Sie alle damit verbundenen Risiken, einschließlich, aber nicht beschränkt auf finanzielle Verluste aus beliebigen Gründen.
BullionVault behält sich das Recht vor, Kunden, deren Roboter gegen die Nutzungsbedingungen verstoßen – z. B. durch übermäßige Nutzung von Systemressourcen –, Gebühren zu berechnen oder deren Konten zu sperren. Bitte nutzen Sie das System innerhalb angemessener Grenzen ab.
Überblick
Die BullionVault-API funktioniert ähnlich wie die normale GUI-Website. CGI-Parameter werden übermittelt und eine Antwort wird vom Server zurückgesendet. Der wesentliche Unterschied besteht darin, dass die Antwort im XML-Format statt im HTML-Format erfolgt. Daher sollte es für einen erfahrenen Programmierer relativ einfach sein, eine Schnittstelle zum System herzustellen und elektronisch zu handeln. Alle GUI-Seiten, die für den Handel erforderlich sind (z. B. der Markt-Viewer), haben XML-Entsprechungen. Die meisten Hilfeseiten, die für den Handel nicht erforderlich sind(z. B. Kontoauszüge und Kontoeinstellungen), haben keine XML-Entsprechung und müssen manuell verwendet werden.
Sicherheit
Bitte beachten Sie, dass unsere Webserver ein Sitzungscookie verwenden, um Ihre Anmeldesitzung zu verfolgen (JSESSIONID). Ihr Roboter muss Cookies ähnlich wie ein normaler Browser behandeln, da Ihre Anmeldung sonst ständig vergessen wird.
Bei der ersten Anfrage einer sicheren Seite über einen HTTPS-Client wird der Benutzer oder Bot vorübergehend zu einem Benutzernamen-/Passwort-Bildschirm weitergeleitet unter:
https://gold.bullionvault.de/secure/login.do
Die CGI-Parameter j_username und j_password dieses Bildschirms sind an folgende Adresse zu senden:
https://gold.bullionvault.de/secure/j_security_check
Der gesendete Body würde Folgendes enthalten:
j_username=XXX&j_password=YYY
Bei Erfolg ist der Benutzer dann angemeldet.
Nach erfolgreicher Anmeldung kann der Benutzer nun auf sichere Seiten zugreifen.
XML-API-Anfragen
Die XML-API deckt zur Zeit acht Diente ab:
- Marktüberblick
- Auftrag eingeben
- Auftrag löschen
- Guthaben einsehen
- Aufträge einsehen
- Einzelnen Auftrag einsehen
- Gewichtseinheit einsehen
- Gewichtseinheit ändern
Die Schnittstelle hierfür wird im Folgenden beschrieben.
Marketüberblick
URL: https://gold.bullionvault.de/secure/api/v2/view_market_xml.do
| CGI-Parameter | Beschreibung | Beispiel |
|---|---|---|
| considerationCurrency | Die Anzeige der Währung. Das kann USD, GBP, EUR oder blank für alle sein. | considerationCurrency=USD |
| securityId | Anzeig der Sicherheits-ID. Das kann eine beliebige gültige Sicherheits-ID sein, oder blank für alle. | securityId=AUXLN |
| quantity | Die Mindestmenge, die angezeigt werden soll. Ein Wert von 0,005 filtert alle Gebote/Angebote heraus, die kleiner als 5 Gramm sind. Verwenden Sie 0,001, um alle Gebote/Angebote anzuzeigen. | quantity=0.001 |
| marketWidth | Die maximale Anzahl der für jeden Markt zurückgegebenen Gebote und Angebote. Der Standardwert ist 1. | marketWidth=3 |
Beachten Sie, dass der Zugriff auf die View-Market-API über https://gold.bullionvault.de/secure/api/v2/view_market_xml.do erfolgen sollte (wofür Sie angemeldet sein müssen). Die Version für nicht angemeldete Benutzer (https://gold.bullionvault.de/view_market_xml.do) wird auf dem Server zwischengespeichert und ist nicht so aktuell wie die Version für angemeldete Benutzer.
Antwortbeispiel:
<envelope> <message type="MARKET_DEPTH_A" version="0.1"> <market> <pitches> <pitch securityId="AUXLN" considerationCurrency="USD"> <buyPrices> <price actionIndicator="B" quantity="0.1" limit="12510"/> <price actionIndicator="B" quantity="0.2" limit="12500"/> <price actionIndicator="B" quantity="0.1" limit="12490"/> </buyPrices> <sellPrices> <price actionIndicator="S" quantity="0.2" limit="12590"/> <price actionIndicator="S" quantity="0.1" limit="12600"/> <price actionIndicator="S" quantity="0.1" limit="12610"/> </sellPrices> </pitch> </pitches> </market> </message> </envelope>
Auftrag stornieren
URL: https://gold.bullionvault.de/secure/api/v2/cancel_order_xml.do
| CGI Parameter | Beschreibung | Beispiel |
|---|---|---|
| orderId | Die Auftragsnummer, die durch die Einrichtung eines Auftrags kreiert wird | orderId=12345 |
| confirmed | Bei Bots muss dieser Wert immer "true" sein | confirmed=true |
Beispielantwort:
<envelope> <message type="SINGLE_ORDER_A" version="0.1"> <order orderId="19223" clientTransRef="CLIENT119222" actionIndicator="B" securityId="AUXZU" considerationCurrency="USD" quantity="0.1" quantityMatched="0" totalConsideration="0" totalCommission="0" limit="12679" typeCode="TIL_CANCEL" orderTime="2017-09-18 08:06:15 UTC" goodUntil="" lastModified="2017-09-18 08:06:15 UTC" statusCode="CANCELLED" tradeType="ORDER_BOARD_TRADE" orderValue="1267.9"/> <cancellable/> </message> </envelope>
Auftrag platzieren
URL: https://gold.bullionvault.de/secure/api/v2/place_order_xml.do
| CGI Parameter | Beschreibung | Beispiel |
|---|---|---|
| actionIndicator | Ein B oder S für Kaufen (Gold mit Geld) oder Verkaufen (Geld durch Gold). | actionIndicator=S |
| considerationCurrency | Die gehandelte Währung. Es muss USD, GBP oder EUR sein. | considerationCurrency=USD |
| securityId | Die Sicherheits-ID des Handels. Es sollte eine gültige Sicherheits-ID sein. | securityId=AUXZU |
| Quantity | Die gehandelte Menge in Kilo. 1,234 ist 1 Kilo 234 Gramm. Es dürfen nicht mehr als drei Dezimalstellen gegeben sein. | quantity=1.234 |
| limit | Der Limitpreis des Gebots als Integer. | limit=13437 |
| typeCode | Entweder TIL_CANCEL (Permanent), TIL_TIME (Bis Datum), IMMEDIATE (Sofort ausführen) oder FILL_KILL (Alles oder nichts). | typeCode=TIL_TIME |
| clientTransRef | Ihre Referenznummer. Muss für dieses Konto eindeutig sein | clientTransRef=ABC12345 |
| confirmed | Für Bots muss dieser Wert immer "true" sein. | confirmed=true |
| goodUntil | Muss immer leer sein, es sei denn "typeCode" ist "TIL_TIME", wo ein Zeitstempel des Formats 'yyyy-MM-dd%20HH:mm%20UTC' angegeben sein muss. Die Zeitangabe sollte in UTC sein. | goodUntil=2005-06-02 09:15 |
Beispielantwort:
<envelope> <message type="PLACE_ORDER_A" version="0.1"> <order orderId="1080" clientTransRef="asdf" actionIndicator="B" securityId="AUXLN" considerationCurrency="USD" quantity="0.001" quantityMatched="0.001" totalConsideration="12.59" totalCommission="0.11" limit="13500" typeCode="TIL_CANCEL" orderTime="2005-06-02 14:14:24 UTC" goodUntil="" lastModified="2005-06-02 14:14:25 UTC" statusCode="DONE" tradeType="ORDER_BOARD_TRADE"/> </message> </envelope>
Saldo einsehen
URL: https://gold.bullionvault.de/secure/api/v2/view_balance_xml.do
| CGI-Parameter | Beschreibung | Beispiel |
|---|---|---|
| simple | Geben Sie an, ob eine einfache Saldoübersicht zurückgegeben werden soll, die Kundenpositionen enthält, jedoch keine ausstehenden Abrechnungsinformationen. Für die überwiegende Mehrheit der Bot-Benutzer sind diese zusätzlichen Informationen nicht erforderlich und belasten unsere Server zusätzlich. Es wird dringend empfohlen, simple=true zu übermitteln. | simple=true |
Beispielantwort:
<envelope> <message type="CLIENT_BALANCE_A" version="0.1"> <clientBalance> <clientPositions> <clientPosition securityId="AUXLN" available="3.026" total="3.026" classNarrative="GOLD" totalValuation="40578.66" valuationCurrency="USD"/> <clientPosition securityId="AUXNY" available="5" total="5" classNarrative="GOLD" totalValuation="67050" valuationCurrency="USD"/> <clientPosition securityId="AUXZU" available="3.983" total="3.983" classNarrative="GOLD" totalValuation="53412.03" valuationCurrency="USD"/> <clientPosition securityId="EUR" available="39983" total="39983" classNarrative="CURRENCY" totalValuation="49059.15" valuationCurrency="USD"/> <clientPosition securityId="GBP" available="24799.04" total="24799.04" classNarrative="CURRENCY" totalValuation="45084.66" valuationCurrency="USD"/> <clientPosition securityId="USD" available="49954.9" total="49954.9" classNarrative="CURRENCY" totalValuation="49954.9" valuationCurrency="USD"/> </clientPositions> <pendingSettlements> <pendingSettlement securityId="AUXZU" total="250.919" classNarrative="GOLD" totalValuation="3181652.92" valuationCurrency="USD"> <pendingTransfers> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_RCT" balance="200" dueDate="2012-10-18 00:00:00 UTC"valuation="2536000" valuationCurrency="USD"/> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_RCT" balance="50" dueDate="2012-10-18 00:00:00 UTC" valuation="634000" valuationCurrency="USD"/> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_RCT" balance="0.919" dueDate="2012-11-02 00:00:00 UTC" valuation="11652.92" valuationCurrency="USD"/> </pendingTransfers> </pendingSettlement> <pendingSettlement securityId="AUXLN" total="0.92" classNarrative="GOLD" totalValuation="11656.4" valuationCurrency="USD"> <pendingTransfers> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_RCT" balance="0.92" dueDate="2012-11-08 00:00:00 UTC" valuation="11656.4" valuationCurrency="USD"/> </pendingTransfers> </pendingSettlement> <pendingSettlement securityId="AGXLN" total="2.952" classNarrative="SILVER" totalValuation="37401.84" valuationCurrency="USD"> <pendingTransfers> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_RCT" balance="1" dueDate="2012-10-04 00:00:00 UTC" valuation="12670" valuationCurrency="USD"/> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_RCT" balance="1.032" dueDate="2012-10-10 00:00:00 UTC" valuation="13075.44" valuationCurrency="USD"/> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_RCT" balance="0.92" dueDate="2012-10-31 00:00:00 UTC" valuation="11656.4" valuationCurrency="USD"/> </pendingTransfers> </pendingSettlement> <pendingSettlement securityId="USD" total="-44851.52" classNarrative="CURRENCY" totalValuation="-44851.52" valuationCurrency="USD"> <pendingTransfers> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_EXP" balance="-13271.52" dueDate="2012-10-10 00:00:00 UTC" valuation="-13271.52" valuationCurrency="USD"/> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_EXP" balance="-20000" dueDate="2012-10-18 00:00:00 UTC" valuation="-20000" valuationCurrency="USD"/> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_EXP" balance="-11500" dueDate="2012-10-31 00:00:00 UTC" valuation="-11500" valuationCurrency="USD"/> <pendingTransfer type="CLIENT" lowestLedger="UNS_EXP" balance="-80" dueDate="" valuation="-80" valuationCurrency="USD"/> </pendingTransfers> </pendingSettlement> <pendingSettlement securityId="GBP" total="-98248.29" classNarrative="CURRENCY" totalValuation="-177829.4" valuationCurrency="USD"> <pendingTransfers> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_EXP" balance="-6430" dueDate="2012-10-04 00:00:00 UTC" valuation="-11638.3" valuationCurrency="USD"/> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_EXP" balance="-10000" dueDate="2012-10-18 00:00:00 UTC" valuation="-18100" valuationCurrency="USD"/> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_EXP" balance="-81818.29" dueDate="2012-11-02 00:00:00 UTC" valuation="-148091.1" valuationCurrency="USD"/> </pendingTransfers> </pendingSettlement> <pendingSettlement securityId="EUR" total="-14260" classNarrative="CURRENCY" totalValuation="-17283.12" valuationCurrency="USD"> <pendingTransfers> <pendingTransfer type="OFF_MARKET_TRADE" lowestLedger="UNS_EXP" balance="-14260" dueDate="2012-11-08 00:00:00 UTC" valuation="-17283.12" valuationCurrency="USD"/> </pendingTransfers> </pendingSettlement> </pendingSettlements> </clientBalance> </message> </envelope>
Aufträge einsehen
URL: https://gold.bullionvault.de/secure/api/v2/view_orders_xml.do
| CGI-Parameter | Beschreibung | Beispiel |
|---|---|---|
| securityId | Anzeige der Sicherheits-ID. Es kann irgendeine gültige Sicherheits-ID sein, oder für alle leergelassen sein. | securityId=AUXNY |
| considerationCurrency | Anzeige der Währung. Es kann USD, GBP, EUR angezeigt werden oder für alle leergelassen. | considerationCurrency=USD |
| Status | Filtert die Liste der zurückgegebenen Aufträge. Eine der Optionen OPEN (alle offenen Aufträge anzeigen), DEALT (alle Aufträge anzeigen, die abgewickelt wurden), OPEN_DEALT (offene + abgewickelte Aufträge), CLOSED (Aufträge, die jetzt geschlossen sind), REJECTED (Aufträge, die abgelehnt wurden) oder leer für alle. Es wird dringend empfohlen, dass Bot-Autoren nur den Status OPEN verwenden, da dieser speziell für die Verwendung durch Bots optimiert ist. Andere Aufträge sollten mit der Nachricht view_single_order angezeigt werden. | status=OPEN |
| fromDate | Optionaler Parameter zum Filtern der nicht offenen Aufträge, wobei nur diejenigen zurückgegeben werden, die vor dem angegebenen Datum erteilt wurden. Bitte beachten Sie: Die maximale Differenz zwischen fromDate und toDate beträgt 31 Tage. Datums-Parameter gelten nicht für offene Aufträge. | fromDate=20130921 |
| toDate | Optionaler Parameter zum Filtern der nicht offenen Aufträge, wobei nur diejenigen zurückgegeben werden, die vor dem angegebenen Datum erteilt wurden. Bitte beachten Sie: Die maximale Differenz zwischen fromDate und toDate beträgt 31 Tage. Datums-Parameter gelten nicht für offene Aufträge. | toDate=20130925 |
| page | Die Antwort zum Anzeigen von Bestellungen ist paginiert und beginnt bei Seite Null. Verwenden Sie diesen Parameter, um die Seite auszuwählen. | page=0 |
Beispielantwort:
<envelope> <message type="ORDERS_A" version="0.4" page="0" pageSize="20"> <orders clientId="******"> <order orderId="1080" clientTransRef="asdf" actionIndicator="B" securityId="AUXLN" considerationCurrency="USD" quantity="0.001" quantityMatched="0.001" totalConsideration="12.59" totalCommission="0.11" limit="13500" typeCode="TIL_CANCEL" orderTime="2005-06-02 14:14:24 UTC" goodUntil="" lastModified="2005-06-02 14:14:25 UTC" statusCode="DONE" tradeType="ORDER_BOARD_TRADE"/> <order orderId="1061" clientTransRef="050520115557474" actionIndicator="B" securityId="AUXNY" considerationCurrency="USD" quantity="0.002" quantityMatched="0.002" totalConsideration="26.8" totalCommission="0" limit="13400" typeCode="TIL_CANCEL" orderTime="2005-05-20 15:59:33 UTC" goodUntil="" lastModified="2005-05-20 15:59:45 UTC" statusCode="DONE" tradeType="ORDER_BOARD_TRADE"/> <order orderId="1041" clientTransRef="050520120214131" actionIndicator="B" securityId="AUXNY" considerationCurrency="USD" quantity="0.002" quantityMatched="0.002" totalConsideration="27" totalCommission="0" limit="13500" typeCode="TIL_CANCEL" orderTime="2005-05-20 12:02:16 UTC" goodUntil="" lastModified="2005-05-20 12:02:17 UTC" statusCode="DONE" tradeType="ORDER_BOARD_TRADE"/> <order orderId="1000" clientTransRef="abc123" actionIndicator="B" securityId="AUXLN" considerationCurrency="GBP" quantity="0.1" quantityMatched="0.025" totalConsideration="182.5" totalCommission="1.46" limit="7300" typeCode="TIL_CANCEL" orderTime="2005-05-19 09:21:21 UTC" goodUntil="" lastModified="2005-05-19 09:21:21 UTC" statusCode="CANCELLED" tradeType="ORDER_BOARD_TRADE"/> </orders> </message> </envelope>
Einzelnen Auftrag einsehen
URL: https://gold.bullionvault.de/secure/api/v2/view_single_order_xml.do
| CGI-Parameter | Beschreibung | Beispiel |
|---|---|---|
| orderId | Die Auftragsnummer, die durch die Platzierung des Auftrags per "place_order" kreiert wird. | orderId=1207516 |
| clientTransRef | Die Transaktionsnummer die bei der Anfrage "place_order" übermittelt wird (optional). | clientTransRef=BOTAUX20160905131249 |
Beispielantwort:
<envelope> <message type="SINGLE_ORDER_A" version="0.1"> <order orderId="1080" clientTransRef="asdf" actionIndicator="B" securityId="AUXLN" considerationCurrency="USD" quantity="0.001" quantityMatched="0.001" totalConsideration="12.59" totalCommission="0.11" limit="13500" typeCode="TIL_CANCEL" orderTime="2005-06-02 14:14:24 UTC" goodUntil="" lastModified="2005-06-02 14:14:25 UTC" statusCode="DONE" tradeType="ORDER_BOARD_TRADE"/> </message> </envelope>
Weitere Anmerkungen
Das Feld "statusCode" für Auftragsverarbeitung hat eines der folgenden Felder:
| Wert | Beschreibung |
|---|---|
| OPEN | Der Auftrag ist offen |
| DONE | Der Auftrag ist abgeschlossen |
| EXPIRED | Der Auftrag ist abgelaufen |
| CANCELLED | Der Auftrag wurde storniert |
| KILLED | Der Auftrag wurde nicht ausgeführt, weil er nicht bedient werden konnte |
| NOFUNDS | Der Aufgrund wurd aufgrund zu niedrigen Bargeldguthabens nicht ausgeführt |
| BADLIMIT | Der Auftrag wurde aufgrund eines zu hohen/zu niedrigen Limitpreises nicht durchgeführt |
| SILVER_RESTRICTED | Im Konto ist der Silberhandel deaktiviert |
| QUEUED | Der Auftrag ist in der Warteschlange für die Durchführung |
| AGIP_ENABLED | Der Verkauf ist nicht möglich, wenn Auto-Invest aktiviert ist. |
Das Feld "tradeType" für Auftragsverarbeitung hat einen der folgenden Werte: field:
| Wert | Beschreibung |
|---|---|
| ORDER_BOARD_TRADE | Der Auftrag wurde auf der Auftragsplattform platziert (Standardauftrag). |
| ORDER_AT_FIX | Auftrag zum Tagespreis |
| CLIENT_ORDER | Auftrag auf dem Spot-Markt |
Einstellungen zur Gewichtseinheit einsehen
URL: https://gold.bullionvault.de/secure/api/v2/view_weight_unit_xml.do
| CGI-Parameter | Beschreibung | Beispiel |
|---|---|---|
| n/a | n/a | n/a |
Beispielantworten:
<envelope> <message type="UNIT_OF_WEIGHT_SETTING" version="0.1"> <unitOfWeightSetting value="KG"/> </message> </envelope>
Einstellungen zur Gewichtseinheit ändern
URL: https://gold.bullionvault.de/secure/api/v2/update_weight_unit_xml.do
| CGI-Parameter | Beschreibung | Beispiel |
|---|---|---|
| newUnitOfWeight | Die präferierte Gewichtseinheit für das Konto. Entweder KG oder TOZ. | newUnitOfWeight=TOZ |
Wert für den Parameter "securityId"
| Sicherheits-ID | Edelmetall | Ort |
|---|---|---|
| AUXZU | Gold | Zürich |
| AUXLN | Gold | London |
| AUXNY | Gold | New York |
| AUXTR | Gold | Toronto |
| AUXSG | Gold | Singapur |
| AGXZU | Silber | Zürich |
| AGXLN | Silber | London |
| AGXTR | Silber | Toronto |
| AGXSG | Silber | Singapur |
| PTXLN | Platinu | London |
| PDXLN | Palladium | London |
Häufig gestellte Fragen
Q. Können Sie Feature X hinzufügen?
A. Möglicherweise. Die Entwicklung unserer XML-API ist im Moment aber keine Priorität
Schicken Sie bitte Empfehlungen an
xmlapi@BullionVault.com
.
Q. Wie aktuell sind die XML-Daten?
A. So aktuell wie die GUI-Daten. Beide werden aus derselben Quelle generiert. Nur die Darstellung unterscheidet sich.
Q. Gibt es einen öffentlichen Testserver?
A. Nein, aber falls es genügend Nachfrage gibt, werden wir dies überdenken. Bitte schicken Sie Empfehlungen an xmlapi@BullionVault.com
.
Q. Wann wird die API nicht verfügbar sein?
A. Dieses RSS-Feed gibt geplante Zeiten der Nichtverfügbarkeit bekannt.