Arbitragescripts voor cryptohandelbots

>

De volatiliteit van de cryptocurrency-markt maakt het een aantrekkelijke locatie voor arbitragehandel. De moeilijkheid om arbitrage-infrastructuur te bouwen, maakt het echter een omslachtig proces.

Koppeling met meerdere exchanges, toegang tot real-time websockets en uitvoering van de arbitragestrategie vereist allemaal connectiviteit met meerdere exchanges. Elke exchange is anders in de manier waarop ze hun API’s aanbieden, wat eenvoudige integraties voorkomt.

In dit artikel krijgt u een script om automatisch verbinding te maken met een van de meest populaire beurzen op de cryptomarkt. Met deze verbindingen heeft u toegang tot live prijsstromen waarmee we het begin van een arbitragestrategie kunnen opbouwen.

Hoewel we in dit artikel niet ingaan op de uitvoering van orders, is het uitvoeren van een transactie eenvoudig zodra de mogelijkheid is geïdentificeerd.

In onze recente blogposts vindt u tutorials over het uitvoeren van transacties, het verzamelen van informatie over de portfoliosaldo en meer:

  • Python-scripts voor cryptohandelbots [API Trading Tutorial]

  • De waarde van uw cryptoportfolio controleren

  • Een Python-script voor prijsgrafieken voor cryptocurrency

  • Automatisering van cryptoportfolio’s met handelsscripts

Laten we niet langer wachten – het is tijd voor arbitrage!

Wat is arbitrage?

In dit artikel behandelen we de details van arbitrage niet. Bezoek ons ​​vorige artikel voor meer informatie over wat arbitrage is hier.

Opstelling

Laten we direct in het script duiken, laten we beginnen met het opzetten van onze omgeving.

Installeer bibliotheken

Alles wat we nodig hebben, wordt geleverd door de Shrimpy API-bibliotheek voor ontwikkelaars. Voer de volgende opdracht uit om de python-bibliotheek te installeren:

pip installeer shrimpy-python

Verkrijg API-sleutels

Zodra de bibliotheek is geïnstalleerd, moeten we ons aanmelden voor een Shrimpy Developer API-account om onze API-sleutels te krijgen.

Genereer na het aanmelden uw Master API-sleutels door de knop te selecteren om nieuwe API-sleutels te genereren. Nadat deze sleutels zijn gemaakt, moet u ervoor zorgen dat de “Gegevens‘Toestemming op de sleutels, anders hebben we in latere stappen geen toegang tot de websockets. Als u met die sleutels wilt handelen, moet u inschakelen ALLE machtigingen voor de sleutels.

Bewaar uw sleutels voor latere stappen.

Krijg codering

De installatie is nu voltooid, dus laten we beginnen met coderen!

Invoer

Begin met het importeren van de Shrimpy-bibliotheek. Dit is de enige bibliotheek die we voor deze scripthandleiding moeten importeren.

importeer garnalen

Definieer uw berichtafhandelaars

Als er een bericht wordt ontvangen via de websocket, hebben we een handler nodig die bepaalt hoe de gegevens worden verwerkt.

Voordat we aan de leuke websocket-berichtverwerking beginnen, gaan we een handler maken die de fouten beheert die via de websocket terugkomen. Dit vereenvoudigt de manier waarop we onze fouten beheren.

def error_handler (err):

print (err)

Vervolgens is het tijd om onze belangrijkste berichtafhandelaar te maken. Deze handler ontvangt de websocket-updates en verwerkt deze vervolgens. Omdat we het hele script nog niet hebben doorlopen, zijn deze waarden misschien niet logisch, maar hier is een voorbeeldhandler.

exchanges_bbo = {}

def handler (msg):

bid_price = msg [‘content’] [‘biedingen’] [0] [‘prijs’]

ask_price = msg [‘inhoud’] [‘vraagt’] [0] [‘prijs’]

exchanges_bbo [msg [‘exchange’]] = {‘bid’: float (bid_price), ‘ask’: float (ask_price)}

best_bid = 0.0

best_ask = 10000000.0

best_bid_exchange = ”

best_ask_exchange = ”

voor sleutel, waarde in exchanges_bbo.items ():

als waarde [‘bod’] > best_bid:

best_bid = waarde [‘bod’]

best_bid_exchange = sleutel

if waarde [‘vragen’] < best_ask:

best_ask = waarde [‘vragen’]

best_ask_exchange = sleutel

als best_bid > best_ask:

afdrukken("doorverkopen " + best_bid_exchange + " voor " + str (best_bid))

afdrukken("kopen op " + best_ask_exchange + " voor " + str (best_ask))

anders:

afdrukken("Geen arbitrage beschikbaar"​

Hoewel het veel voelt, is het enige wat deze handler doet de updates van de websocket verzamelen, de beste bied- en laatprijs voor elke beurs opslaan en vervolgens de prijzen tussen beurzen vergelijken om te zien of er arbitragemogelijkheden zijn voor dat handelspaar..

“Exchanges_bbo” is waar we de beste bied- en laatprijs voor elke beurs opslaan. Wanneer we elk vinkje van de websocket ontvangen, worden de waarden in dat woordenboek bijgewerkt met de laatste prijzen voor elke uitwisseling.

Als het beste bod groter is dan de beste vraag, betekent dit dat er een arbitragemogelijkheid is. Wanneer dit gebeurt, zal het script afdrukken op welke beurs u moet verkopen en op welke beurs u moet kopen.

Opmerking: u kunt in de handler doen wat u wilt. Dit is slechts een voorbeeld. De gemakkelijkste handler zou zijn om elk bericht gewoon af te drukken zodra het binnenkomt, vergelijkbaar met de foutafhandelaar. Een meer complexe handler zou een stap verder gaan en de transacties uitvoeren op basis van de arbitragemogelijkheden.

Creatie van klanten

In de voorgaande stappen hebben we onze API-sleutels voor ontwikkelaars gemaakt voor de Shrimpy API’s. Deze sleutels kunnen nu worden toegewezen aan variabelen voor de openbare en privésleutels.

public_key = ‘6d73c2464a71b94a81aa7b13d …’

private_key = ‘e6238b0de3cdf19c7861f8e8f5d137ce7113ac1e884b191a14bbb2 …’

api_client = shrimpy.ShrimpyApiClient (public_key, private_key)

raw_token = api_client.get_token ()

client = shrimpy.ShrimpyWsClient (error_handler, raw_token [‘token’])

Om de restclient te maken, moeten we de openbare en privésleutels doorgeven. Deze client wordt vervolgens gebruikt om een ​​token voor de websocket-client aan te vragen.

Zodra het token is ontvangen, geeft u het eenvoudig door aan de constructor zodat de websocket-client de websocket-client kan maken.

Aansluiten

Voordat u zich abonneert op specifieke websocket-kanalen voor elk handelspaar, moet u verbinding maken met de websocket-stream. Dit vereist het gebruik van het eenmalige token dat u uit de vorige stap hebt opgehaald. Als u om wat voor reden dan ook een andere client moet maken, moet u opnieuw een token krijgen en deze doorgeven aan de clientconstructor.

client.connect ()

Let op: Tokens kunnen alleen worden gebruikt EEN KEER. Zodra de client is gemaakt met het token, moet u elke keer dat u een nieuwe client aanmaakt een nieuw token aanvragen. U NIET DOEN een token moeten aanvragen om te kunnen abonneren op websocket-kanalen. Enkel en alleen voor de clientverbinding.

Abonneren

Nu we verbonden zijn met de websocket, kunnen we ons abonneren op elk van de uitwisselingsparen die we willen gebruiken voor ons arbitragescript. Dit kan eenvoudig op de volgende manier worden gedaan.

exchanges = ["bittrex", "binance", "kucoin"​

paar = "btc-usdt"

voor uitwisseling in uitwisselingen:

subscribe_data = {

"type"​ "abonneren",

"uitwisseling": uitwisseling,

"paar-": paar,

"kanaal"​ "bbo" ​

client.subscribe (subscribe_data, handler)

Hiermee wordt abonnee op het BTC-USDT-paar voor Bittrex, Binance en KuCoin. Bij elk vinkje kunnen we zien of er arbitragemogelijkheden zijn op deze beurzen voor dit activapaar.

Opmerking: Shrimpy API’s bieden 100 websocket-abonnementen per client en maximaal 10 clients per IP-adres. Dat betekent dat u zich kunt abonneren op maximaal 1.000 handelsparen op de 17+ verschillende beurzen die we ondersteunen.

verbinding verbreken

Nadat u klaar bent met het verzamelen van gegevens, kunt u de verbinding verbreken met de volgende eenvoudige opdracht.

client.disconnect ()

Dat is het! Alles wat u moet weten om aan de slag te gaan met het opbouwen van uw arbitragegegevensstroom.

Alles in één script

Nu we het script stap voor stap hebben uitgesplitst, laten we eens kijken naar het hele meesterwerk. Hoe het eruit ziet als een enkel script dat we kunnen uitvoeren.

# importeer de Shrimpy-bibliotheek voor websockets voor crypto-uitwisselingen

importeer garnalen

# een voorbeeld van een foutafhandelaar, het drukt eenvoudig de inkomende fout af

def error_handler (err):

print (err)

exchanges_bbo = {}

# definieer de handler om de outputstroom te beheren

def handler (msg):

bid_price = msg [‘content’] [‘biedingen’] [0] [‘prijs’]

ask_price = msg [‘inhoud’] [‘vraagt’] [0] [‘prijs’]

exchanges_bbo [msg [‘exchange’]] = {‘bid’: float (bid_price), ‘ask’: float (ask_price)}

best_bid = 0.0

best_ask = 100000.0

best_bid_exchange = ”

best_ask_exchange = ”

voor sleutel, waarde in exchanges_bbo.items ():

als waarde [‘bod’] > best_bid:

best_bid = waarde [‘bod’]

best_bid_exchange = sleutel

if waarde [‘vragen’] < best_ask:

best_ask = waarde [‘vragen’]

best_ask_exchange = sleutel

als best_bid > best_ask:

afdrukken("doorverkopen " + best_bid_exchange + " voor " + str (best_bid))

afdrukken("kopen op " + best_ask_exchange + " voor " + str (best_ask))

anders:

afdrukken("Geen arbitrage beschikbaar"​

# voer uw openbare en privésleutel van Shrimpy in

public_key = ‘6d73c2464a71b94a81aa7b13d …’

private_key = ‘e6238b0de3cdf19c7861f8e8f5d137ce7113ac1e884b191a14bbb2 …’

# maak de Shrimpy websocket-client

api_client = shrimpy.ShrimpyApiClient (public_key, private_key)

raw_token = api_client.get_token ()

client = shrimpy.ShrimpyWsClient (error_handler, raw_token [‘token’])

# maak verbinding met de Shrimpy websocket en abonneer je

client.connect ()

# selecteer uitwisselingen voor arbitrage

exchanges = ["bittrex", "binance", "kucoin"​

paar = "btc-usdt"

# abonneer je op de websockets voor het gegeven paar bij elke uitwisseling

voor uitwisseling in uitwisselingen:

subscribe_data = {

"type"​ "abonneren",

"uitwisseling": uitwisseling,

"paar-": paar,

"kanaal"​ "bbo" ​

client.subscribe (subscribe_data, handler)

Als u dit script uitvoert, wordt onmiddellijk begonnen met het afdrukken van de arbitragemogelijkheden voor dit activapaar op de gespecificeerde beurzen.

Om de functionaliteit van dit script uit te breiden, zijn enkele opties voor de volgende stappen om te evalueren hoe u orders op de beurs kunt plaatsen, waarbij u van deze kansen kunt profiteren door te handelen.

Doel

Het doel van dit artikel is niet om een ​​volledig robuust algoritme voor arbitragehandel voor u te bouwen. Het is om u het begin te laten zien van iets dat u kunt uitbreiden en groeien. Er is veel ruimte voor verbetering.

Binnen een paar minuten is het mogelijk om geweldige functies te creëren met behulp van de Shrimpy-ontwikkelaars-API’s. In plaats van urenlang met uitwisselings-API’s te spelen, kunt u consistent gedrag krijgen bij elke belangrijke uitwisseling door te ontwikkelen met de Universele crypto-handels-API’s.

Bots verhandelen voor cryptocurrency

Ontwikkelaars kunnen deze eenvoudige scripts gebruiken als basis voor arbitrage-bots voor cryptocurrency. Door de activa voor arbitrage te selecteren, ontdekt u onmiddellijk marktkansen.

Makkelijker kan het niet.

Shrimpy integreert meer dan 17 verschillende uitwisselingen, waardoor het ontwikkelingsproces bij elke uitwisseling naadloos verloopt. Geen uniek gedrag of vreemde fouten. De consistentie is in het platform ingebouwd.

Lees meer over alles wat Shrimpy te bieden heeft door toetreden tot onze Telegram.

Volg deze links om toegang te krijgen tot de volledige Python- en Node-bibliotheken:

Knooppunt

Python

Bekijk enkele van onze nieuwste videozelfstudies over het bouwen van een cryptohandelbot!

Aarzel niet om contact op te nemen als u met ons team wilt delen wat u aan het bouwen bent!

Over Shrimpy

Garnaal leidt de markt als de belangrijkste applicatie voor portfoliobeheer. Gebruikers kunnen een aangepaste cryptoportfolio configureren en een passieve rebalancing-strategie implementeren, waardoor het gedoe van actief handelen in cryptovaluta wordt weggenomen.

Shrimpy webapplicatie: Shrimpy – Beheer van cryptocurrency-portfolio’s

Shrimpy’s Developer Trading API is een uniforme manier om handelsfunctionaliteit te integreren in elke grote beurs. Verzamel historische marktgegevens, krijg toegang tot realtime websockets, voer geavanceerde handelsstrategieën uit en beheer een onbeperkt aantal gebruikers.

Shrimpy Crypto Trading API: Garnaal | Crypto Trading API’s voor ontwikkelaars

Vergeet ons niet te volgen Twitter en Facebook voor updates en stel eventuele vragen aan onze geweldige, actieve community op Telegram.

Het Shrimpy-team

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me