FAQ, Überblick und Einführung

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.