[JAVA] Ich habe einen Arbitrage-Transaktionsbot für virtuelle Währungen erstellt und versucht, Geld zu verdienen

Einführung

Mit dem Ziel, Zinsen und geringes Geld zu verdienen, habe ich versucht, ein Arbitrage-Transaktionssystem (Arbitrage-System) für den Bitcoin-Austausch zu entwickeln. Es war interessant, verschiedene Ergebnisse zu erhalten, daher werde ich es als Ergebnis belassen.

Der Inhalt ist ziemlich alt (um 2017-2018), daher kann es verschiedene Änderungen geben, aber ich bin mir nicht sicher.

Was ist eine Arbitrage-Transaktion (Arbitrage)?

Es ist auch als "ohne Scheide" bekannt. Es ist eine finanziell historische Handelsmethode, und es scheint, dass sie als eines der drei wichtigsten Gewinngesetze der Welt zertifiziert wurde.

Was sind die drei wichtigsten Gewinnmethoden der Welt "Arbitrage"? Erklären Sie die Funktionen, den Mechanismus und wie Sie verdienen können!|Offizielle Medien von ABEYUTO (Yuto Abe)|Offizielle Medien von ABEYUTO (Yuto Abe)

Es ist eine Methode, die sicherlich einen Gewinn erzielen kann, indem sie eine Bestellung entgegennimmt, indem sie die Verzerrung in dem Moment durchbohrt, in dem eine gewisse Verzerrung auf dem Markt auftritt.

Verzerrung hat eine Vielzahl von Mustern

Da ist so etwas.

Dieses Mal habe ich ein Programm erstellt, das darauf abzielt, den Preisunterschied zwischen den Börsen zu verzerren.

Im Vergleich zu Aktien und historischen Finanzprodukten haben virtuelle Währungen weniger Funktionen an der Börse selbst (z. B. nicht verkaufen können). Es gibt auch einen Grund, warum dies in der Realität nur zwischen Börsen möglich ist, da die API des Austauschs ebenfalls zur Ausführung veröffentlicht werden muss.

Im Folgenden wird die Arbitrage-Transaktion als Abitra bezeichnet.

Wo wurde der Austausch verwendet und welche Methode gibt es?

Ich benutzte. Die spezifische Methode ist wie folgt.

Muster 1: Senden Sie Geld und verkaufen Sie nach dem Kauf

Dies ist das Muster, das ich zuerst ausprobiert habe: Kaufen an einer billigen Börse, Senden von Geld und Verkaufen an einer hohen Börse. ** Dieses Muster hat aus den unten beschriebenen Gründen nicht funktioniert. ** ** **

Zahlen Sie den gleichen Betrag an japanischem Yen in die Börse ein, um ihn als Vorbereitung zu verwenden.

image.png

Das Programm überwacht Preisinformationen und gibt Kaufaufträge mit dem günstigeren auf, sobald ein Unterschied zwischen den Börsen entsteht.

Beispiel)

1 BTC beträgt 1.000.000 Yen an Börse A. 1 BTC an Börse B beträgt 1.010.000 Yen (Preisdifferenz +10.000 Yen)

Kaufen Sie 0,1 BTC an Börse A, übertragen Sie auf Börse B und verkaufen Sie

image.png

** Dies wird sofort einen Gewinn von 1000 Yen generieren. ** ** **

Ich dachte, wenn ich so weitermache, könnte ich vollautomatisch verdienen, aber ...

Es wurde festgestellt, dass die Übertragung von Bitcoin langsamer war als erwartet ... Ich dachte, dass die Übertragung sofort nach dem Lesen eines Buches erfolgen würde, aber ich brauchte 30 Minuten oder ein paar Stunden, um sie zu sparen. Es ist bedeutungslos, es sei denn, die Transaktion wird während der momentanen Verzerrung abgeschlossen. Wenn dies ein XRP oder eine Währung mit einer schnellen Übertragungsgeschwindigkeit ist, kann dies gelöst werden.

Ich habe seitdem verschiedene Dinge ausprobiert, aber es gibt grundlegende Probleme bei der Einbeziehung der Überweisung in den Fluss.

1. 1. Der Geldbetrag zwischen den Konten ist aus dem Gleichgewicht geraten, sodass Sie ihn regelmäßig neu ausgleichen müssen.

Da das Geld von dem von Ihnen gekauften Konto gesendet wird, befindet sich auf einem bestimmten Konto weder japanischer Yen noch BTC. Da es schwierig ist, japanische Yen automatisch einzuzahlen, ist es notwendig, BTC regelmäßig von der überschüssigen Börse zu überweisen, aber die Logik dort ist kompliziert geworden.

2. Die Ablösesumme ist recht hoch und setzt die Gewinne unter Druck

Abhängig von der Börse ist die Überweisungsgebühr ziemlich hoch, nicht wahr? (Ich habe ein Bitcoin-Buch gelesen und dachte, dass die virtuelle Währung durch niedrige und schnelle Transaktionskosten gekennzeichnet ist, aber ...)

Ursprünglich ist die Arbitrage selbst ein Modell, das stetig kleine Gewinne ansammelt, so dass es ziemlich schmerzhaft ist, die Transaktionskosten für jede Transaktion zu erhöhen.

Wenn Sie dies versuchen, werden Sie nur unter Bedingungen handeln, die einen Gewinn erzielen, selbst wenn Sie die Überweisungsgebühr einbeziehen. Es gab jedoch das Problem, dass die Anzahl der Transaktionen erheblich reduziert würde.

3. 3. Nicht viele Börsen können die Geldtransfer-API mit diesem Mechanismus verwenden

Erstens ist die Überweisungs-API ziemlich sicher (dies ist natürlich, da dies zu einer illegalen Überweisung führt).

Die ersten paar Börsen könnten in Gabagaba durchgeführt werden, aber um die Anzahl der Börsen zu erhöhen, --Übertragen Sie einen Werktag, nachdem Sie die Überweisungs-API erreicht haben und erfolgreich waren

Es wurde etwas gefunden und es war wirklich hart.

Muster 2: Rebalance ohne Geld zu senden

Ich habe aufgegeben, weil es schwierig zu sein scheint, die Überweisung einzubeziehen.

Als ich mir die Preisinformationen der Börsen ansah, bemerkte ich, dass die billigen Börsen und die hohen Börsen zwar im Grunde genommen fest sind, es aber mehrmals am Tag Momente der Umkehr gibt. .. ** ** **

Geben Sie daher auf allen Konten den gleichen Betrag an japanischem Yen und BTC an.

--Bestellungen, um als Arbitrage Gewinn zu erzielen

Ich dachte, wenn ich innerhalb des Bereichs ausbalanciere, der nicht verliert, während ich Gewinne durch Teilen in nehme

    1. Ausgangszustand

image.png

  1. Preisunterschied tritt auf 1 BTC beträgt 1.000.000 Yen an Börse A. 1 BTC an Börse B beträgt 1.010.000 Yen (Preisdifferenz +10.000 Yen)

Kaufen Sie 0,1 BTC an Börse A, übertragen Sie auf Börse B und verkaufen Sie

image.png

    1. Rebalance

Wenn dies unverändert bleibt, kann BTC nicht in A gekauft und BTC nicht in B verkauft werden, was zu einer verpassten Gelegenheit führt. Wenn daher die Preise von A und B umgekehrt werden, wird die entgegengesetzte Bestellung aufgegeben (die Transaktionsgebühr muss ebenfalls berücksichtigt werden).

image.png

Im Gegensatz zu dem Modell, bei dem Sie zu einem günstigen Preis kaufen und zu einem hohen Preis verkaufen können, wenn der Preisunterschied vorerst auftritt Kaufen und Verkaufen = Das Guthaben geht verloren und es wird für eine Weile unmöglich, an einer bestimmten Börse zu kaufen und zu verkaufen

Also, um den Gewinn zu maximieren

--- Wenn es einen Unterschied im Yen gibt, geben Sie eine Bestellung auf, um Gewinn zu erzielen --- Wenn es einen Yen-Unterschied gibt, geben Sie einen Befehl zum Ausgleich

Es ist notwendig, den aufgerufenen Parameter sorgfältig abzustimmen.

Da es eine Zeit war, in der die Volatilität von Bitcoin selbst hoch war, führte ich häufige Wartungsarbeiten durch, während ich mir die Daten ansah.

Da es eine bestimmte Menge an BTC enthält, besteht auch immer das Risiko von Preisschwankungen.

War es doch profitabel?

Aufgrund des Preisanstiegs von BTC hat sich die Zahl im Vergleich zum Kapital erheblich erhöht. (Eigentlich war es weniger als die Figur, also geht es um die Tränen eines Spatzen, aber ...)

Unerwartet wurde es jedoch schwierig, die Parameter so einzustellen, dass die Gelegenheit und die Betriebskosten nicht verloren gingen, und ich war nicht motiviert und enttäuscht.

Es gibt auch viele Verhaltensweisen, die ich nicht für jeden Austausch gut verstehe. (Einige Börsen haben einen Betrag, der für einen Moment um 4 Uhr morgens weit vom Marktpreis entfernt ist ...)

Ich wollte denken, dass die Optimierung von Parametern in Kombination mit maschinellem Lernen ein interessanter Bereich wäre, aber das war nicht der Fall.

Wenn ich eine Chance habe, würde ich es gerne noch einmal versuchen.

Es ist rau, aber ich werde auch die Quelle hochladen. https://github.com/haruhiko-tano/arbitrage-bot

Recommended Posts

Ich habe einen Arbitrage-Transaktionsbot für virtuelle Währungen erstellt und versucht, Geld zu verdienen
[LINE @] Ich habe versucht, einen westlichen Kalender für einen japanischen Kalender zu konvertieren. BOT [Messaging API]
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Ich habe versucht, Java Optional und Guard-Klausel koexistieren zu lassen
Ich habe einen RESAS-API-Client in Java erstellt
Einfacher LINE BOT mit Java Servlet Teil 2: Ich habe versucht, Bildnachrichten und Vorlagen zu erstellen
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Wie erstelle ich einen Discord Bot (Java)
Ich habe versucht, ein übergeordnetes Wertklasseobjekt in Ruby zu erstellen
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
Ich habe versucht, eine Web-API zu erstellen, die mit Quarkus eine Verbindung zur Datenbank herstellt
Ich habe versucht, mit OpenTrip Planner und GTFS eine eigene Übertragungsanleitung zu erstellen
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Ich habe versucht, eine Anwendung für maschinelles Lernen mit Dash (+ Docker) Teil 1 ~ Umgebungskonstruktion und Funktionsprüfung ~ zu erstellen
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 3 ~ Übung ~ erstellt
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
[LINE @] Ich habe versucht, einen westlichen Kalender für einen japanischen Kalender zu konvertieren. BOT [Messaging API]
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, grafana und postgres [docker-compose] zu verknüpfen
Ich habe versucht, ein Personalmanagement-Tool zu entwickeln
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
Ich habe versucht, eine Website für das Studium von DUO3.0 zu entwickeln.
Ich habe versucht, mit Javafx ein einfaches Spiel zu machen ① "Lass uns Glücksspiel finden" (unvollendet)
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich habe versucht, eine LINE-Klon-App zu erstellen
Ich habe einen Docker-Container erstellt, um Maven auszuführen
Ich habe versucht, JavaFX und Spring Framework zu verknüpfen.
[Android] Ich habe mit ListView + Bottom Sheet einen Materiallistenbildschirm erstellt
Ich habe einen LINE Bot mit Rails + Heroku gemacht
[Kleine Geschichte] Ich habe versucht, die Java-ArrayList etwas komfortabler zu gestalten
Ich habe versucht, eine Website zu entwickeln, um Ausgaben zu erfassen.
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, den Block mit Java zu brechen (1)
Wir stellen vor, was ich gemacht habe, als ich RecyclerView eine Kopf- und Fußzeile hinzufügen wollte
Ich habe versucht, eine App zu erstellen, mit der Sie nach Genre posten und chatten können ~ Wo ich es schwer hatte ~
Ich habe versucht, ein Tool zum Vergleichen von Amazon-Produktpreisen auf der ganzen Welt mit Java, der Amazon Product Advertising API und der Currency API (29.01.2017) zu erstellen.
Ich habe versucht, mit Java und Spring eine Funktion / einen Bildschirm für den Administrator einer Einkaufsseite zu erstellen
Ich habe versucht, einen neuen Sortieralgorithmus zu erstellen, aber ich weiß nicht, ob er wirklich neu ist
Ich habe versucht, mit Wercker ein Docker-Image zu erstellen und zu veröffentlichen, mit dem GlassFish 5 gestartet wird
Ich habe versucht, eine Nachrichtenfunktion der Rails Tutorial-Erweiterung (Teil 1) zu erstellen: Erstellen Sie ein Modell
Ich habe versucht, CSV mit Outsystems zu lesen und auszugeben
Ich habe versucht, eine Ramen-Shop-Sharing-Website zu entwickeln.
Ich habe versucht, AWS I oT Button und Slack zu integrieren
[Ruby] Ich habe einen Crawler mit Anemone und Nokogiri gemacht.
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich habe im Frühjahr einen Restful-Server und -Client erstellt.
Ich habe versucht, C # zu kauen (Dateien lesen und schreiben)
Ich habe versucht, eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 3) zu erstellen: Ein Missverständnis der Spezifikationen wurde behoben
Ich habe versucht, die Beispielanwendung gemäß der Idee des Buches "Micro Service Architecture" in einen Mikrodienst zu verwandeln.
Ich habe versucht, eine Webanwendung aus anderthalb Monaten Programmier-Lerngeschichte zu entwickeln
[Rails 6.0, Docker] Ich habe versucht, die Konstruktion der Docker-Umgebung und die zum Erstellen eines Portfolios erforderlichen Befehle zusammenzufassen
Ich habe versucht, eine App zu erstellen, mit der Sie nach Genre posten und chatten können ~ Übersicht über die App ~
[Java] Ich habe versucht, ein Janken-Spiel zu erstellen, das Anfänger auf der Konsole ausführen können
Ich habe versucht, eine Nachrichtenfunktion für die Erweiterung Rails Tutorial (Teil 2) zu erstellen: Erstellen Sie einen Bildschirm zum Anzeigen
Ich habe versucht, innerhalb von 3 Monaten einen Antrag von unerfahren zu stellen