Author

Topic: Eigener Bot, rechenaufgabe (Read 1445 times)

sr. member
Activity: 388
Merit: 250
February 23, 2017, 06:34:28 AM
#3
Hi,

Geh das Problem am Besten von der Anderen Seite an! Rechne Dir erst einmal aufgrund der minimale Orderhöhe der einzelnen Märkte eine Mindestorterhöhe in BTC aus, gib 3 mal die Spesen und 3 mal 1 Satoshi Rundungsdifferenz dazu.

Bei der Auswertung der Orderbücher nimm zur Berechnung der Arbitrage jenen Kurs, zu dem eine Order in der minimalen Orderhöhe sofort erfüllt wird. Nicht vergessen aufs Umrechnen auf die Coin des Orderbuches!

Nimm in der ersten Version des Bots die Orderhöhe als fix die so berechnete minimale Orderhöhe an.

Wenn eine wirkliche Arbitragesitiuation vorliegt, bist Du nicht der Einzige, der genau dieselben Orders an die Märkte sendet. Als Folge davon werden in der Regel nicht alle Orders erfüllt. Die wirklich schwierige Aufgabe besteht darin, in profitabler Weise mit den offenen Orders umzugehen.

Ich habe schon seit Längerem das Thema Arbitrage für mich beendet, bei 3 Börsen hatte ich spezielle Probleme: BTC-e stellt im API ein paar Sekunden alte Kopien der Orderbücher dar. BTer hat sporadisch "vermurkste" Orderbücher, bid mit ask vertauscht, und CEX.IO ignoriert API Calls, wenn das erlaubte Call Limit überschritten ist. (Das nur als Hinweis, eventuell haben Exchanges mittlerweile nachgebessert.)

Am Besten hat für mich damals Arbitrage über mehrere Exchanges funktioniert, das brauchst Du aber an jeder der betroffenen Exchanges genügend Coins, eventuell Transfer von Coins in den Bot mit einbauen, auf jeden Fall aber Arbitrage auch in die andere Richtung zulassen.

Je mehr Exchanges, je mehr Märkte und je größere Arbitrageringe Du zulässt, umso mehr Chancen auf Profit wird Dein Bot finden.

Viel Glück mit Deinem Projekt!

legendary
Activity: 1734
Merit: 1015
January 21, 2017, 07:50:38 PM
#2
wie ermittle ich nun am einfachsten die optimale menge in abhängigkeit vom kurs mit der ich den handel beginnen soll?
ich möchte ja von btc über ltc über usd zu btc wechseln, aber  z.b. keinen rest an ltc haben. versteht ihr was ich meine?

Ok immer der Reihe nach. Hört sich nach arbitrage an, deshalb werde ich davon mal ausgehen. Also eins nach dem anderen um nichts zu vergessen.

Erstmal ein paar Grundannahmen:
1. Wenn du, aufgrund der Kurse, gerade keinen Gewinn machen kannst, ist die optimale Menge null.
2. Die optimale Menge kann theoretisch höher als die dir zur Verfügung stehenden BTC sein, praktisch ist aber max. die Menge, die der Bot zur verfügung hat, möglich.

Ich habe es so verstanden, dass du BTC gegen LTC tauschen willst, dann LTC gegen USD und dann USD gegen BTC.
Für die Gewinnberechnung gilt dabei folgendes:

LTC = PRICEBTCLTC*(BTC-(BTCLTCFEE*BTC))
USD = PRICELTCUSD*(LTC-(LTCUSDFEE*LTC))
BTCnew = PRICEBTCUSD*(USD-(USDBTCFEE*USD))


Also gesamt: BTCnew = PRICEBTCUSD*(PRICELTCUSD*(PRICEBTCLTC*(BTC-(BTCLTCFEE*BTC))-(LTCUSDFEE*PRICEBTCLTC*(BTC-(BTCLTCFEE*BTC))))-(USDBTCFEE*PRICELTCUSD*(PRICEBTCLTC*(BTC-(BTCLTCFEE*BTC))-(LTCUSDFEE*PRICEBTCLTC*(BTC-(BTCLTCFEE*BTC))))))

Dabei ist BTC der Anfangsbestand an Bitcoins, der in die Arbitragekette fließt und BTCnew das, was am Ende der Kette heraus kommen soll. PRICE"Währung1Währung2" ist dabei der jeweilige Kurs. Hier auf jeden fall auf Invers-Tradingpaare achten. "Währung1Währung2FEE" ist dabei die Gebühr.

In deinem Problemfall stehen nun unterschiedliche Mengen der jeweiligen Währungen zum Kauf (bzw. Verkauf) und wenn ich dich richtig verstanden habe, dann möchtest du wissen, wieviel du in die Arbitragekette stecken sollst.
Grundsätzlich ist, sofern ein Gewinn gegeben ist, ein Handeln so lange sinnvoll, bis die Gewinnmarge null erreicht. Um die Komplette Arbitragekette auszuführen, muss jedes trading pair genug verfügbares Volumen zur Verfügung stellen. Die kleinste Verfügbarkeit repräsentiert also die maximale Handelsmenge. Dazu ist es am besten, alles in BTC umzurechnen (und zwar in die entgegengesetzte Richtung der Arbitragekette). Beachte, dass die Gebühren hierbei jeweils hinzukommen statt abgezogen zu werden, weil es in die andere Richtung geht.
So erhältst du letztendlich 4 BTC Werte. 3 von den Tradingpaaren und einmal deinen Anfangsbestand. Der Kleinste dieser Werte ist der optimale Wert für dein Vorhaben. Dieser kann theoretisch mehr als 8 Nachkommastellen haben. Daher solltest du dich mit den Rundungsregeln des Exchanges, den du nutzt, vertraut machen und diese berücksichtigen.

Ich hoffe, dass sich hier keine Fehler eingeschlichen haben. Wenn doch.... es ist schon spät und ich müde Tongue

newbie
Activity: 1
Merit: 0
January 21, 2017, 06:26:52 PM
#1
Hallo,
ich nutze bitcoins schon seit einiger zeit und möchte jetzt mal in den Handel mit ebendiesen einsteigen.
Dazu möchte ich mir einen eigenen Bot basteln, das klappt auch ganz gut API Requests etc. sind kein Problem,
allerdings weiß ich nicht wie ich ein mathematisches Problem lösen soll.
Wenn ich z.b. 3 Währungen / Währungspaare habe
(1paar) BTC/LTC -> (2paar) LTC/USD -> (3paar) USD/BTC
die in unterschidlichen mengen zum besten preis zur verfügung stehen.
1paar: 0.8btc
2paar: 26ltc
3paar: 0.4btc

wie ermittle ich nun am einfachsten die optimale menge in abhängigkeit vom kurs mit der ich den handel beginnen soll? Bei dem Punkt habe ich schon seit tagen ein brett vorm kopf.
ich möchte ja von btc über ltc über usd zu btc wechseln, aber  z.b. keinen rest an ltc haben. versteht ihr was ich meine?

ich habe es schon über eine schleife versucht, die in satoshi den startwert hochzählt und dann abbricht sobald in irgendeinem wertepaar das maximum erreicht ist. Das ist aber leider ziemlich langsam (dauert mehrere minuten)
da müsste es doch einen einfachen lösungsansatz geben...?

Hat jemand einen tipp wonach ich suchen könnte bzw wie man soetwas lösen kann?

Danke,

Schmaddy
Jump to: