Alle serieuze crypto-currency-exchanges bieden de mogelijkheid om de exchange programmatisch te benaderen met behulp van een API. Dit biedt een boel extra mogelijkheden die je niet hebt als je enkel de website gebruikt om te handelen. Denk hierbij aan:
Private functies zijn functies die specifiek voor een bepaald account iets doen. Denk aan het opvragen van openstaande orders, het plaatsen van een nieuwe order of het over laten boeken van een deel van het saldo. Ter beveiliging heb je voor deze functies een account-specifiek API-keypair nodig, bestaande uit een API-key en een bijbehorende API-secret.
Voor een private functie construeer je een HTTP-POST opdracht, met daarin de parameters van je verzoek, de API-key en vaak een nonce (een nummer dat bij iedere volgende aanroep groter moet zijn dan alle eerdere waardes). Vervolgens signeer je deze opdracht middels een cryptografische hash-functie met je API-secret en plak je de signature bij het verzoek.
Iedere exchange gebruikt een andere manier om het POST verzoek op te stellen en ook het signeren van het bericht gebeurt anders, maar dit algemene idee wordt vrijwel overal toegepast.
Kraken: https://www.kraken.com/help/api
Bitstamp: https://www.bitstamp.net/api/
BTC-e: https://btc-e.com/api/documentation
Cryptsy: https://www.cryptsy.com/pages/api
De meeste exchanges bieden de mogelijkheid om per API-key aan te geven welke functies wel en niet beschikbaar zijn. Zorg dat je de API-key beperkt tot de functies die je voor jouw software nodig hebt. Daarnaast zijn er soms mogelijkheden tot een IP-adres-filter of een verloopdatum van de key.
De handels-functies van de API hebben vaak niet dezelfde "weet je het zeker?" beveiliging die de website wel heeft. Zorg dus dat je je code goed test voordat je orders aanmaakt, wijzigt of annuleert.
- Een koers-ticker zodat je op je blog naast posts over hoe fantastisch Bitcoin is direct de grafiek van de laatste flashcrash kunt laten zien.
- Een smartphone-app, zodat je ook on-the-road je gepatenteerde "buy high, sell low" strategie kunt uitvoeren.
- Een handels-bot, die 's nachts wanneer je slaapt je hele balans weghandelt.
- En nog veel meer...
Hoe werken de APIs?
Hoewel iedere exchange zijn eigen implementatie gebruikt, zijn de basisconcepten over het algemeen vrijwel gelijk. De API-functies zijn op te delen in publieke functies en private functies. De publieke functies zijn direct toegankelijk en bevatten algemene informatie zoals de laatste trades, het orderboek, enz... Publieke functies worden meestal aangeroepen met een HTTP-GET methode, waarna het resultaat in de vorm van een JSON string teruggegeven wordt.Private functies zijn functies die specifiek voor een bepaald account iets doen. Denk aan het opvragen van openstaande orders, het plaatsen van een nieuwe order of het over laten boeken van een deel van het saldo. Ter beveiliging heb je voor deze functies een account-specifiek API-keypair nodig, bestaande uit een API-key en een bijbehorende API-secret.
Voor een private functie construeer je een HTTP-POST opdracht, met daarin de parameters van je verzoek, de API-key en vaak een nonce (een nummer dat bij iedere volgende aanroep groter moet zijn dan alle eerdere waardes). Vervolgens signeer je deze opdracht middels een cryptografische hash-functie met je API-secret en plak je de signature bij het verzoek.
Iedere exchange gebruikt een andere manier om het POST verzoek op te stellen en ook het signeren van het bericht gebeurt anders, maar dit algemene idee wordt vrijwel overal toegepast.
Waar kan ik documentatie vinden?
Documentatie van de APIs is te vinden op de websites van de exchanges, vaak hebben ze hier een speciale pagina voor, maar anders staat het wellicht in de FAQ of bij de support-afdeling. Vaak wordt er ook verwezen naar voorbeeld-implementaties in een of meerdere talen, zodat je direct aan de slag kunt.Kraken: https://www.kraken.com/help/api
Bitstamp: https://www.bitstamp.net/api/
BTC-e: https://btc-e.com/api/documentation
Cryptsy: https://www.cryptsy.com/pages/api
Andere dingen om rekening mee te houden
Veel exchanges hebben een limiet op de frequentie waarmee je verzoeken op de API af mag sturen. Zorg dat je hier rekening mee houdt, want anders kun je een IP-ban aan de broek krijgen en als je een vast IP hebt, kan het dan lastig zijn om de exchange weer te benaderen.De meeste exchanges bieden de mogelijkheid om per API-key aan te geven welke functies wel en niet beschikbaar zijn. Zorg dat je de API-key beperkt tot de functies die je voor jouw software nodig hebt. Daarnaast zijn er soms mogelijkheden tot een IP-adres-filter of een verloopdatum van de key.
De handels-functies van de API hebben vaak niet dezelfde "weet je het zeker?" beveiliging die de website wel heeft. Zorg dus dat je je code goed test voordat je orders aanmaakt, wijzigt of annuleert.
Doel van dit topic
Het doel van dit topic is algemene discussie over de ontwikkeling van software voor crypto-exchanges, vraag-en-antwoord en het uitwisselen van ideeen.|| Vierkant voor Wiskunde ||