synthesix schreef op donderdag 16 januari 2014 @ 14:26:
[...]
Interessant, was hier zelf ook een beetje mee bezig de laatste tijd, maar dan kraken vs bitfinex, prijs is ongeveer hetzelfde, en op bitfinex kun je op margin handelen zodat je niet onnodige fiat hoeft aan te houden daar.
Maak jij het geld ook echt over of reverse je de trades als de verhouding weer door de eurusd koers heen is?
Ik maak het geld over, omdat er een vrij structureel prijsverschil is dat zelden andersom staat. Daarom is margin trading op Bitfinex ook niet interessant voor dit doeleinde, want ik moet de BTC weg kunnen halen. Bitfinex is ook voor het rondpomp-proces minder interessant dan Bitstamp (ondanks dat Bitfinex ook toegang geeft tot het Bitstamp orderboek), omdat Bitstamp binnen de SEPA zone ligt en dus deposits met een dagje gedaan zijn (behalve mijn meest recente, die duurde 2 dagen, GRRRR!

), terwijl Bitfinex in Hong Kong zit.
Ik doet dat laatste namelijk, en ik wil ook een bot bouwen, alleen ik ben nog niet helemaal uit over de implementatie. Ik hou de ratio een beetje bij met een r-scriptje, zowel stamp bid/kraken ask als stamp ask/kraken bid. Paar dingetjes waar ik over nagedacht heb, misschien dat je er iets aan hebt/een antwoord op hebt.
Het valt me op dat de middenkoers elke kwartier tot een paar uur vrij consequent 1 à 1,5% heen en weer kaggelt, overigens niet altijd rond de eurusd koers. Maar bij de binnenste koerslijnen, dus als je twee keer de spread betaalt, is het verschil tussen pieken en dalen amper meer dan 0,5%, omdat de spread ook vaak stijgt bij een prijsfluctuatie. En bovendien als je kijkt naar de (historisch) goede buy/sell momenten gebeurt het niet echt op voorspelbare niveau's, dus zeg maar als de pieken van de ask steeds rond de 1,35 liggen en de dalen van de bid rond de 1,335, heb je soms een dal van de ask op 1,336 en bid piek op 1,341 en vervolgens een dal van de ask op 1,34 en een piek van de bid op 1,345, bijvoorbeeld.
Ik hou eerlijk gezegd het verloop van het prijsverschil niet zo heel erg in de gaten. Ik heb een Mathematica-notebook waar ik een Bitstamp prijs in plug en die vertelt mij bij welke Kraken prijzen ik breakeven zou draaien. Zolang de prijs niet teveel fluctueert, krijg je er vanzelf wat gevoel voor en kan ik die schatting zelf ook maken. Heb 2 BitcoinWisdom tabs open staan, dus ik zie de koersen in de tab-bar van mijn browser. Daar kijk ik af en toe naar en veel diepgaandere analyses doe ik niet

Als de order dan op het ene platform gefilled wordt, sluit je hem meteen aan de andere kant. Alleen wat als de koers waarop je de limitorder gebaseerd had, niet meer beschikbaar is aan de andere kant? Op welke prijs sluit je dan de order?
Ten eerste moet je natuurlijk vaak het orderboek updaten en als de koers verkeerd beweegt je order annuleren. Bitcoin-markten lopen meestal niet zo supersnel dat je hiermee al vrijwel nooit verkeerd zit, verwacht ik. Daarnaast start ik alleen een trade als de te verwachten winst hoog genoeg is om een eventuele verkeerde koersbeweging op te vangen. Met handmatig handelen betekent dit dat de koers toch zeker 5 euro kan verschuiven zonder dat ik verlies oploop. Als de koers verandert direct nadat mijn eerste order uitgevoerd is, dan doe ik de tegen-order voor de op dat moment beste prijs om de positie direct te sluiten.
Als je handmatig handelt neem je onbewust heel veel info over de algehele marketcondities mee in je trades, maar ik merk dat het toch best wel lastig is dit in een bot te programmeren.
Mijn handel is juist onafhankelijk van marktcondities. Het is een simpele check of bij de huidige prijzen op Bitstamp en Kraken er winst te halen is. Dat kan als de boel omhoog gaat, dat kan bij een daling, of ook bij relatieve rust, al zijn de verschillen vaak groter als de koers erg volatiel is, vooral omdat Kraken vaak niet supersnel reageert.
Btw: als je voor java gaat kan ik je de
XChange library van harte aanraden. Uniforme api voor bijna alle exchanges die er zijn, en volgens mij vrij makkelijk te extenden. Voor R gebruik ik RBitcoin, kan ook handelen als het goed is, maar lijkt me niet echt een taal om een bot in te schrijven.
Bedankt voor de link, maar ik gebruik C#. En hoewel het schrijven van de code die met de exchange praat soms wat gedoe is met het uitpluizen van het juiste formaat om de requests te ondertekenen, parsen van de respons, enz... is dit toch vooral simpel grunt-werk. Het echte nadenk-werk zit hem in het opstellen van waterdichte trade-logica, waardoor je niet opeens tegen gigantische verliezen aankijkt omdat er een situatie op heeft getreden die je niet hebt voorzien.
Ik heb momenteel een werkende Bitstamp-interface voor de functies die ik nodig heb (orderboek opvragen, order plaatsen, orders checken, order annuleren) en met de Kraken API kan ik inmiddels praten, maar daar moet ik de benodigde requests nog implementeren. Daarna komt het leuk werk