Bitcoin Forum

Local => Trading und Spekulation => Topic started by: kalkulatorix on October 09, 2014, 07:57:17 PM



Title: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 09, 2014, 07:57:17 PM
Ich wollte nur einmal anfragen, ob hier ein Interesse an einem Tagebuch mit regelmäßigen Updates, besteht. Das Zeit dabei ist, Neueinsteigern einen realistischen Ausblick zu geben, welche Probleme und welcher Ertrag zu erwarten ist, wenn man sich die Mühe machen möchte, selbst einen Handelbots zu programmieren, diese laufen zu lassen und zu betreuen.

Ich möchte dabei niemanden Ermutigen, irgendetwas zu tun, oder auch bleiben zu lassen, sondern nur einen realistischen Ausblick, jeder kann dann selbst ein Bild davon machen, ob er damit zurechtkommt, und sich der Aufwand an Zeit und Nerven überhaupt lohnt.

Die erwähnten % Zahlen sind authentisch, allerdings kann ich nicht herausfinden (außer bei krasser Fehlfunktion), welcher Bot welchen Anteil an dem Zuwachs hat. Absolute Zahlen sind um einen fixen, aber geheimen Faktor verfälscht.  Die Sourcecodes der Bots werden nicht veröffentlicht, ohne richtige Wartung und Einstellungen funktionieren sie sowieso nicht. Die Auswertungen beschränken sich auf Bots, die auf CEX.IO laufen, wegen Zeitmangel und Übersicht.

An Bots kommen zum Einsatz:

1.) Antizyklisches Handeln auf CEX.IO
2.) Dreiecksarbitrage auf CEX.IO
3.) Arbitrage im BTC/LTC Markt zwischen CEX.IO und BTCe mit manuellen BTC und LTC Transfers.

Interessiert das irgendjemanden? Falls die Zustimmung überwiegt, werde ich am Sonntag damit starten.





Title: Re: Tagebuch eines Bot Entwicklers
Post by: Toolhead on October 09, 2014, 08:00:07 PM
Hier! Hier! Hier! ;D


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Zottelfritz on October 09, 2014, 08:10:34 PM
Mich interessiert auf jeden Fall zu sehen was ein Bot so kann, aber du sagst man kann dann die einzelnen Bots nicht auseinander halten?  :-[ Wie viele Bots laufen denn dann gleichzeitig?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: JohnD on October 09, 2014, 08:15:33 PM
Bin sehr interessiert.  Hab das selber schon mal versucht aber letztendlich aus Zeitmangel aufgegeben.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: LOBSTER on October 09, 2014, 08:35:07 PM
Würde mich ebenso über einen Bericht freuen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kneim on October 09, 2014, 08:37:33 PM
Es ist erst mal bedenklich, mehrere Bots auf einer Plattform parallel laufen zu lassen, weil man die Erfolge schlecht auseinander halten kann. Ich kann mir jedoch vorstellen, dass sich Arbitrage-Bots und ein antizyklischer Bot ergänzen, und nicht behindern. Der antizyklische Bot ist für die großen Kursbewegungen, sollte Übertreibungen mit Rückschlagpotential erkennen. Und was der Arbitrage-Bot macht, wisst ihr ja, der gleicht einfach Differenzen aus.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 09, 2014, 09:18:56 PM
Mich interessiert auf jeden Fall zu sehen was ein Bot so kann, aber du sagst man kann dann die einzelnen Bots nicht auseinander halten?  :-[ Wie viele Bots laufen denn dann gleichzeitig?
Es laufen 3 gleichzeitig. Antizyklisches Handeln auf CEX.IO, Dreiecksarbitrage auf CEX.IO und Interexchange Arbitrage zwischen CEX.IO und BTCe im TLC/BTC Markt. Auseinanderhalten kann ich die Bots schon, nur teile ich den Ertrag nicht auf.

Das Problem dabei sind die Legs der Arbitrage, die im Markt stehenbleiben. Die Arbitragebots kümmern sich nicht um offene Orders. Irgendwann werden sie doch gematched, dauert manchmal einige Monate. Ich kann nur vom Bot ausrechnen lassen, wie der Anstieg der Coins durch die einzelnen Bots ist, unter der Annahme die Lags wären alle erfüllt.

Da wäre dann die Rechnung so: Gesamtertrag - Ertrag von den 3erArbitrage - Ertrag von InterExchange = Ertrag von Antizyklus Bot

Da der Antizyklus Bot aktuelle Positionen und offene Orders mit dem Kurs umrechnet, der aktuell am Markt erhältlich ist, stellt das keinen Nachteil für den Ertrag des Antizyklus Bot dar.

Ist eine Darstellung in der Form:

BTCLTCUSDDRKDOGEWert USDWert EURWert BTCÄnderung lt. Zuwachsformel
Stand Beginn 123  BTC123 LTC123 USD123 DRK123 DOGE123 USD123 EUR123 BTC
Ertrag 3EckArb 123  BTC123 LTC123 USD123 DRK123 DOGE123 USD123 EUR123 BTC 345 %
Ertrag 3EckArb % 345 %345 %345 %345 %345 %
Ertrag 3InterArb 123  BTC123 LTC123 USD123 DRK123 DOGE123 USD123 EUR123 BTC 345 %
Ertrag 3InterArb % 345 %345 %345 %345 %345 %
Ertrag Antizyklus 123  BTC123 LTC123 USD123 DRK123 DOGE123 USD123 EUR123 BTC 345 %
Ertrag Antizyklus % 345 %345 %345 %345 %345 %
Stand Ende 123  BTC123 LTC123 USD123 DRK123 DOGE123 USD123 EUR123 BTC
Ertrag Gesamt 123  BTC123 LTC123 USD123 DRK123 DOGE123 USD123 EUR123 BTC 345 %
Ertrag Gesamt % 345 %345 %345 %345 %345 %

ausreichend?

Bitte um Geduld, bis ich die Tabelle fertig habe.....
Endlich fertig, aber schön würde ich das Ergebnis nicht nennen...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 09, 2014, 09:47:20 PM
Es ist erst mal bedenklich, mehrere Bots auf einer Plattform parallel laufen zu lassen, weil man die Erfolge schlecht auseinander halten kann. Ich kann mir jedoch vorstellen, dass sich Arbitrage-Bots und ein antizyklischer Bot ergänzen, und nicht behindern. Der antizyklische Bot ist für die großen Kursbewegungen, sollte Übertreibungen mit Rückschlagpotential erkennen. Und was der Arbitrage-Bot macht, wisst ihr ja, der gleicht einfach Differenzen aus.
Stimmt. Die Arbitragebots und der antizyklische Bot ergänzen sich. So kann man die Coins mehr "arbeiten" lassen, die Arbitrage kurzfristig und das antizyklische langfristig. Ich muss nur aufpassen, dass die Arbitragebots nicht zu viele offene Orders lassen, und ggf einzelne Arbitragemöglichkeiten deaktivieren.

Die Erfolge der einzelnen Bots kann ich so nicht auseinanderhalten, da müssen die Bots ihre Einzelergebnisse auswerfen ich manuell zusammenführen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 09, 2014, 10:10:39 PM
Bei mir nutzen die Bots unterschiedliche Accounts?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 09, 2014, 11:25:34 PM
Bei mir nutzen die Bots unterschiedliche Accounts?
Das ist eine saubere Lösung, allerdings brauchst Du dann auf allen Accounts genügend Coins für die jeweilige Strategie. Nach Mt. Gox. habe ich immer nur so viel auf der Exchange wie unbedingt nötig.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 10, 2014, 09:12:59 AM
Auf jeden Fall bin ich an Deinem Tagebuch interessiert. Schreib ja selbst Bots und kann da evtl was lernen? ;D


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on October 10, 2014, 02:07:56 PM
ich wäre vorallem am tatsächlichen Aufwand interessiert.  Also was alles schief gehen kann, worauf man achten sollte und solche Geschichte. Würde nämlich auch gerne einen Bot haben, bin deswegen stark dran interessiert, worauf man da so achten muss.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 10, 2014, 11:43:21 PM
So, start des Logbuches.

Gewichtung ist 40% BTC, 20% LTC,  20% USD, 8% DRK, 8% DOGE, 4% FTC

Anfangsstand

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EUR
Stand Beginn0.1967458.93366.12265022427135.240.484085174.58138.27

Der 3EcksArbitragebot und der Antizyklusbot sind gestartet. Der InterExchangeArbitragebot ist abgeschaltet.

Am Abend waren 4 Stunden Programmierung, Test und Debugging notwendig, da immer wieder die Fehlermeldung "Rate limit exceeded" aufgetreten ist. Die Beseitigung dieser Fehlermeldung hatte ich schon lange geplant, jetzt war endlich Zeit dafür.
CEX.IO erlaubt nur 600 Aufrufe in 600 Sekunden, habe in den 3EcksArbitragebot eine "Bremse" eingebaut, die nach rund 600 Aufrufen eine entsprechend lange Pause macht. Der Bot arbeitet ca. 3 Minuten und muss dann etwas 7 Minuten ruhen. Dadurch sind die Fehlermeldungen endlich weg.

Allerdings kann ich dann nicht wie geplant den InterExchangeArbitragebot gleichzeitig starten. Da der InterExchangeArbitragebot ohnehin immer wieder einen manuellen Eingriff braucht (die APIs von CEX.IO und BTCe unterstützen kein withdraw von coins) ist der Schaden nicht so hoch.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: hmc_b on October 11, 2014, 10:52:32 AM
In welcher Sprache sind die bots? Welche libs werden benutzt?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 11, 2014, 11:52:03 AM
In welcher Sprache sind die bots? Welche libs werden benutzt?
Die Bots sind PHP Scripts. Da habe ich jeweils das API Interface der jeweiligen Börse genommen, und dabei nur die Fehlerbehandlung modifiziert.
Über dieses API ist dann eine generische API gekapselt, die eine einheitliche Schnittstelle für alle Exchanges zur Verfügung stellt.
Darüber liegt das Script für die Strategie.
On Top das Mainscript für die jeweilige Exchange. Hier sind aber nur die Parameter für die Strategie und ein Main Loop implementiert.

Verforlge ich als 2 Strategien an 3 Exchanges braucht es:

3 API Scripts der Börse
1 generisches API
2 Strategie Scripts
6 ( = 3 * 2 ) Mainscripts

Ist zwar optisch nicht der Brüller, 6 schwarzes Textfenster. Output der Bots wird in je eine Textdatei umgeleitet.

PHP habe ich gewählt, da für jede Exchange ein PHP API verfügbar ist. Es ist für PHP keine Lib nötig, die JSON und SHA Funktionen sind, zumindest in der aktuellen XAMPP Distribution mit dabei.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 11, 2014, 03:25:40 PM
In welcher Sprache sind die bots? Welche libs werden benutzt?
Die Bots sind PHP Scripts. Da habe ich jeweils das API Interface der jeweiligen Börse genommen, und dabei nur die Fehlerbehandlung modifiziert.
Über dieses API ist dann eine generische API gekapselt, die eine einheitliche Schnittstelle für alle Exchanges zur Verfügung stellt.
Darüber liegt das Script für die Strategie.
On Top das Mainscript für die jeweilige Exchange. Hier sind aber nur die Parameter für die Strategie und ein Main Loop implementiert.

Verforlge ich als 2 Strategien an 3 Exchanges braucht es:

3 API Scripts der Börse
1 generisches API
2 Strategie Scripts
6 ( = 3 * 2 ) Mainscripts

Ist zwar optisch nicht der Brüller, 6 schwarzes Textfenster. Output der Bots wird in je eine Textdatei umgeleitet.

PHP habe ich gewählt, da für jede Exchange ein PHP API verfügbar ist. Es ist für PHP keine Lib nötig, die JSON und SHA Funktionen sind, zumindest in der aktuellen XAMPP Distribution mit dabei.

Wirklich interessantes Thema/Projekt was du hier aufmachst.
Ich schreibe auch aktuell an einem PHP Bot, da ich als mit den bisher käuflich erworbenen nicht wirklich zu frieden bin und mal verstehen wollte warum ;) Als verstreuter "Kleincoinbesitzer" im Wert von unter einem BTC haben oftmals die Bot's einen zu geringen Hebel um sich gut zu entfalten (zumindest mein Eindruck). Meine Eigenkreation eines Arbitragevariante zwischen Poloniex und Cryptsy macht sich ganz gut. 0,2 BTC Einsatz und nach drei Wochen 10% Profit. Kann aber auch an den diversen Dumps & Pumps meiner Coins liegen. Aktuell schreibe ich an einer Autobalance Funktion und mach ein Cleanup meiner API Access Schnittstelle um auch mehr als zwei Börsen zu unterstützen. Anyway ich komme von deinem Thema ab...hoffe du schreibst regelmäßig und lässt uns an deinen Erfahrungen teil haben. Echt coole Idee!


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 11, 2014, 05:30:55 PM
Lässt Du die Sachen auf einem Server laufen? Oder einfach zu Hause auf dem Desktop PC?

BTW: ich benutze java und hab ganz ähnliche Strategien wie Du implementiert. Bin allerdings wohl noch nicht soweit. Mein Arb-Bot läuft noch nicht automatisch.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 11, 2014, 06:57:18 PM
Ich schreibe auch aktuell an einem PHP Bot, da ich als mit den bisher käuflich erworbenen nicht wirklich zu frieden bin und mal verstehen wollte warum ;)
Ich wollte auch erst einen Bot kaufen, habe eine Lizenz von Haasbot. Eigentlich ein gutes Tool, viele Möglichkeiten, hat auch immer eine Zeitlang funktioniert. Ich konnte mich aber nicht mit der Funktionsweise anfreunden, der Bot hat 2 Zustände, entweder Kauf ( dann macht er als nächstes einen Verkauf ) oder Verkauf ( dann macht er als nächstes einen Kauf ). Kannst zwar mehrere Strategien gleichzeitig fahren, z.B. einen
Strategie die oft mit geringer Spanne handelt, und eine zweite, die selten mit höherer Spanne handelt, aber bei den derzeitigen Kursschwankungen hat Du bald alle im Status Kauf, und er macht erst weiter, wenn es eine Verkaufssituation gibt. Mir gefällt dabei die Hilfe in der Parametrisierung, kannst anhand der gesammelten Kurse die Parameter für optimalen Profit anpassen. Wer das Traden gerne mit Charttechnik macht, für den ist dieser Bot zumindest einen Test wert.

Meine Eigenkreation eines Arbitragevariante zwischen Poloniex und Cryptsy macht sich ganz gut. 0,2 BTC Einsatz und nach drei Wochen 10% Profit.
In Prozent gerechnet, haben Arbitragestrategien den meisten Profit, wenn sie mit kleinen Einsätzen gemacht werden. Da kommt der Bot mit hoher Wahrscheinlichkeit dem Besten Bid und Ask im Markt aus. Mit höheren Einsätzen muss der Bot dann die Zweit und Drittbesten Quoten nehmen, was das Ergebnis in % verringert, aber wegen des höheren Einsatzes vom Betrag her ein besseres Ergebnis bringt. Mach einfach Deine Strategie weiter!

Aktuell schreibe ich an einer Autobalance Funktion und mach ein Cleanup meiner API Access Schnittstelle um auch mehr als zwei Börsen zu unterstützen.
Wieso Access? Speicherst Dein Bot auch Daten ins Access?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 11, 2014, 07:04:06 PM
Lässt Du die Sachen auf einem Server laufen? Oder einfach zu Hause auf dem Desktop PC?
BTW: ich benutze java und hab ganz ähnliche Strategien wie Du implementiert. Bin allerdings wohl noch nicht soweit. Mein Arb-Bot läuft noch nicht automatisch.
Ich habe zu Hause einige lüfterlose, flüsterleise, energieeffiziente Computer stehen. Die hängen nur am Strom (brauchen max. 54 Watt) und Netzwerk. Zugriff erfolgt über Remoteconsole vom Desktop PC aus. Habe also meine Server zu Hause stehen.  8)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 11, 2014, 07:17:45 PM
Lässt Du die Sachen auf einem Server laufen? Oder einfach zu Hause auf dem Desktop PC?
BTW: ich benutze java und hab ganz ähnliche Strategien wie Du implementiert. Bin allerdings wohl noch nicht soweit. Mein Arb-Bot läuft noch nicht automatisch.
Ich habe zu Hause einige lüfterlose, flüsterleise, energieeffiziente Computer stehen. Die hängen nur am Strom (brauchen max. 54 Watt) und Netzwerk. Zugriff erfolgt über Remoteconsole vom Desktop PC aus. Habe also meine Server zu Hause stehen.  8)

Läuft bei mir auf nem Raspberry PI mit ArchLinux. Sehr stabil und die Stromkosten kannste vergessen, da man das Ding mit bisserl php und DB Operationen nicht auslastet und so noch anderes für mich erledigt ;) Habe aber dadurch auch eien Trennung von meinem Test- und Livesystem. Was mir gestern den Arsch gerettet hat ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 11, 2014, 07:41:01 PM
Ich schreibe auch aktuell an einem PHP Bot, da ich als mit den bisher käuflich erworbenen nicht wirklich zu frieden bin und mal verstehen wollte warum ;)
Ich wollte auch erst einen Bot kaufen, habe eine Lizenz von Haasbot. Eigentlich ein gutes Tool, viele Möglichkeiten, hat auch immer eine Zeitlang funktioniert. Ich konnte mich aber nicht mit der Funktionsweise anfreunden, der Bot hat 2 Zustände, entweder Kauf ( dann macht er als nächstes einen Verkauf ) oder Verkauf ( dann macht er als nächstes einen Kauf ). Kannst zwar mehrere Strategien gleichzeitig fahren, z.B. einen
Strategie die oft mit geringer Spanne handelt, und eine zweite, die selten mit höherer Spanne handelt, aber bei den derzeitigen Kursschwankungen hat Du bald alle im Status Kauf, und er macht erst weiter, wenn es eine Verkaufssituation gibt. Mir gefällt dabei die Hilfe in der Parametrisierung, kannst anhand der gesammelten Kurse die Parameter für optimalen Profit anpassen. Wer das Traden gerne mit Charttechnik macht, für den ist dieser Bot zumindest einen Test wert.

Meine Eigenkreation eines Arbitragevariante zwischen Poloniex und Cryptsy macht sich ganz gut. 0,2 BTC Einsatz und nach drei Wochen 10% Profit.
In Prozent gerechnet, haben Arbitragestrategien den meisten Profit, wenn sie mit kleinen Einsätzen gemacht werden. Da kommt der Bot mit hoher Wahrscheinlichkeit dem Besten Bid und Ask im Markt aus. Mit höheren Einsätzen muss der Bot dann die Zweit und Drittbesten Quoten nehmen, was das Ergebnis in % verringert, aber wegen des höheren Einsatzes vom Betrag her ein besseres Ergebnis bringt. Mach einfach Deine Strategie weiter!

Aktuell schreibe ich an einer Autobalance Funktion und mach ein Cleanup meiner API Access Schnittstelle um auch mehr als zwei Börsen zu unterstützen.
Wieso Access? Speicherst Dein Bot auch Daten ins Access?



Hatte mir CAT angelacht, aber dafür musst du wirklich davor hocken um alles im Griff zu haben, aber dennoch ein empfehlenswertes Tool. Habs aus zeitmangel aufgegeben.
Ein PHP Arbitrage Tool hatte ich mir auch nochmal geholt. Hat echt nette Features, die mir aber als Kleincoinbesitzer nicht wirklich geholfen haben bzw. die Trades die er in 6 Wochen ausgelöst hat, hat meiner jetzt nach 3 Wochen gehabt. Kann aber auch an der Tradingmethodik liegen oder einfach , dass ich ihn für meinr Situation nicht sauber konfiguriert habe.
Was solls so kann ich endlich mal wieder was programmieren, auch wenn ich die Komplexität echt unterschätz habe. Was für nen Mist da alles über eine API kommen kann bzw. nicht kommt ist manchmal echt übel.

In Prozent gerechnet, haben Arbitragestrategien den meisten Profit, wenn sie mit kleinen Einsätzen gemacht werden. Da kommt der Bot mit hoher Wahrscheinlichkeit dem Besten Bid und Ask im Markt aus. Mit höheren Einsätzen muss der Bot dann die Zweit und Drittbesten Quoten nehmen, was das Ergebnis in % verringert, aber wegen des höheren Einsatzes vom Betrag her ein besseres Ergebnis bringt. Mach einfach Deine Strategie weiter!
Ah daran kann es liegen, da ich wirklich gezielt auf die Besten Bid/Ask Verhältnisse gehe auch im Zweifel mal etwas weniger abzustauben. Denk mir aber, lieber etwas als gar nix oder minus. Durch nen doofen Kopierfehler hat mir der Bot bei Doge gekauft als er über 100 stand und dann abgerutscht ist ;) er hat zwar versucht zu verkaufen aber nur auf sich selber ;)
Absolut gesehen macht das doch keinen Unterschied, wenn ich 0,2 BTC investieren und bereits 0,02 Gewinn habe oder habe ich dich falsch verstanden?
Prozentual gesehen, haben sich bei mir einige Coins vollständig amortisiert, aber absolut kaum was zum Gewinn beigetragen. Andere nur wenige Trades aber stellen das Gro der Gewinne.


Wieso Access? Speicherst Dein Bot auch Daten ins Access?
Access im Sinne von Zugriff ;) ich habe eine Schicht/Ebene eingezogen damit ich die ganzen API Calls von dem eigentlichen Trading Algorithmus getrennt habe, als auch die API Schnittstellen der Börsen umgekehrt. Dadurch muss ich bei einem neuen Exchange nur die API Schnittstellen definieren und an die Access Schicht anbinden und schon müsste alles funktionieren...mal sehen ;) glaube du machst das über dein generisches API Interface?!?



Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 11, 2014, 07:49:17 PM
Ich hab nen kleinen VPS (512 MB Ram, 20 GB Disk) für 3,99 . Für Arb-Bot wird der aber nicht reichen, also such noch ne Alternative. Evtl. lass ich einfach hier zu Hause ein Netbook laufen, oder so.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 11, 2014, 08:46:56 PM
In Prozent gerechnet, haben Arbitragestrategien den meisten Profit, wenn sie mit kleinen Einsätzen gemacht werden. Da kommt der Bot mit hoher Wahrscheinlichkeit dem Besten Bid und Ask im Markt aus. Mit höheren Einsätzen muss der Bot dann die Zweit und Drittbesten Quoten nehmen, was das Ergebnis in % verringert, aber wegen des höheren Einsatzes vom Betrag her ein besseres Ergebnis bringt. Mach einfach Deine Strategie weiter!
Ah daran kann es liegen, da ich wirklich gezielt auf die Besten Bid/Ask Verhältnisse gehe auch im Zweifel mal etwas weniger abzustauben. Denk mir aber, lieber etwas als gar nix oder minus. Durch nen doofen Kopierfehler hat mir der Bot bei Doge gekauft als er über 100 stand und dann abgerutscht ist ;) er hat zwar versucht zu verkaufen aber nur auf sich selber ;)
Absolut gesehen macht das doch keinen Unterschied, wenn ich 0,2 BTC investieren und bereits 0,02 Gewinn habe oder habe ich dich falsch verstanden?
Prozentual gesehen, haben sich bei mir einige Coins vollständig amortisiert, aber absolut kaum was zum Gewinn beigetragen. Andere nur wenige Trades aber stellen das Gro der Gewinne.
Wenn Du mit kleinen Beträgen Arbitrage machst, kommt der Bot mit hoher Wahrscheinlichkeit immer dem Besten Bid und Ask im Markt aus. Dann machst Du z.B. mit 50 EUR 0.1% Gewinn, das sind 0.05 EUR. Wenn der Bot dieselbe Arbitragesitiation ausnutzt, und mit 100 EUR arbeitet, kann er vielleicht nicht bei allen Legs der Arbitrage den Besten Bid oder Ask nehmen, weil nicht genug Liquidität am Markt ist. Dann macht er mit den ersten 50 EUR 0.1% Gewinn, mit den restlichen 50 EUR aber nur mehr 0.05% Gewinn. In Prozent ausgerechnet sind das dann nur mehr 0.075%, in Zahlen ausgedrückt aber 0.075 EUR. Mit 100 EUR statt 50 EUR verringerst Du den Gewinn in % betrachtet (von 0.1% auf 0.75%) , erhöhst aber den Gewinn in EUR (von 0.05 auf 0.075).

Dadurch muss ich bei einem neuen Exchange nur die API Schnittstellen definieren und an die Access Schicht anbinden und schon müsste alles funktionieren...mal sehen Wink glaube du machst das über dein generisches API Interface?!?
Ach so war das mit dem Access gemeint. :) Ja, wenn man auf mehreren Exchanges aktiv ist, lohnt so eine "normierte" , "generische" Zwischenschicht schon. Die APIs der einzelnen Exchanges unterscheiden sich zum Glück nicht sehr.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 11, 2014, 09:05:44 PM
Ordentliche Abstraktion lohnt sich definitiv. Hab ich auch gemacht, aber halt in Java. Falls das jemand lesen kann:

https://github.com/ReAzem/cryptocoin-tradelib/blob/master/core/src/de/andreas_rueckert/trade/site/TradeSite.java


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 11, 2014, 09:50:06 PM
Logbucheintrag vom 2014-10-11

Erfreulich, die Bots 3EckArb und Antizyklus sind ohne Crash durchgelaufen. Sie haben allerdings nicht viel zu tun gehabt, auf CEX.IO war heute ein ruhiger Tag.

Der 3Eckarbitragebot hat 2 Möglichkeiten gefunden, und dabei einen Gewinn von  0.00000094 BTC und 0.00534570 LTC gemacht.
Im Detail waren das seine Aktionen:
Rule15 0.9432561144677LTC > 135.20799117364FTC > 0.0099853785630776BTC > 0.94612265LTC
Rule15 0.94481369051472LTC > 135.05087720993FTC > 0.0099737753849547BTC > 0.94502324LTC
Die zweite Zeile liest sich so: Der Bot hat 0.94481369051472 LTC zu 135.05087720993 FTC getauscht, die FTC in 0.0099737753849547 BTC umgetauscht, die BTC in 0.94502324 LTC.

Der InterexchangeArbitragebot is nicht gelaufen.

Der Antizyklusbot hat 3 Notwendigkeiten gesehen, die Gewichtung zu korrigieren:
2014-10-11 01:44:37 ["LTC\/BTC","buy",0.01055,0.13141361661959]
2014-10-11 01:54:37 ["DOGE\/BTC","buy",7.5e-7,2249.5989778761]
2014-10-11 14:59:36 ["DOGE\/LTC","sell",7.329e-5,1293.0017433001]
Die erste Zeile liest sich so: Kaufe 0.1314136LTC zu einem Preis von 0.01055 BTC im Markt LTC/BTC


Daraus resultiert diese Auswertung:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
Anfangsstand0.1967458.93366.12265022427135.240.484085174.58138.27
Ertrag 3EckArb0.00000094 0.0053457 00000.000056480.02 0.02
% 3EckArb0.0005%0.0598%0%0%0%0%0.0117%0.0115%0.0145%
Ertrag InterArb000000000
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus-0.003079940.15175430956 00-0.00308548-3.79 -3
% Antizyklus-1.5654%1.6987%0%1.9035%0%0%-0.6374%-2.1709%-2.1697%
Endstand0.1936669.09076.12265118027135.240.481056170.81135.29
Änderung-0.0030790.15710956 00-0.003029-3.77 -2.98
% Änderung-1.565%1.7585%0%1.9035%0%0%-0.6257%-2.1595%-2.1552%-0.061%

Kein guter Tag. In EUR gerechnet ein Verlust von 2%.

Was die Kenner des Antizyklischen Handelns verwundern wird, dass die Zuwachsformel einen Verlust ergibt. Das liegt daran, dass offene Orders existieren, die ich so behandle als wären sie bereits mit dem aktuellen Marktpreis durchgeführt. Dadurch bewirken diese Orders eine Standveränderung, was die Zuwachsformel "stört".



Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 12, 2014, 10:46:15 AM
Wie funktioniert generell das antizyklische Handeln?
Heute ist ein guter Tag für Arbitrage auf BTCD ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: ulrich909 on October 12, 2014, 10:54:25 AM
Wie funktioniert generell das antizyklische Handeln?
Heute ist ein guter Tag für Arbitrage auf BTCD ;)
Hier findest du den passenden Thread zum antizyklischen Handeln https://bitcointalk.org/index.php?topic=495672.0


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 12, 2014, 11:22:20 AM
Wie funktioniert generell das antizyklische Handeln?
Heute ist ein guter Tag für Arbitrage auf BTCD ;)
Hier findest du den passenden Thread zum antizyklischen Handeln https://bitcointalk.org/index.php?topic=495672.0

Perfekt danke dir, werde mich dann mal schlauer machen :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 12, 2014, 12:57:06 PM
Anscheinend siehst Du mehr Gelegenheiten als ich bei meinen (wohl zu kurzen) Tests.

Wenn bei Dir eine Arb-Sequenz nicht durchläuft, lässt Du dann nur die letzte Order stehen? Oder bleibt die ganze Sequenz im Bot, damit sie ggf. irgendwann beendet wird? In beiden Fällen ist ja aber das Geld gebunden, und steht nicht für andere Trades zur Verfügung?

Mein Arb-Bot:

https://i.imgur.com/EgiTKPQ.png


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 12, 2014, 03:03:52 PM
Anscheinend siehst Du mehr Gelegenheiten als ich bei meinen (wohl zu kurzen) Tests.

Wenn bei Dir eine Arb-Sequenz nicht durchläuft, lässt Du dann nur die letzte Order stehen? Oder bleibt die ganze Sequenz im Bot, damit sie ggf. irgendwann beendet wird? In beiden Fällen ist ja aber das Geld gebunden, und steht nicht für andere Trades zur Verfügung?

Mein Arb-Bot:

https://i.imgur.com/EgiTKPQ.png
Du bist aber an sehr vielen Börsen aktiv! Und das ist auch richtig so, da triff Dich der Ausfall einer Börse nicht so sehr.

Ich weiß nicht, ob die Frage an mich gerichtet war, meine Antwort darauf wäre, die Order einfach im Markt stehen zu lassen, wird ja irgendwann einmal erfüllt. Ich schau gar nicht, ob alle Legs einer Arbitrage gefillt sind, da das eine große Komplexität in den Bot bringt, mit geringen Nutzen und einer großen Gefahr.

Die Daten, die der Bot bei Abfrage der Markttiefe bekommt, sind veraltet. BTCe schreibt zum Beispiel explizit, dass es keinen Sinn macht, öfter als alle 2 Sekunden eine API Abfrage zu machen, da die API nicht direkt auf die Datenbank zugreift, sondern die Daten aus einen Buffer liest, der nur alle 2 Sekunden aktualisiert wird. Dadurch handelt der Bot aufgrund von Daten, die bereits mehrere Sekunden alt sind.

Die Abfragen der privaten Daten, wie Kontostand und Offene Orders ist fast aktuell, aber auch hier braucht es etwas Zeit, bis die Daten beim Bot sind.

Nehmen wir an, der Bot funktioniert so: Er stellt seine 3 Orders in den Markt, prüft nach, ob sie gefillt wurden, und macht dann in Abhängigkeit der Anzahl der gefillten Orders dies:

  • Alle Orders gefillt: Super, Arbitrage vollständig beendet
  • 2 Orders gefillt: Die Order, die nicht gefillt wurde, stornieren und nochmals in den Markt stellen, nimmt dabei einen schlechten Kurs in Kauf, aber die Arbitrage blockiert kein Geld
  • 1 Orders gefillt: Die Order, die gefillt wurde, durch eine entgegengesetzte Order ausgleichen, und die anderen 2 nicht gefillten stornieren.
  • 0 Orders gefillt: Alle 3 Orders stornieren

Es ist leicht zu erkennen, dass der Bot die falsche Aktion setzt, wenn eine Order in der Zwischenzeit gefillt wurde. Wenn das Timing nicht passt, wird der Bot nie damit fertig, die unvollständige Arbitrage zu korrigieren, da er ja auch die Korrekturen versucht zu kurrigieren, und er verbraucht das ganze Geld mit Spreads und Fees. Du musst viel Zeit zwischen Senden und Überprüfen der Orders lassen, oder warten, bis sich der Markt von der Order wegbewegt, das nimmt Dynamik aus dem Prozess.

Deswegen überprüfe ich gar nicht, ob die Orders gefillt wurden und nehme in Kauf, dass Geld durch offene Orders gebunden ist. Der Bot darf in diesem Fall aber nur einen Bruchteil des verfügbaren Geldes verwenden, damit er handlungsfähig bleibt im Fall dass offene Orders im Markt bleiben.
 



Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 12, 2014, 03:46:14 PM
Ich trade aktuell nicht wirklich an diesen Börsen. Ich hab halt ein Framework geschrieben, dass von diesen APIs gut abstrahiert, und daher läuft ein Bot i.d.R. automatisch auf den meisten Exchanges (es sei denn, ein Exchange bietet z.B. nur 2 Paare an, oder so).

https://github.com/ReAzem/cryptocoin-tradelib/tree/master/modules

Da siehst Du meine Module (nicht alle komplett).

Du stellst also alle Orders parallel ein? Bei mir ist das eigentlich anders gedacht. Ich hab ja eine Order Struktur, die nicht direkt auf ein APIs aufsetzt. Darin ist eine Liste, die Abhängigkeiten von anderen Orders listet. Meine OrderBook Klasse hat nen Thread, der permanent den Zustand von Orders checkt. D.h. ich erzeuge also die Orders für so eine Sequenz und füge jeweils Abhängigkeiten ein (2. Order hängt von 1. ab, 3. von 2. usw). Die schieb ich nun alle ins OrderBook und lass die letzte Order ausführen. Durch die Abhängigkeiten wird dann die 1., dann die 2. usw ausgeführt.

Bei Deiner Lösung musst Du ja in allen Währungen Funds haben, damit Du alle Orders parallel einstellen kannst? Das wollte ich vermeiden, weil einige Exchanges (Bittrex, Vircurex usw) sehr viele Währungen unterstützen, und ich wollte mein Geld nicht in 300 Währungen hab, weil ja zumindest einige davon bald wieder verschwinden werden.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 12, 2014, 05:50:26 PM
Du stellst also alle Orders parallel ein? Bei mir ist das eigentlich anders gedacht. Ich hab ja eine Order Struktur, die nicht direkt auf ein APIs aufsetzt. Darin ist eine Liste, die Abhängigkeiten von anderen Orders listet. Meine OrderBook Klasse hat nen Thread, der permanent den Zustand von Orders checkt. D.h. ich erzeuge also die Orders für so eine Sequenz und füge jeweils Abhängigkeiten ein (2. Order hängt von 1. ab, 3. von 2. usw). Die schieb ich nun alle ins OrderBook und lass die letzte Order ausführen. Durch die Abhängigkeiten wird dann die 1., dann die 2. usw ausgeführt.

Ich habe vordefinierte Liste von Arbitragemöglichkeiten, das sind 16 auf CEX.IO und 84 auf BTCe. Mit jeden Marktabfrage werden die Arbitragemöglichkeiten durchgerechnet, wo gerade abgefragte Markt Teil der Arbitrage ist, und soferne eine Arbitrage mit Minimalem Einsatz gefunden wird, sucht der Bot den Einsatz heraus, wo der Gewinn am Höchsten ist, und dann werden die Orders direkt hintereinander in den Markt geschossen. Ich kann mir nicht vorstellen, dass die Arbitrage innerhalb einer Exchange gut funktioniert, wenn da viel Zeit zwischen Marktabfrage und Orderaufgabe liegt. Lasse mich aber gerne von Gegenteil überzeugen.

Bei Deiner Lösung musst Du ja in allen Währungen Funds haben, damit Du alle Orders parallel einstellen kannst? Das wollte ich vermeiden, weil einige Exchanges (Bittrex, Vircurex usw) sehr viele Währungen unterstützen, und ich wollte mein Geld nicht in 300 Währungen hab, weil ja zumindest einige davon bald wieder verschwinden werden.
Ja ich brauche in allen Währungen Funds in ausreichender Höhe. Allerdings ignoriere ich Coins ohne entsprechende Umsätze, da bleiben nicht viele über. USD, BTC und LTC würde ich in jedem Fall nehmen, da viele der Coins gegen diese Währungen zu handeln sind, und von den anderen Coins jene, wo es zumindest 2 Märkte gegen USD, BTC oder LTC gibt (sonst kannst Du keine Arbitrage aufbauen!) , und dann die besten 3-5, wo die Umsätze entsprechend sind.

Ich gehe eingentlich davon aus, dass es bei Arbitrage auf Geschwindigkeit ankommt, je mehr Märkte, desto seltener kannst Du jeden einzelnen davon abfragen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 12, 2014, 06:06:15 PM
Ich gehe eingentlich davon aus, dass es bei Arbitrage auf Geschwindigkeit ankommt, je mehr Märkte, desto seltener kannst Du jeden einzelnen davon abfragen.

Jo, um dieses Problem hab ich schon ne ganze Weile gekreist und auch schon einiges an Code dazu gschrieben (z.B. Preisabfrage über Proxy-Server), ohne eine gute Lösung zu finden. Evtl. ein Whitelisting bei der Exchange-Betreibern versuchen, falls die da mitspielen würden.

Schade, dass wir erst jetzt aufeinander stossen. Wir hatten zusammen sicher paar tolle Sachen basteln können.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 12, 2014, 09:04:22 PM
Logbucheintrag vom 12.10.2014

Hier erst einmal die Auswertung:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
11.10.20140.1936669.09076.12265118027135.240.481056170.81135.29
Ertrag 3EckArb00000000 0
% 3EckArb0%0%0%0%0%0%0%0%0%
Ertrag InterArb0.00196637000000.001966370.6982049069131240.55
% InterArb1.0153%0%0%0%0%0%0.4088%0.4088%0.4065%
Ertrag Antizyklus0.001920631.08150.4178395 000.014252637.19 5.5
% Antizyklus0.9917%11.8968%6.8239%0.7718%0%0%2.9628%4.2094%4.0653%
12.10.20140.19755310.17226.54045157527135.240.497275178.7141.34
Änderung0.0038871.08150.4178395 000.0162197.89 6.05
% Änderung2.0071%11.8968%6.8239%0.7718%0%0%3.3715%4.6192%4.4719%1.8773%

Wertzuwachs vom 4.5% in EUR, auch die Zuwachsformel ist positiv, man sollte also zufrieden sein.

Die Details offenbaren aber ein riesiges Problem, Zufriedenheit ist also fehl am Platz.

Der 3EckArb Bot hat heute gar nichts gemacht, ist an sich kein Problem, das kommt auf CEX.IO öfter vor.

Habe heute auch den Interexchange Arbitrage Bot gestartet (aber erst nachdem der Antizyplus Bot abgeschalten war, die beiden mögen sich nicht  :o) , der hat am Nachmittag 3 Arbitragen im BTC LTC Markt ausgenutzt, das hat einen Profit von 0.00196637 BTC gebracht.

Leider hatte der Antizyklus Bot eine Fehlfunktion.

Seht euch einmal an, was er getan hat:

Gewichtungskorr 1
2014-10-12 06:58:27 [sell 3506.7722849711  DOGE @ 0.000078 BTC]
2014-10-12 06:58:27 [buy 0.26050382832308  LTC  @ 0.01049997 BTC]

Gewichtungskorr 2
2014-10-12 07:03:19 [buy 5070.5669444479  DOGE  @ 0.0007524 LTC]

Gewichtungskorr 3
2014-10-12 13:08:19 [sell 1168.5031327535 DOGE @ 0.007338 LTC ]

Gewichtungskorr 4
2014-10-12 13:23:19 [buy  75.463326122964 FTC @ 0.00007239 BTC ]
2014-10-12 13:23:19 [sell 75.463326122964 FTC @ 0.00684925 LTC]

Gewichtungskorr 5
2014-10-12 13:33:19 [sell 0.23263413530557 LTC @ 0.01047501 BTC ]
2014-10-12 13:33:20 [buy  0.41786613948515 DRK @ 0.00583164 BTC ]


Bei der Gewichtungskorr 1: erst DOGE verkauft und LTC gekauft
Bei der Gewichtungskorr 2: 5 Minunten später hat er seine Meinung geändert, und LTC verkauft und DOGE gekauft.
Bei der Gewichtungskorr 3: DOGE verkauft und LTC gekauft, allerdings zu einem geringeren Preis, als er zuvor gekauft hat.

Analyse hat folgendes ergeben: Bei der Gewichtungskorrektur 1 hat der Bot  die offenen sell Orders im DRK/LTC Markt nicht bekommen, aber auch keine Fehler. Dadurch war die Bewertung bei den LTC um 4 zu gering, das hat der Bot ausgeglichen.

Bei der Gewichtskorrektur 2 hat der Bot dann die offenen sell Orders im DRK/LTC Markt wieder bekommen, und die Änderung der Gewichtung wieder auf den richtigen Stand ausgeglichen.

Ob der Antizyklus Bot immer billiger kaufen sollte als verkaufen, muss ich noch einmal durchdenken. Bei der Gewichtungskorr 3 hat er billiger verkauft als gekauft.

Ob es billiger ist, mit 2 Trades über FTC ein Ungleichgewicht zwischen BTC und LTC auszugleichen, erscheint mir unglaubwürdig, in der Gewichtunskorr 4.

Einzig die Gewichtungskorr 5 ist plausibel, der DRC/LTC Markt ist auf CEX.IO hat über 10% Spread zwischen Bid und Ask.

Den Bug mit den fehlenden offenen Orders werde ich noch heute lösen, und bei jeder Gewichtskorrektur alle Daten ins Logfile ausgeben, zur genaueren Analyse.
Ist erledigt. Nach 3 Stunden Suche den Fehler mit den fehlenden Offenen Sell Orders gefunden, habe einen PHP Anfängerfehler gemacht. Typkonversion mißachtet.  ???




Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on October 13, 2014, 12:07:47 AM
oh man... erst 2 Seiten und doch schon sooo viele Infos :)  wird bestimmt ein guter Thread :)

Ich musste meinen Programmierer leider "entlassen"... haben erst nach der Hälfte der Arbeit angefangen die Gewinnverteilung zu besprechen und er wollte einfach zu viel und das wäre alles zu kompliziert mit den Rechten am Bot usw. geworden.
Deswegen muss ich mich spätestens im Dezember mal dransetzen und programmieren lernen :D kann ja nicht so schwer sein ::)

Mein Programmierer hatte in Python geschrieben. Hab mir da mal ein wenig Infos zu durchgelesen und es heißt, dass die Sprache sehr einfach sei, aber trzd. alles kann was man braucht, deswegen denke ich krieg ich das hin es zu lernen. Nur warum verwendet von euch keiner Python?
Das schwierigste wird dann vermutlich der Umgang mit den API's und die ganzen Fachbegriffe wie "generisch" und "Main Loop" :D
Vermutlich werde ich, wenn es so weit ist und ich Python kann, nochmal den ein oder anderen hier anschreiben (oder im thread), was ich beachten muss.  Damit meine ich z.b Dinge wie "eine API fällt aus, dann muss die und die Sicherung rein" oder "Die API liefert Mist, das muss der Bot am besten so und so überprüfen"  usw. usw...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: xtral on October 13, 2014, 06:13:52 AM
oh man... erst 2 Seiten und doch schon sooo viele Infos :)  wird bestimmt ein guter Thread :)

Ich musste meinen Programmierer leider "entlassen"... haben erst nach der Hälfte der Arbeit angefangen die Gewinnverteilung zu besprechen und er wollte einfach zu viel und das wäre alles zu kompliziert mit den Rechten am Bot usw. geworden.
Deswegen muss ich mich spätestens im Dezember mal dransetzen und programmieren lernen :D kann ja nicht so schwer sein ::)

Mein Programmierer hatte in Python geschrieben. Hab mir da mal ein wenig Infos zu durchgelesen und es heißt, dass die Sprache sehr einfach sei, aber trzd. alles kann was man braucht, deswegen denke ich krieg ich das hin es zu lernen. Nur warum verwendet von euch keiner Python?
Das schwierigste wird dann vermutlich der Umgang mit den API's und die ganzen Fachbegriffe wie "generisch" und "Main Loop" :D
Vermutlich werde ich, wenn es so weit ist und ich Python kann, nochmal den ein oder anderen hier anschreiben (oder im thread), was ich beachten muss.  Damit meine ich z.b Dinge wie "eine API fällt aus, dann muss die und die Sicherung rein" oder "Die API liefert Mist, das muss der Bot am besten so und so überprüfen"  usw. usw...

Wenn du nicht gerade mit Arbitrage arbeiten willst, würde ich mir an deiner Stelle QT-Trader anschauen.
Du kannst eigene Skripte programmieren, ohne dich um die API kümmern zu müssen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 13, 2014, 08:13:26 AM
oh man... erst 2 Seiten und doch schon sooo viele Infos :)  wird bestimmt ein guter Thread :)

Ich musste meinen Programmierer leider "entlassen"... haben erst nach der Hälfte der Arbeit angefangen die Gewinnverteilung zu besprechen und er wollte einfach zu viel und das wäre alles zu kompliziert mit den Rechten am Bot usw. geworden.
Deswegen muss ich mich spätestens im Dezember mal dransetzen und programmieren lernen :D kann ja nicht so schwer sein ::)

Mein Programmierer hatte in Python geschrieben. Hab mir da mal ein wenig Infos zu durchgelesen und es heißt, dass die Sprache sehr einfach sei, aber trzd. alles kann was man braucht, deswegen denke ich krieg ich das hin es zu lernen. Nur warum verwendet von euch keiner Python?
Das schwierigste wird dann vermutlich der Umgang mit den API's und die ganzen Fachbegriffe wie "generisch" und "Main Loop" :D
Vermutlich werde ich, wenn es so weit ist und ich Python kann, nochmal den ein oder anderen hier anschreiben (oder im thread), was ich beachten muss.  Damit meine ich z.b Dinge wie "eine API fällt aus, dann muss die und die Sicherung rein" oder "Die API liefert Mist, das muss der Bot am besten so und so überprüfen"  usw. usw...

Ich nutze PHP da es zumeist von den Börsenbetreibern direkt Tutorials und Code gibt dies einzubinden. Python sollte aber auch kein Thema sein. Bin einfach nur faul ;)


Logbucheintrag vom 12.10.2014



Ob der Antizyklus Bot immer billiger kaufen sollte als verkaufen, muss ich noch einmal durchdenken. Bei der Gewichtungskorr 3 hat er billiger verkauft als gekauft.

Ob es billiger ist, mit 2 Trades über FTC ein Ungleichgewicht zwischen BTC und LTC auszugleichen, erscheint mir unglaubwürdig, in der Gewichtunskorr 4.

Einzig die Gewichtungskorr 5 ist plausibel, der DRC/LTC Markt ist auf CEX.IO hat über 10% Spread zwischen Bid und Ask.

Den Bug mit den fehlenden offenen Orders werde ich noch heute lösen, und bei jeder Gewichtskorrektur alle Daten ins Logfile ausgeben, zur genaueren Analyse.
Ist erledigt. Nach 3 Stunden Suche den Fehler mit den fehlenden Offenen Sell Orders gefunden, habe einen PHP Anfängerfehler gemacht. Typkonversion mißachtet.  ???





Frage zu deinen Bots:
- sind der Arbitrage und der Anti einer die nur getrennt aufschlüsselst oder zwei eigenständige Programme?

Wenn ich das mit dem Antizyklischen korrekt verstanden habe, dann müssten beide sich zumindest nicht negativ beeinflussen. Potenziell kann sich zwar das Handelsvolumen bei gleichen Coins verringern so dass man bei einer kritischen Anzahl keine Arbitrage Möglichkeiten mehr hat aber würde das mal als gering einstufen.

Wie seht ihr das?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 13, 2014, 08:37:24 AM
Mein Programmierer hatte in Python geschrieben. Hab mir da mal ein wenig Infos zu durchgelesen und es heißt, dass die Sprache sehr einfach sei, aber trzd. alles kann was man braucht, deswegen denke ich krieg ich das hin es zu lernen. Nur warum verwendet von euch keiner Python?
Weil die Exchanges in ihrer API Beschreibung immer ein Beispiel in PHP angegeben haben. Ich denke nicht, daß es schwierig ist, mit einem PHP Sourcecode ein Python Programm zu machen, ist aber ein zusätzliche Herausforderung wenn man beide Sprachen erlernen müßte, ein Spezialist in Python wird wohl eher in Python arbeiten wollen, was auch sinnvoll ist.
Zusaätzlich schaut PHP so ähnlich wie C++ und C# aus, mit den beiden habe ich etwas Erfahrung.

Das schwierigste wird dann vermutlich der Umgang mit den API's und die ganzen Fachbegriffe wie "generisch" und "Main Loop" :D
Das Schwierigste ist die Strategie. Das Programm soll ja Geld verdienen, ein Bot ist nur ein Werkzeug, der exakt das macht, wofür er programmiert wurde. Schnell und tausende Male hintereinander. Mit einer schlechen Strategie verliert der Bot viel mehr Geld, als es manuell möglich wäre.

Ich würde ein Bot Projekt von der Handelsstrategie angehen. Erst wenn die Strategie mit manuellem Handeln so funktioniert, wie geplant, lohnt es sich Zeit in die Entwicklung eines Bots zu investieren.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kneim on October 13, 2014, 09:18:02 AM
Übertreibt es nicht mit dem Geld verdienen. Eine normale Anlage erhält das Vermögen. Ein Mehrertrag ist vor allem auf Kosten des dümmlichen Homo Oeconomicus möglich.

Arbitraging ist eine Leistung, für die zu Recht ein Ertrag für den Arbitrageur fällig wird.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 13, 2014, 09:28:26 AM
Frage zu deinen Bots:
- sind der Arbitrage und der Anti einer die nur getrennt aufschlüsselst oder zwei eigenständige Programme?
Das sind einzelne Scripts.  Jedes der Scripts hat eine separate Verbindung zur Exchange. Der AntiZyklus Bot macht selten Abfragen zur zeit nur alle 10 Minuten, deswegen bleibt für den Arbitragebot ausreichend API Calls übrig. 2 unterschiedliche Arbitragestrategien kann ich dadurch nicht gleichzeitig laufen lassen, da wird mich die Exchange blacklisten.  :(

Ich wollte rasch etwas haben, das so halbwegs funktioniert. Sollte ich dauerhaft mehrere Arbitragebots gleichzeitig laufen lassen wollen, würde ich einen Proxy schreiben.


Wenn ich das mit dem Antizyklischen korrekt verstanden habe, dann müssten beide sich zumindest nicht negativ beeinflussen. Potenziell kann sich zwar das Handelsvolumen bei gleichen Coins verringern so dass man bei einer kritischen Anzahl keine Arbitrage Möglichkeiten mehr hat aber würde das mal als gering einstufen.
Wie seht ihr das?

Meine Arbitragebots sind zu jeder anderen Strategie kompatibel. Solange genug Funds vorhanden sind, schiessen sie ihre Orders in den Markt, ohne sich zu kümmern ob sie durchgeführt werden. Natürlich kann es passieren, daß Orders nicht gefillt werden, dann ist eben weniger Geld verfügbar, bis die Order gefillt wird. Ich gehe davon aus, daß jede Order irgendwann einmal gefillt wird.

Der Antizyklische Bot ist nicht so tolerant. Jede einzelne Order verändert die Gewichtung der Coins untereinander, was der Antizyklische Bot sofort wieder ausgleicht. Erst mit mehreren Orders kannst Du ihn überlisten. Die Orders einer Dreiecksarbitrage stören nicht, da sie die Gewichtung nur sehr gering ändern, nur um den Profit der Arbitrage (und der ist immer sehr klein.)

Bei einem "to da moon" kannst Du auch mit laufendem Antizyklus Bot mitmachen, Du mußt nur zu jeder Kauforder eine Fake - Verkaufsdorder mit gleichem Betrag aber extrem hohen Preis in den Markt stellen. Bei einer Verkaufsorder zusätzlich eine Fake - Kauforder mit extrem niedrigen Preis in den Markt stellen. Ist der Pump and Dump fertig, die beiden Fake - Orders löschen. Mit "Fake" meine ich, daß es nicht geplant ist, dass diese Orders jemals gefillt werden. Wäre schon ein Zufall, wenn der Bot gerade eine Umgewichtung machen will, während Du die Order manuell eingibts.

Es kann tatsächlich vorkommen, dass Arbitragemöglichkeiten nicht wahrgenommen werden können, wegen offener Order. Bei CEX.IO ist das problem harmlos, da werden die Arbitrageorders fast immer sofort gefillt, bei BTCe ist das umgekehrt, meistens bleibt ein Leg über, der aber meist in ein Paar Minuten matcht. Allerdings habe ich auf BTCe noch Orders offen wie Verkaufe BTC um 590 USD, oder verkaufe LTC um 7.90 USD........


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on October 13, 2014, 08:08:27 PM

Das schwierigste wird dann vermutlich der Umgang mit den API's und die ganzen Fachbegriffe wie "generisch" und "Main Loop" :D
Das Schwierigste ist die Strategie. Das Programm soll ja Geld verdienen, ein Bot ist nur ein Werkzeug, der exakt das macht, wofür er programmiert wurde. Schnell und tausende Male hintereinander. Mit einer schlechen Strategie verliert der Bot viel mehr Geld, als es manuell möglich wäre.

Ich würde ein Bot Projekt von der Handelsstrategie angehen. Erst wenn die Strategie mit manuellem Handeln so funktioniert, wie geplant, lohnt es sich Zeit in die Entwicklung eines Bots zu investieren.
danke für die antworten, auch an xtral und Darkwinde :)
Das mit der strategie ist kein Problem, habe jetzt 1,5 Jahre erfahrung und eine sehr gut funktionierende Strategie entwickelt :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 13, 2014, 08:50:20 PM
Ich überlege gerade eine gute Verteilung der Währungen beim ArbBot zu implementieren. Also in der Art, dass der Bot eine Zeit leer läuft und dabei Statistiken über die Währungen sammelt, die in profitablen Sequenzen vorkommen. So dass man danach eine Liste von Währungen bekommt, die man halten sollte. Meine erste Idee sieht mal einfach so aus, dass ich einfach zähle, wie oft Währunge x in einer profitablen Sequenz auf Exchange y vorkommt. Idealerweise sollte aber vielleicht noch der Profit in diese Statistik eingehen, so dass man halt sieht, dass Währungen x eine durchschnittliche Profitabilität von y Prozent bringt. Habt ihr da tolle Ideen zu?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 13, 2014, 10:15:08 PM
Logbucheintrag vom 13.10.2014

Alle Bots ohne Absturz gelaufen.

Der 3EckArbitragebot hat dies gemacht, und dabei  0.00000437 BTC  und 0.02225176 LTC verdient:

2014-10-13 15:59:26 Rule15 0.97645625637017LTC > 131.76511251936FTC > 0.0099941182515387BTC > 0.97882972LTC
2014-10-13 15:59:27 Rule15 0.97711150659058LTC > 131.76943767906FTC > 0.0099944463061855BTC > 0.97884744LTC
2014-10-13 15:59:37 Rule15 0.97509503173437LTC > 131.36933820915FTC > 0.0099903208823251BTC > 0.97845876LTC
2014-10-13 16:08:13 Rule15 0.97389983445474LTC > 129.18243404071FTC > 0.0099916133585509BTC > 0.97684445LTC
2014-10-13 16:08:26 Rule15 0.97346121591313LTC > 129.04312870774FTC > 0.0099937172913955BTC > 0.97685875LTC
2014-10-13 16:08:46 Rule15 0.97472270060852LTC > 129.05179331809FTC > 0.009994388320277BTC > 0.97692434LTC
2014-10-13 16:09:00 Rule15 0.97406521160482LTC > 128.68527609317FTC > 0.0099788462607655BTC > 0.97540515LTC


Die Interexchange habe ich nicht gestartet.

Der Antizyklusbot hat eine Anpassung gemacht:

2014-10-13 03:35:57 [sell 0.14073822982489 LTC @ 3.8 EUR ]

Die Auswertung:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
12.10.20140.19755310.17226.54045157527135.240.497275178.7141.34
Ertrag 3EckArb0.000004370.0222517600000.000235570.08 0.06
% 3EckArb0.0022%0.2188%0%0%0%0%0.0474%0.0448%0.0425%
Ertrag InterArb000000000
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus-0.00000037 -0.49485176 0 0 0 0.52 -0.01001557 5.56 3.25
% Antizyklus-0.0002%-4.8647%0%0%0%1.4756%-2.0141%3.1114%2.2994%
13.10.20140.1975579.69966.54045157527135.760.487495184.34144.65
Änderung0.000004 -0.4726 0 0 0 0.52 -0.00978 5.64 3.31
% Änderung0.002%-4.646%0%0%0%1.4756%-1.9667%3.1561%2.3419%-0.3171%

Hier sieht man wieder, welchen Einfluß die Währung auf die Auswertung hat. In BTC gerechnet ein Verlust von ca. 2%, in USD einen Gewinn von ca. 3%, in EUR gerechnet, einen Gewinn von 2%.





Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 14, 2014, 09:38:14 AM
Ich überlege gerade eine gute Verteilung der Währungen beim ArbBot zu implementieren. Also in der Art, dass der Bot eine Zeit leer läuft und dabei Statistiken über die Währungen sammelt, die in profitablen Sequenzen vorkommen. So dass man danach eine Liste von Währungen bekommt, die man halten sollte. Meine erste Idee sieht mal einfach so aus, dass ich einfach zähle, wie oft Währunge x in einer profitablen Sequenz auf Exchange y vorkommt. Idealerweise sollte aber vielleicht noch der Profit in diese Statistik eingehen, so dass man halt sieht, dass Währungen x eine durchschnittliche Profitabilität von y Prozent bringt. Habt ihr da tolle Ideen zu?
Leer würde ich den Bot nicht laufen lassen, der kann ja trotzdem was tun, und nebenbei Statistiken einsammeln. Es ist sehr interessant, dass es bei der Arbitrage oftmals zielführend ist, vom naheliegenden Fall abzuweichen. An eine BTC - LTC - USD Arbitrage denkt ja jeder. Gestern hat der Bot Arbitragen zwischen FTC - LTC - BTC gefunden, habe die FTC Position nur wegen der Arbitrage. Besonders Interessant finde ich die Arbitragen mit 4 Legs oder mehr Legs.

Erfahrungsgemäß kommen Arbitragemöglichkeiten mit mehr als 3 Legs recht selten vor, ich habe den Verdacht, daß es, wenn immer eine Arbitrage mit mehr als 3 Legs gefunden wird, es auch eine mit genau 3 Legs geben muß. Diese Aussage ist nur eine Vermutung, ich befürchte, daß man sie nur theoretisch beweisen oder wiederlegen kann, die realen Daten, die ein Bot sieht, sind ungeeigent, da nicht vom gleichen Zeitpunkt. Eine Antwort auf dieses Thema wäre deswegen sehr Interessant, da es weniger Rechenaufwand ist, wenn der Bot auf 3 Legs beschränkt ist.

Was ich auch noch in eine Auswertung aufnehmen würde, wie oft eine Arbitrage sofort vollständig gematcht wird. Diese Daten bekommst Du aber von einem Bot der aktiv arbeitet, und auch die Orders, die er in den Markt stellt, aktiv überwacht.

Hier muß ich die Darstellung der Trades (=gematchte Orders) und offene Orders ab den Exchanges kritisieren. Bei BTCe und CEX.IO ist es nicht möglich, aufgrund der seltsamen Darstellung der Trades und Orders, sinnvolle Auswertungen zu machen. Gibt es eine Exchange, die das sauber löst, sadaß man bei jeder Order sehen kannst, wann sie ein den Markt gestellt wurde, und wann und wie sie teilweise oder vollständig gematcht wurde?



Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 14, 2014, 06:39:56 PM
Bin mir nicht sicher ob ich deine Frage verstehe...
Möchtest du wissen ob wir einen Exchange kennen der dir via API den aktuellen Status einer Order (Offen, Teil erfüllt, voll erfüllt) wiedergibt?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 14, 2014, 07:35:08 PM
Kalkulatorix: ich rechne mit max 5 Legs und hab da in den letzten Tagen einiges gesehen, was mich überrascht hat. Auch und gerade mit Coins, von denen ich vorher noch nie was gehört hab. Also versuch ich möglichst alles zu erfassen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 14, 2014, 09:10:37 PM
Bin mir nicht sicher ob ich deine Frage verstehe...
Möchtest du wissen ob wir einen Exchange kennen der dir via API den aktuellen Status einer Order (Offen, Teil erfüllt, voll erfüllt) wiedergibt?
Mich würde da schon etwas mehr interessieren. Eine ungefähre Abschätzung, wie hoch die Wahrscheinlichkeit ist, das ein Leg nicht sofort gematcht wird, und wie viele Legs in einigen Minuten, wie viele Legs in einigen Stunden, Tagen oder Wochen ungematcht bleiben. Davon hängt nämlich ab, wie groß eine Arbitrage im Verhältnis zum verfügbaren Kapital sein darf. Ist das Verhältnis Arbitrage / Kapital zu groß, kann es leicht passieren, dass durch offene Orders so viel Kapital gebunden ist, dass gar nichts mehr geht, oder weiteres Arbitrieren keinen Sinn mehr macht.

Nimmt man andererseits zu kleine Arbitragebeträge, bleibt der Gewinn auch klein.

Das Optimum wird durch die Kelly Formel berechnet. Die ist in ihrer klassischen Form für einzelne Investitionen sinnvoll, die gibt es aber auch in einer erweiterten Form, wo man zu einer Investition verschiedene Ausgänge mit deren Wahrscheinlichkeiten eingeben kann. Die Investitionen wären in diesem Fall die Arbitragen, und die Ausgänge ein Histogramm, wie lange es dauert, bis alle Legs gematcht sind und welcher Schaden dadurch entsteht, dass einzelne Legs längere Zeit ungematcht bleiben.

Es ist nämlich sehr Interessant, mit welch kleinen Anteilen laut Kelly man handeln sollte, damit der Gewinn maximiert wird.

Das ist aber ohnehin nur ein Gedankenspiel, dann

a.) der Bot muss ja erst handeln
b.) dann kann man die Zahlen auswerten (die man aber aus den Exchange Daten nicht auslesen kann, und der Bot keine API calls dafür verschwenden darf)
c.) um sie dann in die Kelly Formel einzusetzen, damit man den Wert bekommt, der schon für a.) nötig gewesen wäre.

Edit: Hier ist der Link zu einem erweiterten Kelly Kalkulator. http://www.sportsbookreview.com/betting-tools/kelly-calculator/


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 14, 2014, 09:38:15 PM
Kalkulatorix: ich rechne mit max 5 Legs und hab da in den letzten Tagen einiges gesehen, was mich überrascht hat. Auch und gerade mit Coins, von denen ich vorher noch nie was gehört hab. Also versuch ich möglichst alles zu erfassen.
Genau so ist es. Auch auf CEX.IO kommt die "klassiche" Arbitrage USD - BTC - LTC fast nie bei mir vor. Da sind fast immer DRK, DOGE oder FTC beteiligt. Das zeigt aber, wie wichtig so eine Analyse ist, welche chancen verpasst werden, wenn man nicht alle Möglichkeiten auswertet.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 14, 2014, 09:54:57 PM
Bin mir nicht sicher ob ich deine Frage verstehe...
Möchtest du wissen ob wir einen Exchange kennen der dir via API den aktuellen Status einer Order (Offen, Teil erfüllt, voll erfüllt) wiedergibt?
Mich würde da schon etwas mehr interessieren. Eine ungefähre Abschätzung, wie hoch die Wahrscheinlichkeit ist, das ein Leg nicht sofort gematcht wird, und wie viele Legs in einigen Minuten, wie viele Legs in einigen Stunden, Tagen oder Wochen ungematcht bleiben. Davon hängt nämlich ab, wie groß eine Arbitrage im Verhältnis zum verfügbaren Kapital sein darf. Ist das Verhältnis Arbitrage / Kapital zu groß, kann es leicht passieren, dass durch offene Orders so viel Kapital gebunden ist, dass gar nichts mehr geht, oder weiteres Arbitrieren keinen Sinn mehr macht.

Nimmt man andererseits zu kleine Arbitragebeträge, bleibt der Gewinn auch klein.

Das Optimum wird durch die Kelly Formel berechnet. Die ist in ihrer klassischen Form für einzelne Investitionen sinnvoll, die gibt es aber auch in einer erweiterten Form, wo man zu einer Investition verschiedene Ausgänge mit deren Wahrscheinlichkeiten eingeben kann. Die Investitionen wären in diesem Fall die Arbitragen, und die Ausgänge ein Histogramm, wie lange es dauert, bis alle Legs gematcht sind und welcher Schaden dadurch entsteht, dass einzelne Legs längere Zeit ungematcht bleiben.

Es ist nämlich sehr Interessant, mit welch kleinen Anteilen laut Kelly man handeln sollte, damit der Gewinn maximiert wird.

Das ist aber ohnehin nur ein Gedankenspiel, dann

a.) der Bot muss ja erst handeln
b.) dann kann man die Zahlen auswerten (die man aber aus den Exchange Daten nicht auslesen kann, und der Bot keine API calls dafür verschwenden darf)
c.) um sie dann in die Kelly Formel einzusetzen, damit man den Wert bekommt, der schon für a.) nötig gewesen wäre.

Edit: Hier ist der Link zu einem erweiterten Kelly Kalkulator. http://www.sportsbookreview.com/betting-tools/kelly-calculator/


Ok verstanden und nein kenne leider keine. Mein Algorithmus ist momentan sehr stupide und konservativ ausgelegt. Nehme lieber auch kleine positive Trades mit als nur auf Big Deals zu warten. Natürlich verpasse ich dann auch mal was aber geschenkter Gaul und so ;)

Werde mal über deine Anforderung grübeln ob man das umsetzen kann bzw. ob ich da was implementieren kann. Bin leider momentan beruflich sehr eingespannt, dass ich nichtmal dazu komme paar komfort Funktionen in meinen Bot einzubauen :( scheiß First World Problems ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 14, 2014, 11:47:55 PM
Logbucheintrag vom 14.10.2014

Alle Bots ohne Absturz gelaufen.

Der 3EckArbitragebot hat dies gemacht, und dabei   0.00019186 BTC  und 0.06 USD verdient:

2014-10-14 09:36:58 Rule11 0.012635614234785BTC > 5USD > 17821.425DOGE > 0.01280576BTC
2014-10-14 16:56:59 Rule11 0.012879231475816BTC > 5USD > 17949.636690647DOGE > 0.01289789BTC
2014-10-14 21:27:34 Rule10 0.012411223821186BTC > 18487.162524326DOGE > 5USD > 0.01241293BTC
2014-10-14 21:27:35 Rule10 0.012411223821186BTC > 18487.162524326DOGE > 5USD > 0.01241293BTC

Die Interexchange habe ich nicht gestartet.

Der Antizyklusbot hat keine Anpassung gemacht.

Das ist etwas verwunderlich, da der BTC Preis im Vergleich zu USD gestiegen ist, eine Analyse hat ergeben, dass die Anpassung in etwa 0.009999 BTC ausmachen würde,
es war aber als Limit 0.01 eingestellt, also ein Gegenwert von derzeit 4 EUR. Habe alle minimalen Tradebeträge durch 10 geteilt. Jetzt sollte der Bot etwas mehr Trades machen.


Die Auswertung:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
13.10.20140.1975579.69966.54045157527135.760.487495184.34144.65
Ertrag 3EckArb0.00019186000000001600000.060.000191860.07 0.05
% 3EckArb0.0971%0%0%0%0%0.1678%0.0394%0.038%0.0346%
Ertrag InterArb000000000
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus0.00000014 -0.132 0 0 0 0 -0.01105386 2.73 3.13
% Antizyklus0.0001%-1.3609%0%0%0%0%-2.2675%1.481%2.1638%
14.10.20140.1977499.56766.54045157527135.820.476633187.14147.83
Änderung0.000192 -0.132 0 0 0 0.06 -0.010862 2.8 3.18
% Änderung0.0972%-1.3609%0%0%0%0.1678%-2.2281%1.5189%2.1984%-0.0999%



Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on October 15, 2014, 07:06:54 PM
Darkwinde: falls Du möchtest kann ich Dinge bei mir implementieren und geb Dir dann die Sources? So hätte wir ggf. beide was davon?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 15, 2014, 10:40:31 PM
Logbucheintrag vom 15.10.2014

heute war ja einiges Los. Der Herabsetzung des Limits beim Antizyklus Bot war ein voller Erfolg, so viele Trades hat er noch nie gemacht:

22 Stück!

2014-10-15 01:47:56  [sell 0.0010479797322518 BTC @ 396 USD ]
2014-10-15 01:52:55  [buy 0.18590835425974   DRK @ 0.00517739 BTC ]
2014-10-15 01:57:55  [buy 0.14710156995741    DRK @ 0.00517194 BTC ]
2014-10-15 03:15:40  [buy 0.05786662657429    LTC @ 0.01018954 BTC ]
2014-10-15 03:20:39  [buy 846.99138582898  DOGE @ 0.00000069 BTC ]
2014-10-15 03:25:39  [buy 0.045673236777021  LTC @ 0.01019193 BTC ]
2014-10-15 03:40:39  [buy 694.09660719974   DOGE @ 0.00000069 BTC ]
2014-10-15 03:45:39  [buy 550.45748361816 DOGE @ 0.00000069 BTC ]
2014-10-15 04:30:39  [sell 0.014531238341331   LTC @ 4.07059999 USD ]
2014-10-15 07:20:39  [buy 359.90693830549DOGE @ 0.00006625 LTC ]
2014-10-15 09:25:40  [buy 324.3426311036  DOGE @ 0.00006672 LTC ]
2014-10-15 11:00:40  [buy 680.05133023637   DOGE @ 0.00000067 BTC ]
2014-10-15 13:45:40  [buy 0.096274332084475   DRK @ 0.00531109 BTC ]
2014-10-15 17:00:40  [sell 0.017021667111149  LTC @ 4 USD ]
2014-10-15 17:15:40  [sell 0.015829788846018    LTC @ 4 USD ]
2014-10-15 20:30:40  [sell 0.021454352920181   LTC @ 4 USD ]
2014-10-15 22:15:40  [buy 0.079131759785337  DRK @ 0.005 BTC ]
2014-10-15 22:25:40  [buy 0.093002795866381  DRK @ 0.00500136 BTC ]
2014-10-15 22:30:39  [buy 0.10903720583183 DRK @ 0.004933 BTC ]
2014-10-15 22:50:40  [buy 498.91021397929 DOGE @ 0.00000067 BTC ]
2014-10-15 23:00:40  [buy 0.055525538860222 LTC @ 0.01024497 BTC ]
2014-10-15 23:05:40  [buy 0.03540804821451 LTC @ 0.01024399 BTC ]

Der 3Eckarbistragbot hat 10 Arbitragen gefunden und dabei 0.00073789 BTC und 0.03 USD verdient.

Hier die Daten im Detail:

2014-10-15 10:28:48 Rule4 0.012581994425126BTC > 2.2777999745817DRK > 5USD > 0.01267269BTC
2014-10-15 10:28:50 Rule4 0.012581994425126BTC > 2.2777999745817DRK > 5USD > 0.01267269BTC
2014-10-15 22:57:57 Rule5 0.035416891399437BTC > 13.76731142494USD > 7.25090118DRK > 0.03545835BTC
2014-10-15 22:57:58 Rule5 0.035412306786468BTC > 13.765529286757USD > 7.2499625720571DRK > 0.03545376BTC
2014-10-15 22:57:59 Rule5 0.035416891399437BTC > 13.76731142494USD > 7.25090118DRK > 0.03545835BTC
2014-10-15 22:58:00 Rule5 0.012862675327907BTC > 5USD > 2.6333758844391DRK > 0.01287773BTC
2014-10-15 22:58:01 Rule5 0.012862675327907BTC > 5USD > 2.6333758844391DRK > 0.01287773BTC
2014-10-15 22:58:56 Rule5 0.012862675327907BTC > 5USD > 2.6127006861482DRK > 0.01306345BTC
2014-10-15 22:58:57 Rule5 0.012862675327907BTC > 5USD > 2.6127006861482DRK > 0.01306345BTC
2014-10-15 23:18:48 Rule5 0.012862675327907BTC > 5USD > 2.5472174578867DRK > 0.01286314BTC

Das ergibt diese Auswertung:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
14.10.20140.1977499.56766.54045157527135.820.476633187.14147.83
Ertrag 3EckArb0.0007378900000.030.000737890.26 0.21
% 3EckArb0.3731%0%0%0%0%0.0838%0.1548%0.1389%0.1421%
Ertrag InterArb000000000
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus-0.00882289 -0.483 0.7105 3958 0 0.61 -0.00607189 -3.44 -4.56
% Antizyklus-4.4617%-5.0483%10.8632%7.6743%0%1.703%-1.2739%-1.8382%-3.0846%
15.10.20140.1896649.08467.25095553327136.460.471299183.96143.48
Änderung-0.008085 -0.483 0.7105 3958 0 0.64 -0.005334 -3.18 -4.35
% Änderung-4.0885%-5.0483%10.8632%7.6743%0%1.7867%-1.1191%-1.6993%-2.9426%-0.4032%

Der Antizyklus Bot hat die Anzahl der Coins in DRK und DOGE erhöht, die die beiden im Preis gefallen sind, zulasten von BTC und LTC. Genau so soll es sein.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 15, 2014, 11:23:16 PM
@kalkulatorix:  ;D langsam wird es spannend bei den Bots

@daybyter: könnte man mal drüber quatschen, muss aber erstmal mit meinem Wust klarkommen. Hab zwar Ideen wo es hingehen kann, aber bin mir absolut unschlüssig. Gerade auch in Hinblick was für abgefahrene Varianten diskutiert werden. Meiner ist halt Simple and Stupid.


Bei mir war heute ein mieser Trading Tag:
1) alle paar Wochen schreibt mir aus bisher unbekannten Gründen die Cryptsy Plattform -1600 SAT2 auf mein Konto. Da ich keine SAT2 im Portfolio habe geht es dann ins Minus vom Bestand (alleine die Tatsache ist schon schäbig) aber mit einem Minus gehen gar keine withdrawals mehr. Mal wieder ein Ticket geschrieben. Second Level schweigt sich aus, bis ich nach 12 Stunden die Faxen dicke hatte und zum 3. mal die SAT2 Coins auf meine Kosten wieder auf 0 gesetzt habe.
2) ich räume gerade meinen Source Code auf und hab versehentlich meine Auto withdraw Funktion mehrfach aktiviert, dass er angefangen hat fröhlich Coins zu verschieben. Dummes Datenbank Feld mit anderem Namen ;)
3) Die aus 2 verschickten Coins die von cryptsy stammen sind jetzt seit 4 Stunden pending. Wieder ticket auf und mal sehen was heute Nacht passiert... Gehe jetzt erstmal schlafen.


Frage in die Runde: Würde generell auch Interesse bestehen, dass ich meine BotTradeDaten veröffentliche? Soll kein Wettstreit sein würde mich nur gerne über eure Einschätzung freuen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 16, 2014, 12:09:54 PM
Bei mir war heute ein mieser Trading Tag:
1) alle paar Wochen schreibt mir aus bisher unbekannten Gründen die Cryptsy Plattform -1600 SAT2 auf mein Konto. Da ich keine SAT2 im Portfolio habe geht es dann ins Minus vom Bestand (alleine die Tatsache ist schon schäbig) aber mit einem Minus gehen gar keine withdrawals mehr. Mal wieder ein Ticket geschrieben. Second Level schweigt sich aus, bis ich nach 12 Stunden die Faxen dicke hatte und zum 3. mal die SAT2 Coins auf meine Kosten wieder auf 0 gesetzt habe.
Das ist aber ärgerlich, vor allem da es keine Möglichkeit gibt, das selbst zu beheben. Der SAT2 Coin sieht eine Zahlung vom 1% im Jahr an die Entwickler vor, da dürfte Cryptsy ein Problem mit der Aufteilung haben.

2) ich räume gerade meinen Source Code auf und hab versehentlich meine Auto withdraw Funktion mehrfach aktiviert, dass er angefangen hat fröhlich Coins zu verschieben. Dummes Datenbank Feld mit anderem Namen ;)
Ja, vor einer Source Code Pflege habe ich auch immer Angst. Muß aber ab und zu gemacht werden, ich mache oft ganz am Anfang eines Projekters Designfehler, die irgendwann so störend werden, dass ich das Risiko eingehe, bei der Pflege eine Fehler zu machen.

3) Die aus 2 verschickten Coins die von cryptsy stammen sind jetzt seit 4 Stunden pending. Wieder ticket auf und mal sehen was heute Nacht passiert... Gehe jetzt erstmal schlafen.
4 Stunden pending ist bei manchen Coins in Ordnung.


Frage in die Runde: Würde generell auch Interesse bestehen, dass ich meine BotTradeDaten veröffentliche? Soll kein Wettstreit sein würde mich nur gerne über eure Einschätzung freuen.
Gerne können wir unsere BotTradeDaten hier vergleichen. Sorry, wenn ich Dir das jetzt so offen schreibe, aber es kann durchaus sein, dass ich dann die eine oder andere Idee von Dir übernehme. Gerade bei Arbitragestrategien kann es ein Problem werden, wenn viele dieselbe Strategie gleichzeitig verfolgen. ;D


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 16, 2014, 05:28:41 PM
Nee sind Coins die normal binnen 30 Minuten rausgehen.
Pending jetzt seit bald 24 Stunden und mehr als 2nd Level kümmert sich drum gibt's nicht. ;(
Habe dennoch paar Trades machen können ;)

Teile gerne, zumal ...
Selbst wenn du es nachbaust musste schon gleiche Coins und exchanges nutzen um mich zu beeinflussen. Von daher alles gut und im Zweifel 1% deiner Gewinne an mich *fg*

Schlage vor wenn ich alle Coins wieder beisammen habe alles zu nullen und dann hier poste.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 17, 2014, 12:06:34 AM
Logbucheintrag vom 16.10.2014

Der Antizyklus Bot hat einen neuen Rekordwert an Trades geschafft: 31

16.10.2014 08:46:50 [sell 0.010944443779002 LTC @ 4.0001 USD]
16.10.2014 15:31:50 [sell 0.050108703935857 LTC @ 0.010357 BTC]
16.10.2014 15:36:50 [sell 0.03666598100584 LTC @ 0.010343 BTC]
16.10.2014 15:41:50 [sell 0.033341660836425 LTC @ 0.01034206 BTC]
16.10.2014 15:46:50 [sell 0.033397775646832 LTC @ 0.010343 BTC]
16.10.2014 15:51:50 [sell 0.02617838938871 LTC @ 0.010342 BTC]
16.10.2014 17:01:50 [sell 0.016663736231462 DRK @ 0.0056985 BTC]
16.10.2014 17:26:50 [sell 0.040423504189985 LTC @ 0.010355 BTC]
16.10.2014 17:31:53 [sell 0.022451814048835 LTC @ 3.9001 USD]
16.10.2014 17:36:50 [sell 0.02783132245673 LTC @ 0.010301 BTC]
16.10.2014 17:41:50 [sell 0.027820044724381 LTC @ 3.9001 USD]
16.10.2014 17:46:49 [sell 0.025214723922282 LTC @ 3.9001 USD]
16.10.2014 17:51:50 [sell 0.022811777511763 LTC @ 3.9001 USD]
16.10.2014 17:56:50 [sell 0.021245487715952 LTC @ 0.010404 BTC]
16.10.2014 18:01:51 [sell 0.01876781905499 LTC @ 0.010428 BTC]
16.10.2014 18:06:50 [sell 0.017021839376884 LTC @ 0.01042 BTC]
16.10.2014 18:11:50 [sell 0.01596768877071 LTC @ 0.010422 BTC]
16.10.2014 18:16:50 [sell 0.014318545972629 LTC @ 0.010427 BTC]
16.10.2014 18:21:50 [sell 0.01854290559552 DRK @ 0.0059 BTC]
16.10.2014 18:26:50 [sell 0.014919244249957 DRK @ 0.0059 BTC]
16.10.2014 18:31:50 [sell 0.014411984585079 DRK @ 0.0059 BTC]
16.10.2014 19:31:51 [sell 0.016580212133386 DRK @ 0.00583174 BTC]
16.10.2014 19:36:51 [sell 0.015687109934759 DRK @ 0.00583174 BTC]
16.10.2014 19:41:51 [sell 0.015146996142083 DRK @ 0.00583174 BTC]
16.10.2014 19:46:51 [sell 0.013019378469158 LTC @ 0.010434 BTC]
16.10.2014 19:51:54 [sell 0.013595107831675 DRK @ 0.00583174 BTC]
16.10.2014 20:06:51 [sell 0.013423231412213 DRK @ 0.00583174 BTC]
16.10.2014 20:16:51 [sell 0.019996294374539 LTC @ 0.010436 BTC]
16.10.2014 20:21:51 [sell 0.017994838025326 LTC @ 0.010439 BTC]
16.10.2014 22:46:50 [buy 0.027919884600236 LTC @ 0.01051199 BTC]
16.10.2014 00:16:49 [buy 0.014286058848728 LTC @ 0.01052 BTC]


Der 3EckArbitragebot hat 2 Arbitragen mit einem Gewinn von 0.00001336 BTC gemacht

2014-10-16 17:35:49 Rule5 0.013289176963328BTC > 5USD > 2.2579180995475DRK > 0.01329507BTC
2014-10-16 17:36:26 Rule5 0.013289176963328BTC > 5USD > 2.2579180995475DRK > 0.01329665BTC


Das Ergebnis von heute ist daher:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
15.10.20140.1896649.08467.25095553327136.460.471299183.96143.48
Ertrag 3EckArb0.00001336000000.000013360 0
% 3EckArb0.007%0%0%0%0%0%0.0028%0%0%
Ertrag InterArb000000000
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus0.00555964 -0.284 -0.139 0 0 0.32 0.01405064 -2.43 -1.68
% Antizyklus2.9313%-3.1262%-1.917%0%0%0.8777%2.9813%-1.3209%-1.1709%
16.10.20140.1952378.80067.11195553327136.780.485363181.53141.8
Änderung0.005573 -0.284 -0.139 0 0 0.32 0.014064 -2.43 -1.68
% Änderung2.9384%-3.1262%-1.917%0%0%0.8777%2.9841%-1.3209%-1.1709%0.2857%


Ohne dass das extra in den Antizyklus Bot programmiert ist, hat er durch die Anpassungen ein Buy Low - Sell High gemacht:

Die DRK gestern um unter 0.00517739 BTC gekauft, heute über 0.00583174 BTC verkauft.
Die LTC gestern um unter 0.01018954 BTC gekauft, heute über 0.010343 BTC verkauft.



Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 18, 2014, 12:23:06 AM
Logbucheintrag vom 17.10.2014

Der Antizyklus Bot hat heute 6 Anpassungen gemacht:

17.10.2014  01:47:14 [buy 0.010623949213139] LTC @ 0.01049788 BTC]
17.10.2014  03:27:13 [buy 222.32566970107] DOGE @ 0.00000068 BTC]
17.10.2014  03:27:13 [sell 222.32566970107] DOGE @ 0.00006565 LTC]
17.10.2014  19:27:15 [sell 0.016380892844878] DRK @ 0.00592057 BTC]
17.10.2014  21:12:14 [buy 300.59681107254] DOGE @ 0.00006316 LTC]
17.10.2014  21:17:14 [buy 211.7412913547] DOGE @ 0.00006107 LTC]
17.10.2014  22:47:14 [buy 386.80491023098] DOGE @ 0.00006207 LTC]


Der 3EckArbitrage Bot hat heute 10 Arbitragen gemacht mit einem Gewinn von 0.00242422 BTC und einem Verlust von 0.10 USD

2014-10-17 17:27:20 Rule5 0.040918784369544BTC > 15.195914902667USD > 7.11193065DRK > 0.04102474BTC
2014-10-17 17:27:22 Rule5 0.013463744905008BTC > 5USD > 2.3400797831369DRK > 0.01349861BTC
2014-10-17 17:28:11 Rule5 0.013463744905008BTC > 5USD > 2.3400797831369DRK > 0.01349861BTC
2014-10-17 17:47:55 Rule5 0.040918784369544BTC > 15.195914902667USD > 7.11193065DRK > 0.04126812BTC
2014-10-17 17:47:56 Rule5 0.040918784369544BTC > 15.195914902667USD > 7.11193065DRK > 0.04126812BTC
2014-10-17 17:47:57 Rule5 0.040918784369544BTC > 15.195914902667USD > 7.11193065DRK > 0.04126812BTC
2014-10-17 17:47:58 Rule5 0.040918784369544BTC > 15.195914902667USD > 7.11193065DRK > 0.04126812BTC
2014-10-17 17:47:59 Rule5 0.040918784369544BTC > 15.195914902667USD > 7.11193065DRK > 0.04126812BTC
2014-10-17 22:47:05 Rule2 0.036117858460919BTC > 6.2040646334639DRK > 3.4979539702554LTC > 0.0364421BTC
2014-10-17 22:47:07 Rule2 0.036288559159906BTC > 6.2081690180805DRK > 3.50026809LTC > 0.03646621BTC

Das Ergebnis ist:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
16.10.20140.1952378.80067.11195553327136.780.485363181.53141.8
Ertrag 3EckArb0.002424220000-0.10.002424220.86 0.67
% 3EckArb1.2417%0%0%0%0%-0.2719%0.4995%0.4738%0.4725%
Ertrag InterArb000000000
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus-0.00081522 0.995 -0.0164 900 0 0 0.00935278 3.18 2.48
% Antizyklus-0.4176%11.306%-0.2306%1.6207%0%0%1.927%1.7518%1.7489%
17.10.20140.1968469.79567.09555643327136.680.49714185.57144.95
Änderung0.001609 0.995 -0.0164 900 0 -0.1 0.011777 4.04 3.15
% Änderung0.8241%11.306%-0.2306%1.6207%0%-0.2719%2.4264%2.2255%2.2214%1.3152%




Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 18, 2014, 10:07:48 AM
3 Tage und meine Withdraws sind immer noch pending. Habe jetzt ein Ticket aufgemacht, das ich den Status des ersten Tickets wissen möchte. Mal sehen was passiert ;) Vielleicht löscht ja wieder ein Manager willkürlich die Tickets :D Ja das Ticket wurde wieder ohne Kommentar gelöscht

Nachdem jetzt Cryptsy 1 Tag lang faktisch weg war, laufen die Bots wieder...mehr schlecht als Recht da mir wie gesagt einige Coins wegen dem withdraw Theme fehlen Cryptsy API ist weiterhin nicht stabil und nutzbar. Überlege mir gerade echt alle abzuziehen und auf andere Exchanges zu gehen. Fühlt sich schon wie bei GOX dort an. Aber habe auch gute Nachrichten...habe jetzt meine "dynamic rebalance" Strategie zur hälfte implementiert. Er hat bereits zwei Coins ausgemacht die nachgekauft werden müssen (Kaufprozess muss noch implementiert werden) und zwei Trades bereits als Verkauf bereits durchgeführt:

1) POT
DynRebal: OldTotal: 0.00220157, OldAmount: 258.09766981, OldPrice: 0.00000853
DynRebal: NewTotal: 0.00237836, NewAmount: 240.23905585, SellAmount: 17.85861396, Price: 0.00000990

2) POT
DynRebal: OldTotal: 0.00237836, OldAmount: 240.2390558, OldPrice: 0.00000990
DynRebal: NewTotal: 0.00263181, NewAmount: 219.13488759, SellAmount: 21.10416821, NewPrice: 0.00001201


Mal sehen ob ich heute Zeit finde den Rest zu implementieren bzw. was wichtiger wäre, dass Cryptsy die Coins freigibt als withdraw oder dem account wieder gut schreibt. Aber das zeigt wieder, dass es gut ist nicht große Mengen auf den Exchanges zu haben...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 18, 2014, 11:37:52 AM
3 Tage und meine Withdraws sind immer noch pending. Habe jetzt ein Ticket aufgemacht, das ich den Status des ersten Tickets wissen möchte. Mal sehen was passiert ;) Vielleicht löscht ja wieder ein Manager willkürlich die Tickets :D Ja das Ticket wurde wieder ohne Kommentar gelöscht

Nachdem jetzt Cryptsy 1 Tag lang faktisch weg war, laufen die Bots wieder...mehr schlecht als Recht da mir wie gesagt einige Coins wegen dem withdraw Theme fehlen Cryptsy API ist weiterhin nicht stabil und nutzbar. Überlege mir gerade echt alle abzuziehen und auf andere Exchanges zu gehen.
Gibt es zu Cryptsy Atlernativen? Gerade die riesige Anzahl von Coins, die in Cryptsy handelbar sind, macht es eine Überlegung Wert, auch auf Cryptsy einen Bot zu haben. Aber wenn das nicht stabil läuft, dann macht es keinen Sinn. Ich habe eigentlich geplant, innerhalb der nächsten Wochen eine weitere Exchange zu erschließen, Cryptsy war mein Favorit, aber wann das dort so ist.....
Obwohl, für einen Antizyklus Bot wäre ein instabiles API nicht so sehr das Problem, aber bei zeitkritischen Arbitragen ist so was untragbar.

Dass der Support Tickets löscht, ist ebenfalls untragbar.

Aber habe auch gute Nachrichten...habe jetzt meine "dynamic rebalance" Strategie zur hälfte implementiert. Er hat bereits zwei Coins ausgemacht die nachgekauft werden müssen (Kaufprozess muss noch implementiert werden)
Ganauso mach ich das auch. Der Bot muss einmal einige Zeit arbeiten, statt der echten Trades schreibt er einfach ins Logfile, was er gerne machen würde. Sobald das er einige Zeit zuverlässigt funktioniert, wird das Traden aktiviert. Da kann ein schlechtes API auch von Vorteil sein, als Testfall dass der Bot keinen Unsinn macht, wenn er. z.B. bei einem Markt keine offenen Orders bekommt. Eine besonder Bedeutung dabei hat die akribische Auswertung des Logfiles. Ich mache oft den Fehler, dass ich bid mit ask vertausche, das erkenne ich nur, wenn ich den Bot zeitnah überwache.

1) POT
DynRebal: OldTotal: 0.00220157, OldAmount: 258.09766981, OldPrice: 0.00000853
DynRebal: NewTotal: 0.00237836, NewAmount: 240.23905585, SellAmount: 17.85861396, Price: 0.00000990

2) POT
DynRebal: OldTotal: 0.00237836, OldAmount: 240.2390558, OldPrice: 0.00000990
DynRebal: NewTotal: 0.00263181, NewAmount: 219.13488759, SellAmount: 21.10416821, NewPrice: 0.00001201
Wenn ich das richtig verstehe (Sorry, ich kenne den POT Coin nicht, dürfte aber sehr volatil und deswegen interessant sein) ist der Preis vom POT gestiegen, und Dein Bot wollte verkaufen.

Mal sehen ob ich heute Zeit finde den Rest zu implementieren
Ja, die fehlende Zeit. Ich freue mich auch immer auf das Wochenende, dann dann ist dann mehr Zeit für Sinnvolles.  8)

Aber das zeigt wieder, dass es gut ist nicht große Mengen auf den Exchanges zu haben...
Ich denke, die Coins sind in einem Wallet am Besten aufgehoben. Ich würde in den Bot einbauen, dass er zum Stand an der Börse den Stand vom Wallet dazurechnet, und nur den Teil auf der Börse lassen, der für die Strategie nötig ist.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 18, 2014, 06:04:31 PM
Vielleicht auch nur selektive Wahrnehmung aber kaum eine Woche ohne Probleme diverser Art. Das jetzt ist nur der Gipfel und kann Cryptsy nicht wirklich mehr empfehlen außer exotische Coins zu dumpen.
Muss echt mal sehen wie ich das jetzt mache und welcher Exchange eine Alternative darstellt. Mintpal scheint ja auch im desolaten Zustand zu sein :(
Hat jemand eine Empfehlung? Withdraw via API wäre natürlich klasse.


POT bewegt sich nochmal zwischen 500 und 800, keine Ahnung warum der so abgeht. Vielleicht wegen CANN, muss mal schlau machen aber Zeit fehlt.
Bot hat sogar verkauft, hab's noch freigeschaltet. :) und das Ergebnis kennst ja :) war wegen dem API Thema nicht bis max ausgereizt, obwohl er verkaufen wollte. Man kann nicht alles haben.


Instabil mit nem 500 Fehler wäre auch ggf. doof für antizyklisch. Hab nun diverse Sicherungen eingebaut die nicht nötig wären wenn das alles nicht so unberechenbar wäre.



Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 18, 2014, 08:29:20 PM
Vielleicht auch nur selektive Wahrnehmung aber kaum eine Woche ohne Probleme diverser Art. Das jetzt ist nur der Gipfel und kann Cryptsy nicht wirklich mehr empfehlen außer exotische Coins zu dumpen.
Muss echt mal sehen wie ich das jetzt mache und welcher Exchange eine Alternative darstellt. Mintpal scheint ja auch im desolaten Zustand zu sein :(
Hat jemand eine Empfehlung? Withdraw via API wäre natürlich klasse.

Einen Link zu einem Exchange - Vergleich kann ich liefern: http://www.bitcompare.de/
Und hier ein Vergleich der Umsätze: http://www.cryptocoincharts.info/markets/graphicalComparison

Auch ich wäre für eine Empfehlung dankbar. Meine Auswertung würde ich in dieser Reihenfolge starten, mit Fokus auf Umsatzstarke Exchanges mit vielen Coins: Bittrex, Poloniex, Bter, Allcoin
Kriterien sind API, Withdrawal gut aber kein K.O. Kriterium (dann brauche ich aber 2, CEX.IO und BTCe unterstützen beide kein Withdraw ), und Zuverlässigkeit (ohne Empfehlung kann ich nur einschlägige Foren und
Google durchsuchen.)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 18, 2014, 08:54:07 PM
Danke dir. Da jetzt trotz freundlich verfasster Tickets (keine Ironie) ohne Kommentar diese wieder geschlossen werden und es bei den noch offenen nicht weiter geht bin ich mit dem Thema Cryptsy durch. Schalte mein Bot jetzt ab und such mir einen neuen zweiten exchange bzw. bis ich ihn integriert habe, mach ich auf Poloniex nur antizyklisch weiter.
Schade um die 90€, werde ich wohl abschreiben müssen.

Könnte gerade voll Kotzen bei sowas. Bin selber bei meiner Firma im 3rd Level Support unterwegs und kann nur den Kopf schütteln über so viel Unprofessionalität.

Melde mich dann morgen wieder hoffentlich besser gelaunt ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 18, 2014, 09:58:24 PM
Danke dir. Da jetzt trotz freundlich verfasster Tickets (keine Ironie) ohne Kommentar diese wieder geschlossen werden und es bei den noch offenen nicht weiter geht bin ich mit dem Thema Cryptsy durch. Schalte mein Bot jetzt ab und such mir einen neuen zweiten exchange bzw. bis ich ihn integriert habe, mach ich auf Poloniex nur antizyklisch weiter.
Schade um die 90€, werde ich wohl abschreiben müssen.

Könnte gerade voll Kotzen bei sowas. Bin selber bei meiner Firma im 3rd Level Support unterwegs und kann nur den Kopf schütteln über so viel Unprofessionalität.

Melde mich dann morgen wieder hoffentlich besser gelaunt ;)
Darkwinde, ich drücke Dir die Daumen, das das noch gut für Dich ausgeht, und Du die Coins irgendwie doch noch zurückbekommst. Google findet mehrere ähnliche Fälle, aber meistens fehlt das Ende der Geschichte.

Wie bist Du mit Poloniex zufrieden?

BTC-e und CEX.IO kann ich empfehlen, die passen aber nicht in Dein Profil, wegen fehlender API Unterstützung von Withdrawals und recht wenig unterstützen Coins. BTC-e ist zwar in etwa alle 2 Monate Opfer einer DDOS Attacke, das sind aber nur Ausfälle von mehreren Stunden. CEX.IO hatte noch keinen Ausfall, den ich bemerkt habe, nur eine Portierung der Datenbank, die war aber angekündigt.

Bei BTC-e ist nur etwas im API seltsam, wenn man offene Orders abfragt, und es gibt keine offenen Orders im Markt, sagt das API false. Eine leere Liste würde mir besser ins Konzept passen. ;D

Bei CEX.IO darf man nur 600 Abfragen in 600 Sekunden stellen, das wird ganz genau mitgezählt, bei Überschreitung dieser Abfragerate gibt es eine Zwangsause. Besser der Bot zählt da mit, da kann die Pause besser eingeteilt werden. Ich hatte aber noch keinen Fall, wo CEX.IO Orders blockert hat, das Limit dürfte wirklich nur die Abfragen betreffen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 18, 2014, 10:37:18 PM
Logbuch vom 18.10.2014

Heute war wieder wenig los.

Der 3EcksArbitrage Bot hat 5 Arbitragen gefunden mit einem Gewinn von 0.00001515 BTC, 0.03729781 LTC und einem Verlust von -0.01 USD.
Der Verlust in den USD stammt davon, dass CEX.IO die USD Fees auf 2 Kommastellen rundet, aber im Hintergrund die USD Fees doch genauer versteckt im System hat, und die Rundungsdifferenzen auf die 2 Stellen bei nachfolgenden USD Spesen ausgleicht. Das kann der Bot nicht berücksichtigen. Deswegen manchmal Gewinne um 0.01 USD und Verluste um 0.01 USD.

Im Detail war das:

2014-10-18 03:46:57 Rule0 0.036213169302662BTC > 13.549526843392USD > 3.47620182LTC > 0.0362259BTC
2014-10-18 07:47:30 Rule0 0.013382013325043BTC > 4.9983346007462USD > 1.2789623700428LTC > 0.01338444BTC
2014-10-18 18:58:21 Rule9 0.93836546761945LTC > 15415.449366438DOGE > 0.01BTC > 0.95083822LTC
2014-10-18 18:58:22 Rule9 0.93836546761945LTC > 15415.449366438DOGE > 0.01BTC > 0.95083822LTC
2014-10-18 18:58:23 Rule9 0.93836546761945LTC > 15415.449366438DOGE > 0.01BTC > 0.95071775LTC


Der Antizyklus Bot hat nur eine Anpassung gemacht:

2014-10-18 18:01:46 [buy 229.84832515801 DOGE @ 6.278e-5 LTC]


Im heutigen Ergebnis ein leichtes Minus:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
17.10.20140.1968469.79567.09555643327136.680.49714185.57144.95
Ertrag 3EckArb0.000015150.03729781000-0.010.000402670.14 0.11
% 3EckArb0.0077%0.3808%0%0%0%-0.0273%0.081%0.0754%0.0759%
Ertrag InterArb000000000
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus0.00001385 -0.45529781 0 230 0 0.01 -0.00766467 -1.23 -0.48
% Antizyklus0.007%-4.648%0%0.4076%0%0.0273%-1.5418%-0.6628%-0.3311%
18.10.20140.1968759.37767.09555666327136.680.489878184.48144.58
Änderung0.000029 -0.418 0 230 0 0 -0.007262 -1.09 -0.37
% Änderung0.0147%-4.2672%0%0.4076%0%0%-1.4608%-0.5874%-0.2553%-0.4083%




Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 18, 2014, 10:38:08 PM
Withdraw via API ist ja reiner Komfort und ja wenn man es einmal drin hatte will man es nicht missen. Statt alle 5 Minuten auf die Börse zu starren schaue ich nurnoch alle paar Stunden rein um ggf. Bugs zu verfolgen aber auch das sind meist nur Spezialfälle die selten kommen.

Poloniex bin ich sehr zu frieden. Typisch schlichtes UI eines Techis ;) würde es auch so machen ;) bisher habe ich nur 2 Probleme gehabt die binnen 48 Stunden erledigt waren. Kommunikation ist aber auch nicht die Stärke des Supports. API ist gut. Musste mich nur manchmal verbiegen um an gewisse Infos zu kommen. Habe keine genaue Zahl wieviel Abfragen gehen, habe aber einen Timer aktuell auf 200ms zwischen zwei Abfragen  laufen.

1 Abfrage pro Sekunde, Hmmm nicht schön aber ok. Sleep Timer for dem API Call und fertig :)

Hab mir gerade überlegt die "Chance" zu nutzen und während ich meine Wunden lecke, den Bot vollständig umstrukturiere :) was soll jetzt noch passieren muahahahaha ;)


Bin auf den heutigen Report gespannt!


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 18, 2014, 11:54:22 PM
Withdraw via API ist ja reiner Komfort und ja wenn man es einmal drin hatte will man es nicht missen. Statt alle 5 Minuten auf die Börse zu starren schaue ich nurnoch alle paar Stunden rein um ggf. Bugs zu verfolgen aber auch das sind meist nur Spezialfälle die selten kommen.
Ich lass mir vom Bot ein eMail schicken, wenn der Interexchange Bot gehandelt hat. Da steht dann, ich soll z.B. 0.05 BTC von CEX.IO nach BTC-e schicken, und 5 LTC von BTC-e nach CEX.IO senden. Das ist nicht Zeitkritisch, da könnte ich mehrere Arbitragen zusammenfassen, und Withdrawal Fees sparen, das würde auch von Unterwegs aus vom Tablett gehen. Dabei darf der Antizyklus Bot nicht laufen.

Poloniex bin ich sehr zu frieden. Typisch schlichtes UI eines Techis ;) würde es auch so machen ;) bisher habe ich nur 2 Probleme gehabt die binnen 48 Stunden erledigt waren. Kommunikation ist aber auch nicht die Stärke des Supports. API ist gut. Musste mich nur manchmal verbiegen um an gewisse Infos zu kommen. Habe keine genaue Zahl wieviel Abfragen gehen, habe aber einen Timer aktuell auf 200ms zwischen zwei Abfragen  laufen.

BTC-e hat auch ein simples Design (von Design kann man da eigentlich nicht sprechen, ist aber alles da, was man so braucht.) CEX.IO ist da schon optisch ansprechender, mit dem daraus resultierenden Problem, dass es auf manchen Internet-Explorer Versione und Tabletts nicht vernünftig funktioniert, Handeln und Charts gehen nicht auf allen Computern und Tabletts.


1 Abfrage pro Sekunde, Hmmm nicht schön aber ok. Sleep Timer for dem API Call und fertig :)

Das ist eine Möglichkeit. Für 3EcksArbitrage bedeutet das aber, dass der Bot dann mit Daten arbeitet, die bis zu 2 Sekunden alt sind. (Er braucht ja die Marktdaten von 3 Märkten.) Andere Möglichkeit ist, die Abfragen rasch hintereinander zu machen, dann arbeitet er mit aktuelleren Daten, muss aber nach 600 Abfragen warten, bis 600 Sekunden vorbei sind. Bei gleichmäßigen Abfragen jede Sekunde kann es eher passieren, dass Legs nicht gematcht werden, bei den schnellen Abfragen mit Pause dazwischen verpasst der Bot 2/3 der Chancen. Ich habe jetzt die schnelle Variante mit den Pausen gewählt. Mit der 1 Abfrage / 1 Sekunde sind mir einige Orders hängengeblieben, wo sich der Markt jetzt um 30% in die falsche Richtung bewegt hat. Irgendwann werden sie schon gematcht werden, aber bis dahin stören sie meine Auswertungen.  >:(

Für den Antizyklus Bot muss ich diese Orders nämlich so bewerten und in den Stand hineinrechnen, als ob sie schon gematcht wären. Mit dem aktuellen Marktpreis. Dadurch schwankt der Stand, auch ohne Trades, was Änderungen im Zuwachs ( Rechts unten in der Tabelle) bewirkt. Gestern war z.B. der Zuwachs wieder mit -0.4083% negativ, was nicht sein darf, wenn man sich strikt an die Regeln in kneim's Tread hält.



Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 19, 2014, 04:11:28 PM
So Bot vollständig modularisiert. Jetzt kann ich beliebig neue Strategien und APIs implementieren. Und da die meisten Funktionen eh von jeder Strategie genutzt werden sollte das jetzt eine gute Basis sein :)

Habe jetzt den Arbitrage auch erstmal abgeklemmt und lasse nur den Antizyklischen laufen. Hat auch fleißig schon losgelegt, da meine Referenzdaten höher lagen als die aktuelle Marktdaten ;) werde morgen mal den kläglichen Rest des Portfolios veröffentlichen.

Hab noch eine kleine Sonderfunktion eingebaut die so von kneim's Strategie nicht vorgesehen ist. Mal sehen ob die irgendeinen Einfluss hat oder wieder rausgeschmissen wird :)

EDIT:
- Hab Mandrill integriert, dass ich auch nachrichten zugestellt bekomme ;) und ein Flag ob der Exchange Auto-Withdraw unterstützt. Somit sollte ich dann bestens gerüstet sein.
- Hab BITTREX entdeckt, was haltet ihr von dem Exchange? Ich zitiere mal die API Doku: "Withdraw - We allow you to programatically withdraw any currency to an address you provide. This can be used to quick arbitrage". Zumal die Anzahl der Coins auch nicht wenig ist.
- Bei dem Limit von 600 Abfragen kommst dann wohl nicht drum herum
- Cryptsy rührt sich weiterhin nicht


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 19, 2014, 11:00:51 PM
Logbuch vom 19.10.2014

Heute war ein ruhiger Tag auf CEX.IO. Habe den Interarbitragebot gestartet, der hat einige Arbitragen gefunden und dabei 0.00735766 BTC verdient.

Der Antizyklusbot hat diesen Gewinn auf andere Coins verteilt:

2014-10-19 06:50:20 [buy 0.049752863121996 LTC @ 0.01040499 BTC]
2014-10-19 06:50:21 [buy 1109.2168001296 DOGE @ 6.5e-7 BTC]
2014-10-19 06:55:20 [buy 0.040194956764121 LTC @ 0.01040291 BTC]
2014-10-19 06:55:21 [buy 884.35907523941 DOGE @ 6.5e-7 BTC]
2014-10-19 07:00:20 [buy 704.32548286527 DOGE @ 6.5e-7 BTC]
2014-10-19 09:35:21 [buy 0.047206685151358 LTC @ 0.010369 BTC]

Die Bewertung von heute ist:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
18.10.20140.1968759.37767.09555666327136.680.489878184.48144.58
Ertrag 3EckArb00000-0.0100 0
% 3EckArb0%0%0%0%0%-0.0273%0%0%0%
Ertrag InterArb0.00735764000000.00735764 2.77 2.17
% InterArb3.7372%0%0%0%0%0%1.5019%1.5015%1.5009%
Ertrag Antizyklus-0.00318664 0.4631 0 2700 0 0 0.00251036 0.45 0.36
% Antizyklus-1.6186%4.9384%0%4.765%0%0%0.5124%0.2439%0.249%
19.10.20140.2010469.84077.09555936327136.670.499746187.7147.11
Änderung0.004171 0.4631 0 2700 0 -0.01 0.009868 3.22 2.53
% Änderung2.1186%4.9384%0%4.765%0%-0.0273%2.0144%1.7454%1.7499%1.0994%


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 20, 2014, 10:15:38 AM
Warum verteilst du das Investment wieder in den Antizyklus Bot?


Meiner hat folgendes gemacht:


  Start Amount            Start Price   Start Total     Amount
   19.10.2014
    Price
   19.10.2014
      Total
   19.10.2014
    Amount
   20.10.2014
       Price
   20.10.2014
      Total
   20.10.2014
  6,65967337   0,00707300   0,04710387               7,09812257   0,00625004   0,04436355               6,67891889   0,00708715   0,04733450
                 


Damit habe ich +0,01924552 BTCD, und ein Ertrag von 0,00023063 BTC bei nahezu gleichem Preis.
Fazit: Läuft :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 20, 2014, 10:43:06 AM
Warum verteilst du das Investment wieder in den Antizyklus Bot?
Erst einmal Gratulation zum aktualisierten Bot! Es ist immer ein Erfolgserlebnis, wenn eine neue Version auf Anhieb funktionert!

Weil der Gewinn aus der InterExchangeArbitrage den Stand in BTC erhöht hat, und der Antizyklus Bot wieder die gewünschte Gewichtung wiederhergestellt hat. Das ist ein Nebeneffekt, wenn man mehrere Strategien auf denselben Account laufen lässt, das muss ich aber leider akzeptieren, da ich meine Coins nicht auf mehreren Accounts aufteilen will. Ich habe zwar einen Offset bei den Coins eingebaut, sodass der Bot auch mit Coins rechnen kann, die er nicht auf der Exchange hat, sondern im Wallet sicher verwahrt sind, aber das war nur ein kleiner Betrag, ich habe mich ehrlich gesagt gefreut, dass der Bot genau das macht, was er laut Programmierung sollte.

Ich habe das Wochenende ebenfalls zur Sourcecode Optimierung genutzt, hatte noch einen Datenfehler, der mir bei einer flexiblen Interexchange Arbitrage im Weg war, die Funds hatte ich nur einmal im Strategie Objekt gespeichert, für eine flexible Interexchange Lösung habe ich aber Funds in mehreren Exchanges, deswegen gehören die Funds zu jedem API Objekt separat.

Mein nächster Schritt ist eine Erweiterung des Interexchange Bots, der macht viel mehr Profit als der 3EcksArbitrage Bot. Der Interexchange Bot sollte sich in der nächsten Ausbaustufe die Arbitragemöglichkeiten selbst zusammensuchen (Zur Zeit ist da fix LTC/BTC einprogrammiert). Er sollte über die Coins selbstständig erkennen, dass er bei CEX.IO im LTC/BTC Markt und BTCe im ltc_btc Markt nach Arbitragemöglichkeiten suchen soll.
Damit da mehr Möglichkeiten zur Arbitrage sind, werde ich auf CEX.IO dann auch noch NMC verwenden.



Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 20, 2014, 12:53:45 PM
Warum verteilst du das Investment wieder in den Antizyklus Bot?
Erst einmal Gratulation zum aktualisierten Bot! Es ist immer ein Erfolgserlebnis, wenn eine neue Version auf Anhieb funktionert!

Weil der Gewinn aus der InterExchangeArbitrage den Stand in BTC erhöht hat, und der Antizyklus Bot wieder die gewünschte Gewichtung wiederhergestellt hat. Das ist ein Nebeneffekt, wenn man mehrere Strategien auf denselben Account laufen lässt, das muss ich aber leider akzeptieren, da ich meine Coins nicht auf mehreren Accounts aufteilen will. Ich habe zwar einen Offset bei den Coins eingebaut, sodass der Bot auch mit Coins rechnen kann, die er nicht auf der Exchange hat, sondern im Wallet sicher verwahrt sind, aber das war nur ein kleiner Betrag, ich habe mich ehrlich gesagt gefreut, dass der Bot genau das macht, was er laut Programmierung sollte.

Ich habe das Wochenende ebenfalls zur Sourcecode Optimierung genutzt, hatte noch einen Datenfehler, der mir bei einer flexiblen Interexchange Arbitrage im Weg war, die Funds hatte ich nur einmal im Strategie Objekt gespeichert, für eine flexible Interexchange Lösung habe ich aber Funds in mehreren Exchanges, deswegen gehören die Funds zu jedem API Objekt separat.

Mein nächster Schritt ist eine Erweiterung des Interexchange Bots, der macht viel mehr Profit als der 3EcksArbitrage Bot. Der Interexchange Bot sollte sich in der nächsten Ausbaustufe die Arbitragemöglichkeiten selbst zusammensuchen (Zur Zeit ist da fix LTC/BTC einprogrammiert). Er sollte über die Coins selbstständig erkennen, dass er bei CEX.IO im LTC/BTC Markt und BTCe im ltc_btc Markt nach Arbitragemöglichkeiten suchen soll.
Damit da mehr Möglichkeiten zur Arbitrage sind, werde ich auf CEX.IO dann auch noch NMC verwenden.



Hört sich gut an. Ich bin aktuell dabei BTER zu implementieren, da die API eine ähnliche Struktur aufweist wie Poloniex. Da ich meinem Bot jetzt auch ein Flag mitgeben kann, ob auto-withdraw möglich ist oder nicht nehme ich mir mal das Recht ehraus Faul zu sein. Ich habe ja noch Hoffnung, dass Cryptsy irgendwann meine Coins ja mal frei gibt. Und dann bin ich da weg ;)

Da ich beim Arbitrage eh eien Sicherung drin habe, dass er immer den kleinsten gemeinsamen Nenner von Coins nimmt, interessiert es mich nicht wirklich ob sich Coins erhöhen oder verringern im Wallet. Spätestens beim nächsten Umlauf passt er die Marktkonditionen an. Wenn gerade eh eine Order läuft, führt er zudem eh keine Anapssung durch. Keine Ahnung ob das gut oder Schlecht ist, werde ich dann mal in der Praxis sehen, wenn beide gemeinsam länger laufen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 21, 2014, 01:25:56 PM
Die Implementation der antizyklischen Trading Strategie scheint gut aufzugehen. Gestern war es ja nur ein Coin (BTCD) der einen vollständigen BUY/SELL Zykluss durchlaufen hat, nun sind es bereits 3. Basierend auf dem jeweiligen Investitionswerten, hat sich die Anzahl der Coins selbst und der BTC Ertrag jeweils um 0,6 bis 0,8 % gesteigert. Was weiter über meinen Erwartungen liegt. :) Das gesamte Protfolie ist aber noch dicke im Minus ;)


Bter API ist zu 50% integriert. Muss nurnoch meinen Abstraction Layer anpassen und dann testen :)
Werde mal paar Coins rüber schaufeln und berichten was passiert ;)
Danach noch Bittrex und ich bin erstmal fertig mit v1 des Bots.
Mal sehen ob ich dann bei Interesse paar Lizenzen rausgebe.



-------------
Off topic: Scheint sich doch was zu tun. Wenn ich Glück habe fixen sie gleich 2 Probleme auf einmal. Wäre ja ein Traum ;)
Quote from: Cryptsy
I am sorry for not being able to respond to your ticket right away.
Our wallet team is still looking into the issue about a bug in the SAT2 wallet that caused your balances to go negative. This needs to be fixed first before we can release any withdrawals to prevent any more issues on your account.
We apologize for the delay and I thank you kindly for your patience.

Hoffe die bekommen es bald hin, damit ich die beiden Strategien mal zusammen testen kann :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 21, 2014, 08:41:51 PM
Die Implementation der antizyklischen Trading Strategie scheint gut aufzugehen. Gestern war es ja nur ein Coin (BTCD) der einen vollständigen BUY/SELL Zykluss durchlaufen hat, nun sind es bereits 3. Basierend auf dem jeweiligen Investitionswerten, hat sich die Anzahl der Coins selbst und der BTC Ertrag jeweils um 0,6 bis 0,8 % gesteigert. Was weiter über meinen Erwartungen liegt. :) Das gesamte Protfolie ist aber noch dicke im Minus ;)
Gratuliere Dir, da hast Du eine gute Wahl vom Coins getroffen, Deine Prozente erscheinen mir extrem hoch für eine antizyklische Strategie. Bei den Bots braucht es auch eine Feineinstellung, der Bot soll auch nicht zu viele Trades machen, sonst verdient die Exchange zu viel an Fees. Ich würde zumindest 0.5% Toleranz von der Wunschgewichtung zulassen und erst umgewichten, wenn diese Toleranz überschritten ist. Sollten die Coins extrem unterschiedlich gewichtet sein, als einige Coins mit hoher Gewichtung, und viele Coins mit geringer Gewichtung, bewirkt eine fixe Toleranz von der Wunschgewichtung, dass bei den Coins mit geringer Gewichtung eher selten, nur bei starken Marktbewegungen, gehandelt werden.

Aber Du hast das offensichtlich alles Richtig gemacht.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 21, 2014, 09:55:44 PM
Logbuch vom 20 + 21.20.2014

Gestern konnte ich keine Auswertung erstellen, deswegen heute die Auswertung vom 2 Tagen

Der 3EckArbitragebot hat innerhalb der 2 Tagen nur 2 Arbitragen gefunden, und dabei 0.00023674 BTC verdient:

2014-10-20 22:17:06 Rule2 0.036341542950638BTC > 6.4842693115459DRK > 3.5633887LTC > 0.03657615BTC
2014-10-21 06:45:56 Rule4 0.01314673477998BTC > 2.3458174830994DRK > 5USD > 0.01314888BTC

Der Interexchange Bot war nicht gestartet.

Der Antizyklus Bot hat 24 Anpassungen gemacht, am 20. hat DOGE einen Einbruch erlitten, der Bot hat rund 14000 DOGE
nachgekauft, am 21 hat der Bot rund 0.14 LTC nachgekauft, die Details:

2014-10-20 01:01:04 [buy 553.35787451 DOGE @ 6.1E-7 BTC]
2014-10-20 01:21:04 [buy 505.44614679 DOGE @ 6.1E-7 BTC]
2014-10-20 05:51:04 [buy 239.43766351 DOGE @ 5.958E-5 LTC]
2014-10-20 06:46:05 [sell 0.01583246 LTC @ 3.95 USD]
2014-10-20 06:51:04 [sell 0.01421104 LTC @ 3.95 USD]
2014-10-20 07:11:05 [buy 313.68800122 DOGE @ 6.0E-7 BTC]
2014-10-20 07:16:05 [buy 430.26034278 DOGE @ 5.8E-7 BTC]
2014-10-20 07:21:04 [buy 344.39669052 DOGE @ 5.8E-7 BTC]
2014-10-20 07:56:04 [buy 564.57544053 DOGE @ 5.774E-5 LTC]
2014-10-20 08:01:04 [buy 453.12696215 DOGE @ 6.0E-7 BTC]
2014-10-20 08:21:04 [buy 482.42740951 DOGE @ 5.793E-5 LTC]
2014-10-20 08:26:04 [buy 294.14112676 DOGE @ 5.9E-7 BTC]
2014-10-20 10:01:04 [buy 178.03792502 DOGE @ 5.693E-5 LTC]
2014-10-20 10:16:04 [buy 168.90965219 DOGE @ 5.693E-5 LTC]
2014-10-20 10:21:04 [buy 151.84848184 DOGE @ 5.693E-5 LTC]
2014-10-21 11:54:36 [buy 0.02916202 LTC @ 0.010274 BTC]
2014-10-21 11:59:36 [buy 0.02376797 LTC @ 0.010275 BTC]
2014-10-21 12:04:36 [buy 0.01720873 LTC @ 0.01027 BTC]
2014-10-21 13:29:36 [buy 0.01877611 LTC @ 0.010255 BTC]
2014-10-21 16:04:37 [buy 0.02946772 LTC @ 0.01019499 BTC]
2014-10-21 16:44:37 [buy 0.03167797 LTC @ 0.01014999 BTC]
2014-10-21 19:49:37 [buy 0.02186516 LTC @ 0.01018189 BTC]
2014-10-21 21:39:38 [buy 0.01614404 LTC @ 0.01018 BTC]
2014-10-21 21:44:37 [buy 0.01574767 LTC @ 0.0101 BTC]

Daraus resultiert die Bewertung:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
19.10.20140.2010469.84077.09555936327136.670.499746187.7147.11
Ertrag 3EckArb0.00023674000000.000236740.08 0.06
% 3EckArb0.1178%0%0%0%0%0%0.0474%0.0426%0.0408%
Ertrag InterArb0000000 0 0
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus-0.00441574 -0.4123 0 4687 0 0.08 -0.00811474 -0.63 -0.1
% Antizyklus-2.1964%-4.1897%0%7.8955%0%0.2182%-1.6238%-0.3356%-0.068%
21.10.20140.1968679.42847.09556405027136.750.491868187.15147.07
Änderung-0.004179 -0.4123 0 4687 0 0.08 -0.007878 -0.55 -0.04
% Änderung-2.0786%-4.1897%0%7.8955%0%0.2182%-1.5764%-0.293%-0.0272%-0.4983%

Wie immer, die offenen DRK / LTC Sell Orders bewirken ein Verringerung der LTC Bewertung, da der DRK leicht gefallen ist, ohne zugrundeliegende Trades, deswegen der Zuwachs wieder Negativ.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 22, 2014, 11:11:43 AM
Die Implementation der antizyklischen Trading Strategie scheint gut aufzugehen. Gestern war es ja nur ein Coin (BTCD) der einen vollständigen BUY/SELL Zykluss durchlaufen hat, nun sind es bereits 3. Basierend auf dem jeweiligen Investitionswerten, hat sich die Anzahl der Coins selbst und der BTC Ertrag jeweils um 0,6 bis 0,8 % gesteigert. Was weiter über meinen Erwartungen liegt. :) Das gesamte Protfolie ist aber noch dicke im Minus ;)
Gratuliere Dir, da hast Du eine gute Wahl vom Coins getroffen, Deine Prozente erscheinen mir extrem hoch für eine antizyklische Strategie. Bei den Bots braucht es auch eine Feineinstellung, der Bot soll auch nicht zu viele Trades machen, sonst verdient die Exchange zu viel an Fees. Ich würde zumindest 0.5% Toleranz von der Wunschgewichtung zulassen und erst umgewichten, wenn diese Toleranz überschritten ist. Sollten die Coins extrem unterschiedlich gewichtet sein, als einige Coins mit hoher Gewichtung, und viele Coins mit geringer Gewichtung, bewirkt eine fixe Toleranz von der Wunschgewichtung, dass bei den Coins mit geringer Gewichtung eher selten, nur bei starken Marktbewegungen, gehandelt werden.

Aber Du hast das offensichtlich alles Richtig gemacht.


Habe erstmal die ganzen komplexeren Themen weggelassen, frei nach KISS: 50:50 Verteilung, bei über 8% Differenz soll er in Aktion treten, bei 50% Wertstellung von Gewinn und Verlust.
Viele Tardes macht er ja nicht mit 1x pro Tag, wenn überhaupt. Mal sehen wie es sich entwickelt. Habe mich heute Remote ausgesperrt. Man sollte schon die Mails lesen die einem der DynDNS Anbieter schickt ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 23, 2014, 12:10:14 AM
Logbuch vom 22.10.2014

Der 3EckArbitragebot hat 10 Arbitrage gefunden und dabei 0.00024183 BTC und 0.1244718 LTC Gewinn gemacht.

Die Deals im einzelnen

2014-10-22 12:58:20 Rule9 0.97162493660317LTC > 16161.35820675DOGE > 0.01BTC > 0.97537119LTC
2014-10-22 13:56:45 Rule11 0.013268415593878BTC > 5USD > 20350.730016313DOGE > 0.01340462BTC
2014-10-22 17:47:41 Rule9 0.97448265700495LTC > 14735.356012036DOGE > 0.01BTC > 0.98811861LTC
2014-10-22 17:56:45 Rule9 0.96083989980688LTC > 14312.209370736DOGE > 0.0099985074626866BTC > 0.98797113LTC
2014-10-22 17:56:46 Rule9 0.96098333015466LTC > 14295.143408819DOGE > 0.0099865851840811BTC > 0.98679307LTC
2014-10-22 17:56:47 Rule9 0.96227420328472LTC > 14312.212554744DOGE > 0.0099985096870343BTC > 0.98797135LTC
2014-10-22 17:56:49 Rule9 0.96227420328472LTC > 14312.212554744DOGE > 0.0099985096870343BTC > 0.98797135LTC
2014-10-22 18:27:10 Rule1 1.2813353053945LTC > 5USD > 0.012994792446561BTC > 1.28271247LTC
2014-10-22 18:27:12 Rule1 1.2813353053945LTC > 5USD > 0.012994792446561BTC > 1.28271247LTC
2014-10-22 21:00:15 Rule11 0.013145138363394BTC > 5USD > 18967.610612741DOGE > 0.01325077BTC

Der Antizyklusbot hat insgesamt 22 Abpassungen gemacht. Ich habe die Parameter umgestellt, die Coins mit geringer Gewichtung waren benachteiligt, da hat der Bot viel weniger Anpassungen gemacht als bei den Coins mit großer Gewichtung. Die Transaktionen im Detail:

2014-10-22 02:02:34 [buy 0.04229526 LTC @ 0.01024099 BTC]
2014-10-22 02:07:34 [buy 0.03048593 LTC @ 0.010242 BTC]
2014-10-22 02:12:34 [buy 0.02431593 LTC @ 0.01024273 BTC]
2014-10-22 02:17:33 [buy 0.01782643 LTC @ 0.01024273 BTC]
2014-10-22 02:37:33 [buy 0.01818222 LTC @ 0.01024273 BTC]
2014-10-22 02:42:33 [buy 0.01439806 LTC @ 0.01024273 BTC]
2014-10-22 02:47:33 [buy 0.01148484 LTC @ 0.01024273 BTC]
2014-10-22 03:19:58 [sell 1.24165309 FTC @ 0.01039859 LTC]
2014-10-22 03:24:57 [buy 0.03078675 LTC @ 0.01023699 BTC]
2014-10-22 03:29:56 [sell 1.12552225 FTC @ 0.01039812 LTC]
2014-10-22 03:34:56 [sell 1.11705479 FTC @ 0.01039796 LTC]
2014-10-22 03:39:57 [sell 1.08106444 FTC @ 0.01039796 LTC]
2014-10-22 03:44:56 [sell 1.04694291 FTC @ 0.01039665 LTC]
2014-10-22 03:49:56 [sell 1.0141684 FTC @ 0.01039665 LTC]
2014-10-22 04:01:08 [sell 6.98005148 FTC @ 0.0103952 LTC]
2014-10-22 04:01:08 [sell 0.07255903 LTC @ 3.81000001 USD]
2014-10-22 04:02:05 [sell 36.39029585 FTC @ 0.01035778 LTC]
2014-10-22 09:08:18 [sell 0.20800806 LTC @ 0.010201 BTC]
2014-10-22 13:58:17 [sell 12.94844632 FTC @ 0.00010618 BTC]
2014-10-22 16:18:17 [buy 0.25974377 LTC @ 0.01004 BTC]
2014-10-22 17:53:17 [sell 3597.9971977 DOGE @ 6.8E-7 BTC]
2014-10-22 18:18:17 [sell 4232.70351178 DOGE @ 7.1E-7 BTC]
2014-10-22 18:18:17 [sell 0.00300522 BTC @ 378.9343 USD]
2014-10-22 21:18:58 [buy 18333.68951165 DOGE @ 0.00026308 USD]

Daraus ergibt sich diese Bewertung:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
21.10.20140.1968679.42847.09556405027136.750.491868187.15147.07
Ertrag 3EckArb0.000241830.124471800000.001535090.55 0.43
% 3EckArb0.1228%1.3202%0%0%0%0%0.3121%0.2939%0.2924%
Ertrag InterArb0000000 0 0
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus0.00136917 0.5659282 0 -8465 -63 1.54 0.00348791 1.32 2.01
% Antizyklus0.6955%6.0024%0%-13.2162%-23.2472%4.1905%0.7091%0.7053%1.3667%
22.10.20140.19847810.11887.09555558520838.290.496891189.02149.51
Änderung0.001611 0.6904 0 -8465 -63 1.54 0.005023 1.87 2.44
% Änderung0.8183%7.3226%0%-13.2162%-23.2472%4.1905%1.0212%0.9992%1.6591%0.3209%



Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 24, 2014, 12:07:16 AM
Logbuch vom 23.10.2014

Der Preis vom BTC ist ja heute stark gefallen. Allerdings ohne große Hektik auf CEX.IO, die 3Ecksarbitrage hat keinen einzigen Fall gefunden.

Der Antizyklus Bot hat 3 Trades gemacht:

2014-10-23 02:20:30 [buy 3320.89558902 DOGE @ 6.7E-5 LTC]
2014-10-23 13:05:30 [sell 0.36021806 LTC @ 0.010172 BTC]
2014-10-23 22:50:30 [sell 17.58331992 FTC @ 0.0106593 LTC]

Es sollten mehr sein, es ist noch keine Anpassung zwischen USD und BTC passiert. Der Grund dafür ist ein großer Spread, da wartet der Bot solange, bis der Spread wieder im Rahmen ist. Der Spread ist bei allen Märkten in etwa bei 1 % auf CEX.IO. Ich interpretiere das so, dass keiner weiss, in welche Richtung es weitergeht, und deswegen wird abgewartet.

Was mir nur durch Zufall aufgefallen ist: CEX.IO fügt laufend neue Coins und Märkte dazu, diese Exchange möchte sich offensichtlich vom Claud-Hashing Provider zum Geheimtip einer AltCoin Exchange mutieren.

Die Auswertung von heute:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
22.10.20140.19847810.11887.09555558520838.290.496891189.02149.51
Ertrag 3EckArb00000000 0
% 3EckArb0%0%0%0%0%0%0%0%0%
Ertrag InterArb0000000 0 0
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus0.003657 -0.2673 0 3321 -17 0 0.014173 -6.35 -5.06
% Antizyklus1.8425%-2.6416%0%5.9746%-8.1731%0%2.8523%-3.3594%-3.3844%
23.10.20140.2021359.85157.09555890619138.290.511064182.67144.45
Änderung0.003657 -0.2673 0 3321 -17 0 0.014173 -6.35 -5.06
% Änderung1.8425%-2.6416%0%5.9746%-8.1731%0%2.8523%-3.3594%-3.3844%0.1797%


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 24, 2014, 07:36:38 AM
Pssst Geheim ;)
habe erstmal BTer Implementierung auf Eis gelegt, da mir aktuell eine Fehlermeldung entgegen schlägt wo ich mir die Zähne ausbeiße die zu lösen. Entweder ist es mein API call oder deren REST Service hat ne Macke. Naja mal in paar Tagen wieder schauen.
Habe deswegen mit Bittrex angefangen, da sieht es bisher sehr gut aus. Die Basisklassen, sind bereits umgesetzt, jetzt geht es an die Implementierung in die Access Layer. Da ich aber am WE Familiäre Präsenz habe wird das aber etwas warten müssen. Werde berichten.


Aktuell läuft ja nur die Antizyklus Strategie. Wallet is bei Cryptsy immer noch für Withdraws gesperrt.
Der Bot hat einige kleinere Anpassungen vorgenommen, aber etwas sticht doch heraus. Der BTCD Markt ist momentan sehr agil unterwegs.


Ausgangsbasis BTCD:
Referenz - 23.10.2014, 12:00 Uhr
Cryptsy - Amount: 7,42417400, Price: 0,00581509
Poloniex - Amount: 1,03543100, Price: 0,00545765


Abschluss BTCD:
Referenz - 24.10.2014, 09:00 Uhr
Cryptsy - Amount: 7,38129188, Price: 0,00599761
Poloniex - Amount: 1,00812520, Price: 0,00587432

Cryptsy Delta Amount: -0,04288212
Cryptsy Delta Price: 0,00018252
Cryptsy Delta Total: 0,00109787

Poloniex Delta Amount: -0,02730580
Poloniex Delta Price: 0,00041667
Poloniex Delta Total:  0,00027103


Fazit:
Maximalausschläge Aufgrund meiner Spread Regeln nicht mitgenommen, aber das ist auch ok so. Schön im oberen Midrange gelaufen und die Schwankung ausgenutzt.
Bin bisher sehr zufrieden, selbst mit meinem Popelbestand ;) Gesamtportfolio weiterhin im Minus aber ich knabbere an den Abständen ;)



Hier die Aktivitäten:
[17:57:32] DynRebal: BTCD price raised @ Cryptsy (SELL)...
[17:57:32] DynRebal: OldTotal: 0.04317224, OldAmount: 7.42417400, OldPrice: 0.00581509
[17:57:32] DynRebal: NewTotal: 0.04497375, NewAmount: 7.13823725, SellAmount: 0.28593675, NewPrice: 0.00630040

[17:58:16] DynRebal: BTCD price raised @ Poloniex (SELL)...
[17:58:17] DynRebal: OldTotal: 0.00565102, OldAmount: 1.03543100, OldPrice: 0.00545765
[17:58:17] DynRebal: NewTotal: 0.00608712, NewAmount: 0.96620952, SellAmount: 0.06922148, NewPrice: 0.00630000

[03:16:04] DynRebal: BTCD price dropped @ Poloniex (BUY)...
[03:16:04] DynRebal: OldTotal: 0.00608712, OldAmount: 0.96620952, OldPrice: 0.00630000
[03:16:04] DynRebal: NewTotal: 0.00566113, NewAmount: 1.04483014, BuyAmount: 0.07862062, NewPrice: 0.00541823

[03:31:47] DynRebal: BTCD price dropped @ Cryptsy (BUY)...
[03:31:47] DynRebal: OldTotal: 0.04497375, OldAmount: 7.13823725, OldPrice: 0.00630040
[03:31:47] DynRebal: NewTotal: 0.04068927, NewAmount: 7.97833517, BuyAmount: 0.84009792, NewPrice: 0.00509997

[04:26:21] DynRebal: BTCD price dropped @ Poloniex (BUY)...
[04:26:21] DynRebal: OldTotal: 0.00566113, OldAmount: 1.04483014, OldPrice: 0.00541823
[04:26:21] DynRebal: NewTotal: 0.00541782, NewAmount: 1.09396101, BuyAmount: 0.04913087, NewPrice: 0.00495248

[05:13:31] DynRebal: BTCD price raised @ Cryptsy (SELL)...
[05:13:31] DynRebal: OldTotal: 0.04068927, OldAmount: 7.97833517, OldPrice: 0.00509997
[05:13:31] DynRebal: NewTotal: 0.04427011, NewAmount: 7.38129188, SellAmount: 0.59704329, NewPrice: 0.00599761

[05:13:58] DynRebal: BTCD price raised @ Poloniex (SELL)...
[05:13:58] DynRebal: OldTotal: 0.00541782, OldAmount: 1.09396101, OldPrice: 0.00495248
[05:13:58] DynRebal: NewTotal: 0.00592205, NewAmount: 1.00812520, SellAmount: 0.08583581, NewPrice: 0.00587432


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 25, 2014, 10:14:44 PM
Logbuch vom 25.10.2014

nachden der BTC/USD Kurs von 385 EUR auf bis zu 345 EUR heute Mittag gefallen war, und er Antizyklus Bot noch immer nicht die Gewichtung angepasst hat, habe ich die Anpassung aggressiver parametrisiert. Daraufhin hat der Antizyklus Bot endlich die lange erwartete Anpassung zwischen USD und BTC gemacht.

Hier die Details:

2014-10-25 04:46:36 [buy 0.07873406 LTC @ 0.01042 BTC]
2014-10-25 17:33:28 [buy 0.1396414 DRK @ 2.00423342 USD]

2014-10-25 22:10:17 [buy 0.00104992 BTC @ 353.9989 USD]  <--- hier endlich die USD BTC Anpassung

2014-10-25 22:15:17 [buy 0.00243742 BTC @ 353.9989 USD]  <--- vom Betrag her größer: die USD LTC Anpassung
2014-10-25 22:15:17 [buy 0.23150752 LTC @ 0.01052845 BTC]

2014-10-25 22:20:17 [sell 1145.3868868 DOGE @ 7.0E-7 BTC]
2014-10-25 22:20:17 [buy 0.07620671 LTC @ 0.010521 BTC]
2014-10-25 22:30:16 [sell 0.01081094 LTC @ 0.01045801 BTC]
2014-10-25 22:30:17 [buy 0.02018887 DRK @ 0.00560016 BTC]
2014-10-25 22:40:16 [buy 0.01055622 DRK @ 0.00560319 BTC]
2014-10-25 22:45:16 [sell 259.58609955 DOGE @ 7.0E-7 BTC]
2014-10-25 22:45:16 [buy 0.03242979 DRK @ 0.00560319 BTC]
2014-10-25 23:15:16 [sell 1.94882989 FTC @ 0.0104808 LTC]
2014-10-25 23:15:16 [sell 0.0204253 LTC @ 0.01051999 BTC]
2014-10-25 23:40:16 [sell 0.02779283 LTC @ 0.0105068 BTC]
2014-10-25 23:40:16 [buy 0.05228433 DRK @ 0.00558511 BTC]

Der 3Ecksarbitragebot hat nach 3 Tagen auch endlich wieder Arbeit gehabt:

2014-10-25 21:59:22 Rule9 0.94750087746294LTC > 14314.345840264DOGE > 0.01BTC > 0.94821834LTC

Das Ergebnis daraus war:

BTCLTCDRKDOGEFTCUSDWert BTCWert USDWert EURZuwachs
23.10.20140.2021359.85157.09555890619138.290.511064182.67144.45
Ertrag 3EckArb00.0007174600000.000007450 0
% 3EckArb0%0.0073%0%0%0%0%0.0015%0%0%
Ertrag InterArb0000000 0 0
% InterArb0%0%0%0%0%0%0%0%0%
Ertrag Antizyklus0.003799 -0.05011746 0.2552 -119 -2 -1.85 0.00324255 -2.57 -2.3
% Antizyklus1.8794%-0.5087%3.5966%-0.202%-1.0471%-4.8315%0.6345%-1.4069%-1.5922%
25.10.20140.2059349.80217.35075878718936.440.514314180.1142.15
Änderung0.003799 -0.0494 0.2552 -119 -2 -1.85 0.00325 -2.57 -2.3
% Änderung1.8794%-0.5014%3.5966%-0.202%-1.0471%-4.8315%0.6359%-1.4069%-1.5922%-0.0426%



Title: Re: Tagebuch eines Bot Entwicklers
Post by: hanspeter77 on October 26, 2014, 11:29:31 AM
kann ir jemand ein bot vorschlagen oder gibts heir noch ein?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 26, 2014, 06:36:54 PM
kann ir jemand ein bot vorschlagen oder gibts heir noch ein?

Kommt darauf an was der BOT machen soll und wieviel Komfort du möchtest :)

Ich für meinen Teil möchte mittelfristig meinen, den ich aktuell entwickle (Arbitrage & Anti zyklisch), auf v1.0 zu heben und eine kleine Anzahl an Lizenzen zu vergeben. Wenn du sofort etwas haben willst, habe ich noch den damals gekauft und bin zu frieden, ist m.E. Aber für PopelCoin Besitzer wie meiner einer nicht so ideal geeignet, macht aber sein plus :): https://bitcointalk.org/index.php?topic=730997.msg8261566#msg8261566 (https://bitcointalk.org/index.php?topic=730997.msg8261566#msg8261566)

Kannst mich ja bei weiteren Fragen per PN anhauen.

Weiß nicht wie es mit/bei kalkulatorix aussieht.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 26, 2014, 10:06:34 PM
Logbuch vom 25.10.2014
nachden der BTC/USD Kurs von 385 EUR auf bis zu 345 EUR heute Mittag gefallen war, und er Antizyklus Bot noch immer nicht die Gewichtung angepasst hat, habe ich die Anpassung aggressiver parametrisiert. Daraufhin hat der Antizyklus Bot endlich die lange erwartete Anpassung zwischen USD und BTC gemacht.

Und genau diese Änderung hat bewirkt, dass der Bot heute DOGE 0.00000070 BTC verkauft hat und um 0.00000071 BTC gekauft hat. So macht mit der Bot arm. >:( Ein klarer Verstoß gegen das buy low, sell high. Alerdings möchte ich auch keine Tradehistorie im Bot einbauen, das Ziel ist es, dass der Bot durch richtige Parameter automatisch billig kauft und teuer verkauft.

Es gibt ja nicht so viele Parameter, die zu berücksichtigen sind, aber irgendwie habe ich keine gute Hand bei der Auswahl der Parameter.

Der wichtigste Input für den Bot ist die Abweichung der IST Gewichtung von der SOLL Gewichtung. Dieser Teil des Bots funktioniert sicher, den habe ich mehrmals nachgerechnet. Der Bot schafft auch nie ganz genau, die Gewichtung ans SOLL anzupassen, warum, das ist klar, wenn man weiterdenkt. Das ist aber nicht das Hauptproblem.

Hauptsächlich fehlt mir die einfache JA/NEIN Entscheidung, ob die Anpassung durchgeführt werden soll oder nicht.

Jeder Trade hat Spesen und da der Trade so in den Markt gestellt wird, dass er sofort erfüllt wird, muss ich für die Entscheidung Fees und Spread berücksichtigen.

Als Beispiel: Der Preis in DOGE/BTC Markt ist 0.0000070/0.0000071, das ergibt einen Spread von 2*(0.0000071-0.0000070)/(0.0000071+0.0000070) = 0.01416 = 1.416%. Die Fees sind 0.2%.
Damit ein Kauf und darauffolgender Verkauf noch einen Gewinn macht, muss die Differenz zwischen Kauf und Verkaufspreis größer als doppelte Fees und einfacher Spread sein, also 1.416 + 2*0.2 = 1.816% sein.

Die DOGE sind nur mit 10% gewichtet. Gehen wir einmal von einer SOLL Gewichtung von ( 40 / 20 / 20 /10 /10 ) aus. Steigt der Preis der DOGE um 10%, und ändert sich sonst kein Preis, steigt der Gesamtwert um 1%. Die neue Gewichtung, ausgehend von der SOLL - Gewichtung ist durch den

10% Anstieg der Doge:    ( 39.6 / 19.8 / 19.8  / 9.9  / 10.9 )
die Differenzen zur SOLL Gewichtung sind dadurch ( -0.4 / -0.2 / -0.2 / -0.1 / +0.9 )

Rechnen wir einen Anstieg von 10% bei den BTC ( die sind mit 40% gewichtet ) auch wieder von einer SOLL Gewichtung von  ( 40 / 20 / 20 /10 /10 ) ausgehend, steigt der Gesamtwert um 4%. Dann ergibt sich bei

10% Anstieg von BTC ( 42.4 / 19.2 / 19.2 / 9.6 / 9.6 )
die Differenzen zu SOLL Gewichtung sind dadurch ( + 2.4 / -0.8 / -0.8 / -0.4 / -0.4 )

Das Problem ist allerdings, dass der Bot nur die Differenzen zur Soll-Gewichtung kennt, und es auf dem ersten Blick nicht ersichtlich ist, durch welche Wertänderungen der einzelnen Coins diese Differenzen entstanden sind. Ich habe bisher immer nur aufgrund der Differenzen zwischen IST und SOLL Gewichtung Trades in den Markt gesendet, was immer nur Gewichtung näher ans SOLL gebracht hat, aber nie auf den Punkt richtig gelöst hat. Eine Vergleich mit Spreads und Fees ist so zum Scheitern verurteilt. Kein Wunder, dass ich keine zufriedenstellende Parameter gefunden habe.

Das nächste Upgrade des Antizyklus Bots kann dann aus den Abweichungen von SOLL / IST Gewichtung ausrechnen, wie sich die Werte der Coins verändert haben müssen, damit es zu dieser Veränderung kommt. Und nur wenn die Veränderung der Coins größer als doppelte Fees und einfacher Spread ist, macht der Bot eine Anpassung. Das wird darauf hinauslaufen, dass der Bot ein lineares Gleichungssystem von n Gleichungen mit n Variablen lösen muss, was zum Glück dank Carl Friedrich Gauß seit 1799 keine Herausforderung mehr ist.

Bis diese Version fertig ist, macht der Bot einmal Pause. Ich berichte über die weiteren Schritte.



Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 26, 2014, 10:40:51 PM
kann ir jemand ein bot vorschlagen oder gibts heir noch ein?
Weiß nicht wie es mit/bei kalkulatorix aussieht.

Ich werde meine Bots nicht veröffentlichen oder gar Lizenzen vergeben. Damit würde ich Verpflichtungen und Verantwortungen eingehen, die ich auf lange Sicht gesehen weder kann noch will. Vielleicht habe ich in einigen Monaten keine Freude mehr an den Bitcoins, dann möchte ich mit den Thema endgültig abschließen können.

Und wenn man hier im Forum genau sucht, finden sich bereits 3 Sourcecodes von Bots.  ;D ;D ;D




Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 27, 2014, 02:02:43 AM
So, nach 5 Stunden Arbeit ist das Gauss-Jordan Verfahren zum Gleichungslösen eingebaut. Nur leider kann ich es nicht testen, CEX.IO hat heute Maintainance - Tag. Bin schon total gespannt, ob da sinnvolle Ergebnisse rauskommen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 27, 2014, 09:34:35 AM
So, nach 5 Stunden Arbeit ist das Gauss-Jordan Verfahren zum Gleichungslösen eingebaut. Nur leider kann ich es nicht testen, CEX.IO hat heute Maintainance - Tag. Bin schon total gespannt, ob da sinnvolle Ergebnisse rauskommen.


Du machst mir irgendwie Angst, dagegen fühlt sich mein Bot fast an, als würde er in den Kindergarten gehören :) aber bin auch gespannt wie es weiter geht :)



kann ir jemand ein bot vorschlagen oder gibts heir noch ein?
Weiß nicht wie es mit/bei kalkulatorix aussieht.

Ich werde meine Bots nicht veröffentlichen oder gar Lizenzen vergeben. Damit würde ich Verpflichtungen und Verantwortungen eingehen, die ich auf lange Sicht gesehen weder kann noch will. Vielleicht habe ich in einigen Monaten keine Freude mehr an den Bitcoins, dann möchte ich mit den Thema endgültig abschließen können.

Und wenn man hier im Forum genau sucht, finden sich bereits 3 Sourcecodes von Bots.  ;D ;D ;D

Habe auch hin und her überlegt, aber irgendwie würde ich es schon cool finden wenn eine kleine Anzahl dann auch mit dem BOT agiert und auch ggf. Verbesserungsvorschläge einbringt ihn weiter zu gestalten. Da der BOT in php programmiert ist, kann natürlich jeder den Reviewen und auch frei verteilen und ändern. Man wäre daher auf das Wohlwollen der Käufer angewiesen, dass kein Quatsch gemacht wird und das ist wohl der Hauptknackpunkt :)


Habe jetzt Kontakt mit hanspeter, vielleicht macht er mir den Betatester, mal schauen kann gerne hier weiter berichten wenn es ok ist.

Am Bot selber habe ich aktuell nichts geschafft, da das Wochenende im Zeichen der Familie stand. Hat aber wohl laut log fleißig geschafft.

Von Cryptsy, wie zu erwarten, keinerlei Rückmeldung :/


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 27, 2014, 09:44:22 AM
Logbuch vom 25.10.2014
nachden der BTC/USD Kurs von 385 EUR auf bis zu 345 EUR heute Mittag gefallen war, und er Antizyklus Bot noch immer nicht die Gewichtung angepasst hat, habe ich die Anpassung aggressiver parametrisiert. Daraufhin hat der Antizyklus Bot endlich die lange erwartete Anpassung zwischen USD und BTC gemacht.

Und genau diese Änderung hat bewirkt, dass der Bot heute DOGE 0.00000070 BTC verkauft hat und um 0.00000071 BTC gekauft hat. So macht mit der Bot arm. >:( Ein klarer Verstoß gegen das buy low, sell high. Alerdings möchte ich auch keine Tradehistorie im Bot einbauen, das Ziel ist es, dass der Bot durch richtige Parameter automatisch billig kauft und teuer verkauft.

Es gibt ja nicht so viele Parameter, die zu berücksichtigen sind, aber irgendwie habe ich keine gute Hand bei der Auswahl der Parameter.

Der wichtigste Input für den Bot ist die Abweichung der IST Gewichtung von der SOLL Gewichtung. Dieser Teil des Bots funktioniert sicher, den habe ich mehrmals nachgerechnet. Der Bot schafft auch nie ganz genau, die Gewichtung ans SOLL anzupassen, warum, das ist klar, wenn man weiterdenkt. Das ist aber nicht das Hauptproblem.

Hauptsächlich fehlt mir die einfache JA/NEIN Entscheidung, ob die Anpassung durchgeführt werden soll oder nicht.

Jeder Trade hat Spesen und da der Trade so in den Markt gestellt wird, dass er sofort erfüllt wird, muss ich für die Entscheidung Fees und Spread berücksichtigen.

Als Beispiel: Der Preis in DOGE/BTC Markt ist 0.0000070/0.0000071, das ergibt einen Spread von 2*(0.0000071-0.0000070)/(0.0000071+0.0000070) = 0.01416 = 1.416%. Die Fees sind 0.2%.
Damit ein Kauf und darauffolgender Verkauf noch einen Gewinn macht, muss die Differenz zwischen Kauf und Verkaufspreis größer als doppelte Fees und einfacher Spread sein, also 1.416 + 2*0.2 = 1.816% sein.

Die DOGE sind nur mit 10% gewichtet. Gehen wir einmal von einer SOLL Gewichtung von ( 40 / 20 / 20 /10 /10 ) aus. Steigt der Preis der DOGE um 10%, und ändert sich sonst kein Preis, steigt der Gesamtwert um 1%. Die neue Gewichtung, ausgehend von der SOLL - Gewichtung ist durch den

10% Anstieg der Doge:    ( 39.6 / 19.8 / 19.8  / 9.9  / 10.9 )
die Differenzen zur SOLL Gewichtung sind dadurch ( -0.4 / -0.2 / -0.2 / -0.1 / +0.9 )

Rechnen wir einen Anstieg von 10% bei den BTC ( die sind mit 40% gewichtet ) auch wieder von einer SOLL Gewichtung von  ( 40 / 20 / 20 /10 /10 ) ausgehend, steigt der Gesamtwert um 4%. Dann ergibt sich bei

10% Anstieg von BTC ( 42.4 / 19.2 / 19.2 / 9.6 / 9.6 )
die Differenzen zu SOLL Gewichtung sind dadurch ( + 2.4 / -0.8 / -0.8 / -0.4 / -0.4 )

Das Problem ist allerdings, dass der Bot nur die Differenzen zur Soll-Gewichtung kennt, und es auf dem ersten Blick nicht ersichtlich ist, durch welche Wertänderungen der einzelnen Coins diese Differenzen entstanden sind. Ich habe bisher immer nur aufgrund der Differenzen zwischen IST und SOLL Gewichtung Trades in den Markt gesendet, was immer nur Gewichtung näher ans SOLL gebracht hat, aber nie auf den Punkt richtig gelöst hat. Eine Vergleich mit Spreads und Fees ist so zum Scheitern verurteilt. Kein Wunder, dass ich keine zufriedenstellende Parameter gefunden habe.

Das nächste Upgrade des Antizyklus Bots kann dann aus den Abweichungen von SOLL / IST Gewichtung ausrechnen, wie sich die Werte der Coins verändert haben müssen, damit es zu dieser Veränderung kommt. Und nur wenn die Veränderung der Coins größer als doppelte Fees und einfacher Spread ist, macht der Bot eine Anpassung. Das wird darauf hinauslaufen, dass der Bot ein lineares Gleichungssystem von n Gleichungen mit n Variablen lösen muss, was zum Glück dank Carl Friedrich Gauß seit 1799 keine Herausforderung mehr ist.

Bis diese Version fertig ist, macht der Bot einmal Pause. Ich berichte über die weiteren Schritte.




Mittlerweile weiß ich, warum ich keine Gewichtung eingeführt habe *lach* Dieses gesamte Portfolio Handling zu implementieren, hätte ich wohl weder Zeit noch Muße, auch wenn es ein wesentlich feineres Traden erlaubt. Bei mir geht es nach dem Holzhammer:
Abzüglich Fee muss Gewinn X überbleiben, wenn nicht stelle keine Order ein...wenn doch prüfe ob bereits (Teil)erfüllt und starte Abverkauf mit mindestens Gewinn Y abzüglich Fee. Heißt also ich habe im Grunde nur zwei stupide Parameter X und die von einander stark abweichen können um eine Zone zu schaffen, wo zwar kein optimaler Verkauf stattfindet aber immer noch Gewinn (oder kalkulierter Verlust) vorherrscht. Dadurch vermeide ich, dass orders feststecken aufgrund einer harten Linie. Klappt gut, früher ohne die zweite Linie sind sie paar nicht erfüllt worden...nun schon...




Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 27, 2014, 01:34:57 PM
Mittlerweile weiß ich, warum ich keine Gewichtung eingeführt habe *lach* Dieses gesamte Portfolio Handling zu implementieren, hätte ich wohl weder Zeit noch Muße, auch wenn es ein wesentlich feineres Traden erlaubt. Bei mir geht es nach dem Holzhammer: ....
Ich dachte auch, dass ich mit kneim's Methode und einem Holzhammer auskomme, da kneim ja immer wieder betont, dass man nicht jeden Tag auf seine Positionen schauen braucht, die Anpassungen auch nur so in etwa ungefähr machen braucht. Nur leider kennt ein Bot die Worte "ungefähr" , "irgendwann" nicht, dem muß das exakt vorgegeben werden.

Übrigens, Du hättest ein ähniches Problem mit der Gewichtung, auch mit nur 2 Assets bei 50 : 50 Verteilung.

Steigt bei einer 50:50 Verteilung der Wert eines Coins um 10%, wird aus der 50 : 50 Verteilung eine 52,4 : 47.6 Verteilung. Die Vermeidung der Gewichte hat Dir wirklich viel Arbeit erspart!


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 27, 2014, 02:39:52 PM
Mittlerweile weiß ich, warum ich keine Gewichtung eingeführt habe *lach* Dieses gesamte Portfolio Handling zu implementieren, hätte ich wohl weder Zeit noch Muße, auch wenn es ein wesentlich feineres Traden erlaubt. Bei mir geht es nach dem Holzhammer: ....
Ich dachte auch, dass ich mit kneim's Methode und einem Holzhammer auskomme, da kneim ja immer wieder betont, dass man nicht jeden Tag auf seine Positionen schauen braucht, die Anpassungen auch nur so in etwa ungefähr machen braucht. Nur leider kennt ein Bot die Worte "ungefähr" , "irgendwann" nicht, dem muß das exakt vorgegeben werden.

Übrigens, Du hättest ein ähniches Problem mit der Gewichtung, auch mit nur 2 Assets bei 50 : 50 Verteilung.

Steigt bei einer 50:50 Verteilung der Wert eines Coins um 10%, wird aus der 50 : 50 Verteilung eine 52,4 : 47.6 Verteilung. Die Vermeidung der Gewichte hat Dir wirklich viel Arbeit erspart!

:) Zum Glück bin ich echt naiv ran gegangen und habe das simpelst umgesetzt. Sind glaube ich maximal 20 Zeilen Code inklusive Kommentar :D
Beim Antizyklus bin ich noch viel rigoroser, eben weil kneim auch viel Spiel gelassen hat:
- Wenn Coin nicht in DB, lege neuen Datensatz an zu aktuellen Marktkonditionen
- Prüfen, ob Coin sich mindestens um X bewegt hat.
- Wenn ja dann Action und stelle 50:50 Gleichgewicht her, sonst geh 15 Minuten schlafen

Da ich, wie du keine Historie pflege, ist mir alles andere zu Aufwendig, damit der Bot auch noch aus der Hostorie lernt zu lesen. Nehme lieber etwas mit als gar nix :D

Bin leider bisher nicht zum Auswerten gekommen, aber am Wochenende war einiges los...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Gyrsur on October 27, 2014, 02:42:28 PM
wie gross sind die positionen mit denen ihr testet wenn ich mal fragen darf?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 27, 2014, 04:26:15 PM
wie gross sind die positionen mit denen ihr testet wenn ich mal fragen darf?

Was meinst du mit Größe genau? BTC Wert, Anzahl der Coins, Volume die in den Markt gestellt wird?

Bei mir ist es eher lachhaft und wirst sicher nur müde drüber schmunzeln...
BTC Portfolio Wert pro Exchange 0,3 BTC, davon entfallen 50-60% (also ~40% BTC als Buy-Order Funds) auf beliebige Coins.
Je Coin habe ich grob einen Wert von 0,025 BTC zugestanden und gekauft. Woraus sich dann entsprechend dem Kurswert das Volumen ergibt.
Die Coins die ich via Bot traden lasse sind unter anderem BC, BTCD, DOGE, EMC2, Fibre.

Bin gerade dabei eine Snapshotfunktion zu bauen, sodass man mal eine "Live View" Option hat.




Title: Re: Tagebuch eines Bot Entwicklers
Post by: Gyrsur on October 27, 2014, 04:34:26 PM
normalerweise testet man ja bei automatischen handel in einer demo umgebung. da demo umgebungen noch immer ein fremdwort beim Bitcoin handel sind muss man zwangsläufig mit realem geld testen. das war auch in den anfangszeiten nicht so das Problem weil der wert gering war. mittlerweile können da aber doch recht grosse verluste zusammenkommen beim testen wenn man z. Bsp. mit einer minimalen Positionsgrösse von 0.01 nur real handeln kann. deshalb meine frage.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 27, 2014, 05:01:29 PM
wie gross sind die positionen mit denen ihr testet wenn ich mal fragen darf?
Das ist eine Interessande Frage. Die Frage hängt sehr stark davon ob, welche Strategie verwendet wird.

3Ecksarbitrage
Die Positionen sollten nicht zu klein sein, sonst sind die Ergebnisse nicht aussagekräftig. Es geht ja auch bei einem Tests darum, zu entscheiden, ob sich ein größerer Einstieg lohnt. Und bei kleinen Positionen kommt der Bot auf höhere prozentuelle Gewinne, die mit höheren Positionen nicht mehr zu erreichen sind, da oft im best bid und best ask zuwenig Volumen ist, und der Bot seine Orders auf eine schlechtere Quote setzen muß, und dadurch prozentuell weniger Gewinn erzielt.

Was ich damit sagen will: Macht man einen Testlauf mit sehr kleinen Positionen und erzielt dann einen Profit von 0.1%, wird der Profit deutlich unter 0.1% sein, wenn die Positionen dann im Echtbetrieb 10 mal so groß sind. Je großer die Testpositionen sind, desto kleiner fällt der Unterschied zwischen Test und Echtbetrieb aus.

Weiters matchen nicht alle Orders sofort, da braucht es eine Reserve, damit der Bot nicht durch eine offene Order handlungsunfähig wird. Da würde ich zumindest den Faktor 10 ansetzen. Alle Orders sollten eine Mindest und Maximalgröße haben, manche Exchanges haben vorgeschriebene Mindestordergrößen. Der Einfachheit halber ist die Maximalgröße 10 mal so hoch wie die Minimumgröße, und eine Minimumgrüße von 5 EUR ist auch nicht verkehrt. Kursschwankungen sollten auch bedacht werden, das würde ich mit dem Faktor 2 ansetzen. Alle Coins, die in einer 3Ecksarbitrage enthalten sind, brauchen in etwa gleich große Positionen, da kommt ein Faktor 3 dazu, bei einer minimalen USD - BTC - LTC Strategie, jeder zusätzliche Coin erhöht den Faktor um 1.

Zusammengefasst brauchst Du 5 EUR * 2 * 10 * 10 für Aussagekräftige Tests bei der Dreiecksarbitrage zumindest 1000 EUR / Coin.

Antizyklische Strategie
Gehen wir wieder davon aus, dass eine Order immer jeweils 5 EUR haben sollte. Ist der am kleinsten gewichtete Coin mit 10%, und soll die Umgewichtung bei 2%Abweichung gemacht werden, dann brauchst Du für den am kleinsten gewichteten Coin 5 EUR / 2 * 100 = 250 EUR, da dieser Coin nur 10 % vom Gesamtwert darstellt, sind das für einen Test 2500 EUR.

Interexchange Arbitrage
Hier sind für den Transfer der Coins zwischen den Exchanges Fixgebühren, z.B. 0.0001 BTC und 0.001 LTC zu zahlen. Außerdem dauern die Überweisungen etwas, vor allem wenn die Exchange kein Withdrawl im API unterstützt, dann mußt da das manuell machen. Da würde ich einen Faktor 20 anstzen, zusammen mit einer Maximalgröße von 50 bei je 2 Coins bei 2 Exchanges macht das 4000 EUR.

Mit den hier angeführten Beträgen kannst Du die Bots vernünftig ausprobieren, sie werden selten wegen fehlender / blockierter Funds steckenbleiben, und Du kannst so halbwegs sicher sein, daß die Ergebnisse weitesgehend nach oben skalierbar sind. Wenn es Dir nur darum geht, ob der Bot funktioniert, und es nicht so wichtig ist, später einmal mehr Geld zu investieren, verringere die Maximalgröße der Orders Deinem Testgeld entsprechend. Die Faktoren würde ich nicht verringern, sonst bleiben die Bots zu oft wegen blockierter Funds stecken.





Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 27, 2014, 05:54:45 PM
normalerweise testet man ja bei automatischen handel in einer demo umgebung. da demo umgebungen noch immer ein fremdwort beim Bitcoin handel sind muss man zwangsläufig mit realem geld testen. das war auch in den anfangszeiten nicht so das Problem weil der wert gering war. mittlerweile können da aber doch recht grosse verluste zusammenkommen beim testen wenn man z. Bsp. mit einer minimalen Positionsgrösse von 0.01 nur real handeln kann. deshalb meine frage.

Das ist wohl war, wäre mein Spielgeld manches mal größer gewesen, das hätte weh getan...dabei waren es doch nur Copy-Past Fehler ;)

Vorteil an so kleinen Mengen ist natürlich auch, dass eigentlich immer die Markt Konditionen getroffen werden mit dem vollen Bestand. Da der Bot nur zu den Besten Konditionen tradet und die zweiten und dritten plätze aktuell ignoriert auch wenn sie profitabel wären, kann es natürlich auch dazu kommen, dass nur kleinere Mengen des gesamten Bestandes genommen werden. Klar kann man jetzt jammern, dass man potenziell zu viele Fees rauswirft order gar gute Deals hinter kleinen versteckt werden...auch da dachte ich mir, warum kompliziert... man muss nicht jeden Trade mitnehmen...

Was kalkulatorix macht ist echt "übel" - im positiven Sinne, da bin ich noch weit von weg. Aber mal sehen wohin die Reise geht...bin ja lernwillig ;)




Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 28, 2014, 12:12:24 AM
normalerweise testet man ja bei automatischen handel in einer demo umgebung. da demo umgebungen noch immer ein fremdwort beim Bitcoin handel sind muss man zwangsläufig mit realem geld testen. das war auch in den anfangszeiten nicht so das Problem weil der wert gering war. mittlerweile können da aber doch recht grosse verluste zusammenkommen beim testen wenn man z. Bsp. mit einer minimalen Positionsgrösse von 0.01 nur real handeln kann. deshalb meine frage.

Demoumgebung? Das fordern maximal Manager, Sicherheitsbeauftragte, o.ä. Unwissende.  Du kannst aus einer Demo Umgebung, wo jeder, ohne dafür leiden zu müssen, einen Trade, der alle verfügbaren Bitcoins 10 mal aufkauft, eingeben kann, nicht mit dem wirklichen Leben vergleichen. Ich habe schon viele Demo - Test - Abnahme - Systeme gesehen, aber bei keinem war die Dynamik des dazugehörigen Echsystems auch nur ansatzweise zu erkennen. Wenn Du einen Bot selbst entwickeln kannst, kannst Du dich auch gegen Fehlfunktionen schützen. Trau Dir einfach mehr zu!! Die Teile vom Bot, die wirklich Geld kosten können, kannst Du ja zu Beginn auskommentieren, und stattdessen den Bot ausgeben lassen, was er gerne gehandelt hätte! Das bringt Dir 1000 mal mehr als eine Demo Umgebung! Und die Bitcoinmärkte sind keine Raketenwissenschaft. Gyrsor, bitte sei mir nicht böse, ich halte nichts von Demo / Test oder sonstigen Systemen. Was zählt ist das Produktions oder Echtsystem. Es ist quasi ein Privileg, dass jeder am Bitcoinmarkt teilnehmen will, das auch ohne staatliche Prüfung, Netz, Fallschirm und doppelten Boden tun darf.  ;D

Das ist wohl war, wäre mein Spielgeld manches mal größer gewesen, das hätte weh getan...dabei waren es doch nur Copy-Past Fehler ;)
Meistens sind es die kleinen Fehler, die weh tun. Die großen Fehler sind die Heldentaten.

Vorteil an so kleinen Mengen ist natürlich auch, dass eigentlich immer die Markt Konditionen getroffen werden mit dem vollen Bestand. Da der Bot nur zu den Besten Konditionen tradet und die zweiten und dritten plätze aktuell ignoriert auch wenn sie profitabel wären, kann es natürlich auch dazu kommen, dass nur kleinere Mengen des gesamten Bestandes genommen werden. Klar kann man jetzt jammern, dass man potenziell zu viele Fees rauswirft order gar gute Deals hinter kleinen versteckt werden...auch da dachte ich mir, warum kompliziert... man muss nicht jeden Trade mitnehmen...
So eine Vorgangsweise kannst Du dir erlauben, wenn Du entweder sehr jung bist, oder Du die Bitcoins nur als Absicherung gegen den Zusammenbruch des FIAT Geldes verwendest. Falls Du ernsthaft planst, Dich mit hohen Prozent - Renditen auf Kleinbeträge in Regionen hochzuarbeiten, wo Dich die Bitcoins ernähren können , dann musst Du gleichzeitig sehr jung und  sehr geduldig sein. Die Bitcoin Märkte sind ein langweiliger Erholungsurlaub, wenn man von den Sportmärkten kommt, wo jeden Tag bei 40 Pferderennen, 20 Tennisspielen und 120 Fußballspielen ein Totalverlust auftritt, wenn Du nicht richtig positioniert bist. Bei den Sportmärkten kannst Du alle 3 MInuten alles verlieren kannst, was Du für das Projekt eingesetzt hast. Da sind ein Absturz des Bitcoins um 10 % vergleichsweise lächerlich dagegen.

Was kalkulatorix macht ist echt "übel" - im positiven Sinne, da bin ich noch weit von weg. Aber mal sehen wohin die Reise geht...bin ja lernwillig ;)
Möge der kneim jetzt über mich kommen, aber ich habe es satt, dass ich mit meiner Arbeitsleistung einen Haufen von parasitären Eliten durchfüttere. 25 Jahre gearbeitet, das ist genug. Wenn ich darüber nachdenke, dass ich in 19 Jahren eine Pension bekommen würde, die nicht einmal für die Kosten meiner Wohnung ausreicht, ist es höchste Zeit etwas anders zu machen.




Title: Re: Tagebuch eines Bot Entwicklers
Post by: megaplage on October 28, 2014, 07:59:13 AM
Hallo Botfreunde,

ein sehr informativer und zielführender thread - Glückwunsch dazu !
Da ich selber auch in dem Thema stecke ist es sehr interessant für mich Eure Ausführungen zu lesen ...

Viele Grüße,
Ed


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 30, 2014, 08:02:39 AM
Jetzt bin ich auch Opfer von "Stuck funds" geworden. Seit gestern ist eine Arbitragesituation in BTC und FTC in CEX.IO und BTC-e. Da wollte ich den Interexchangebot ausprobieren, nach den Erweiterungen des Antizyklusbot, wo ich auch einige Klassen erweitert habe, die auch der Interexchangebot benutzt, war das eine gute Idee, auszuprobieren, ob der Interexchangebot jetzt noch funktioniert.

Und er hat funktioniert, hat auf CEX.IO FTC um 0.00001 verkauft und auf BTC-e um 0.000009 gekauft, mir die eMails gesendet, welche coins ich an welche Adresse verschicken muss. Habe die coins auch verschickt, nur sind die FTC nicht auf CEX.IO angekommen. Sind zwar in der Blockchain auf meiner CEX.IO FTC Adresse zu sehen, aber CEX.IO holt die coins nicht von dort ab.....

Man muss immer positiv denken, dadurch wird jetzt die Sperre des Interexchangebots bei unzureichenden Funds sehr gut getestet, und falls die Arbitragesituation noch länger besteht, kann ich dann auch ausprobieren, ob ich die manuellen transfers der coins auch von unterwegs am Tablett machen kann.

Wer sich von euch getraut, die Arbitragesituation besteht noch immer, aber nur mehr mit 2.5 BTC Volumen. Auf eigene Gefahr, auf CEX.IO dürfte im Moment ein Problem mit dem Empfang von FTC bestehen. Ob er Hard Fork von vorgestern der Grund dafür ist?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 30, 2014, 10:13:54 AM
Jetzt bin ich auch Opfer von "Stuck funds" geworden. Seit gestern ist eine Arbitragesituation in BTC und FTC in CEX.IO und BTC-e.
...
Wer sich von euch getraut, die Arbitragesituation besteht noch immer, aber nur mehr mit 2.5 BTC Volumen. Auf eigene Gefahr, auf CEX.IO dürfte im Moment ein Problem mit dem Empfang von FTC bestehen. Ob er Hard Fork von vorgestern der Grund dafür ist?
Der Hard Fork ist der Grund für meine Stuck Funds. Jetzt muss ich geduldig sein, wird bald wieder funktionieren, laut Supervisor-Supportauskunft. Wäre ja auch zu schön gewesen, wenn eine 10% Arbitrage ohne Probleme durchgeht.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: megaplage on October 30, 2014, 10:53:44 AM
Der Hard Fork ist der Grund für meine Stuck Funds. Jetzt muss ich geduldig sein, wird bald wieder funktionieren, laut Supervisor-Supportauskunft. Wäre ja auch zu schön gewesen, wenn eine 10% Arbitrage ohne Probleme durchgeht.

Ich denke solche großen Abweichungen und damit Arbitrage Möglichkeiten kommen nur aufgrund von Konstellationen zustande, die das ausnutzen verhindern bzw. erschweren und dann am Ende das Ergebnis schmälern oder sogar ins negative ziehen.

Wie z.B. jetzt hier oder damals bei Gox - fällt unter die Kategorie "zu schön um wahr zu sein", andererseits wenn es klappt ...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on October 30, 2014, 12:14:25 PM
Bei mir ein kurzes Statusupdate:
-------------------------------------
- BTer API implementiert, sind nun Cryptsy, Poloniex, Bittrex, BTer
- Diverse kleine Flüchtigkeits-Bugs in meinem API Access Layer behoben
- Web Frontend hat jetzt ein Canvas Element um mir den Verlauf meines "Profites" und BTC Balance anzuzeigen die über ein Snapshot jede Stunde festgehalten werden
- Da Cryptsy weiterhin meine Coins nicht frei gibt, habe ich mit den Resten von WDC und LTC die neuen API's befeuert...Läuft ok, bisher 0,7% Gewinn nach Fees in den letzten 16 Stunden




Coming Next:
---------------
- Auto Balance Funktion erweitern, damit X Exchanges unterstützt werden
- Dynamische Amount Anpassung für Antizyklus Strategie
- Auslagern verbliebener Parametern in die config Datei
- Beta Test mit hanspeter77 inkl. Bugfixing
- Release v1.0 draus machen


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on October 30, 2014, 12:51:38 PM
Der Hard Fork ist der Grund für meine Stuck Funds. Jetzt muss ich geduldig sein, wird bald wieder funktionieren, laut Supervisor-Supportauskunft. Wäre ja auch zu schön gewesen, wenn eine 10% Arbitrage ohne Probleme durchgeht.

Ich denke solche großen Abweichungen und damit Arbitrage Möglichkeiten kommen nur aufgrund von Konstellationen zustande, die das ausnutzen verhindern bzw. erschweren und dann am Ende das Ergebnis schmälern oder sogar ins negative ziehen.

Wie z.B. jetzt hier oder damals bei Gox - fällt unter die Kategorie "zu schön um wahr zu sein", andererseits wenn es klappt ...
Das ging aber schnell. Funds sind durch, und ich konnte in 7 weiteren Arbitragen doch noch einen guten Teil der Möglichkeit ausnutzen. Schade, ohne die Stuck Funds hätte ich die ganze Arbitrage für mich alleine gehabt. Ja und der Support von CEX.IO ist ein Traum. Promte Antwort, automatische Eskalation zu den Supervisors und zeitgerechte Info wenn es wieder funktioniert.

Es ist ganz normal, dass die Kurse für ein und dasselbe Coin - Paar überall einen einen leicht unterscheidlichen Preis haben. Manche Zusammenhänge begünstigen allerdings Arbitragesituationen, zum Beispiel ein sehr kleiner Coinpreis und ein Preis mit zu wenig Kommastellen (FTC hat nur 5 Nachkommastellen auf BTC-e), da macht die kleinste Stelle im Preis gleich 10% aus. Das begünstigt profitable Arbitragesitioationen.

Wenn der Unterschied aber dauerhaft in eine Richtung geht, ist das ein Zeichen, dass eine Arbitrage, die ja diese Unterschiede ausgleicht, nicht mehr möglich ist. Dann ist Gefahr im Verzug.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 03, 2014, 09:05:49 PM
Eine kleine Wasserstandsmeldung...es hat sich nichts getan ;) weder großartig mögliche Arbitrage Trades noch Re-Balancing noch keine neuen Features...

Dachte habe die BTer API im Griff aber nöööö Pustekuchen die treibt mich noch in den Wahnsinn :) hab das ganze Wochenende mit Bugfixing zugebracht.... 4 Stunden da gesessen um 1 Zeile Code am Ende zu schreiben :D Naja scheint jetzt erstmal stabil zu laufen.

Habe jetzt mit hanspeter77 gestartet, mal sehen welcher Input noch rauspurzelt, halte euch auf dem Laufenden.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 04, 2014, 10:31:18 AM
Auch bei mir nichts neues. Die Bots sind irgenwie ruhiger als zuletzt. Ich habe am Wochenende sogar eine Kopie von der vorletzten Version der Scripts laufen lassen, um auszuschließen dass die Inaktivität der Bots nicht ein Programmfehler von mir war, aber auch die uralte Version hat über 36 Stunden keine Arbitrage gefunden.

Der Antizyklus Bot kann jetzt zurückrechnen, welche Preisveränderungen zu den beobachteten Veränderungen in der Gewichtung geführt haben. Mit den errechneten Preisveränderungen kann ich dann, unabhängig von der Gewichtung einen Filter einführen, sodaß der Bot erst ab größeren Veränderungen im Preis reagiert.

Auch wenn das vielleicht unverständlich ist, diese Zurückrechnung ist wichtig und macht den Bot vom Konzept her einfacher. Der Bot braucht dadurch kein "Gedächtnis", er muß keine historischen Kurse vom letzten Lauf oder der letzten Umgewichtung haben. Das einzige Bedingung, die gegeben sein muss ist, daß bereits eine Umgewichtung in der Vergangenheit gemacht wurde.

Bei Einführung eines neuen Coins, oder beim erstmaltigen Aufruf den Antizyklus Bots muss ich ihm etwas "helfen", der Bot kann keine neue Coinposition eröffnen, es reicht aber aus, eine Miniposition manuell auf den neuen Coin zu buchen, und dann kann der Antizyklus Bot ohne Div/0 weitermachen. Das werde ich noch ändern.

Ich muß das Log Tagebuch neu starten, bei CEX.IO gibt es neue Coins, und ich habe den NMC jetzt mit dabei. Vielleicht kommt noch einer...

Mein Exchange - Vergleich hat ergeben, daß ich als nächstes ein API zu BTER bauen sollte, denn dort kann man auch mehrere 3Ecksarbitrage machen (von den vorhandenen Märkten her, ob die Liquidität ausreicht wird sich zeigen), auch für den Interexchange Bot gibt es mehrere Überschneidungen mit CEX.IO und BTC-e.

Meine nächsten Schritte sind also:

- Antizyklus Bot soll ohne "Hilfe" eine neue Coin Position öffnen und auch komplett schließen können, dann kann dieser Bot für eine "Pump and Dump Light" Strategie verwendet werden, gerade bei den großen Altcoin Exchanges sehe ich Potential darin. Damit meine ich, für einen Zeitraum von mehreren Stunden oder Tagen, an der Kurssteigerung eines Altcoins mitzumachen. Auswahl des Coins und Zeitpunktes ist manuell, da habe ich keine automatische Unterstützung geplant.

- BTER erschließen. Eine Quick and Dirty Lösung wäre, eine vorhandene Anbindung zu Clonen. Das API vom BTER unterstützt etwas sehr Sinnvolles, man kann zusätzliche Parameter der einzelnen Coins und Märkte abfragen, das ist besonders hilfreich wenn sich die Fees ändern, oder die Exchange sensibel auf zu viele Kommastellen reagiert, und eine Order verwirft, wenn nicht richtig gerundet wird. Ich denke, ich werde doch die Marktparameter abfragen und etwas Zeit in eine saubere Implementation investieren.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 04, 2014, 01:57:17 PM
Zwecks BTer API haste eine PN von mir.
Wenn sie für dich gut genug ist, musst du ja nicht durch den selben Schmerz gehen wie ich ;)




Der Bot ist in den letzten 24 Stunden gut gelaufen:
5x DRK, 2x WDC, 1x BC, 1x LTC


Dafür vollständig versagt:
NXT



Status Report:
----------------
- Auto Balance Funktion erweitern, damit X Exchanges unterstützt werden
- Manual Deposit Address Mapping Datei für Börsen die keine Unterstützung für API Deposits haben (z.B. BTer)
- Dynamische Amount Anpassung für Antizyklus Strategie -> erledigt
- Auslagern verbliebener Parametern in die config Datei -> erledigt
- Beta Test mit hanspeter77 inkl. Bugfixing -> gestartet
- Release v1.0 erstellen


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 04, 2014, 02:31:57 PM
Der Bot ist in den letzten 24 Stunden gut gelaufen:
5x DRK, 2x WDC, 1x BC, 1x LTC
Kaum habe ich mich über fehlende Arbitragemöglichkeiten beklagt, hat sich auch bei mir etwas getan.
CEX.IO 7 mal DOGE->BTC->LTC und 2 mal eine DRK->USD->BTC
BTC-e  1 mal eine LTC->BTC->USD und 1 mal eine PPC->BTC->USD
Vielleicht schlagt ja heute auch endlich der Interexchange Bot wieder zu, die FTC fallen wieder, das könnte etwas bringen, da ist ja ein Punkt gleich mehr als 10%. Wird sicher passieren, wenn ich nicht Online bin und keine Withdrawls eingeben kann, sodass wieder ein Großteil der Arbitrage verloren ist.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 04, 2014, 03:32:06 PM
Der Bot ist in den letzten 24 Stunden gut gelaufen:
5x DRK, 2x WDC, 1x BC, 1x LTC
Kaum habe ich mich über fehlende Arbitragemöglichkeiten beklagt, hat sich auch bei mir etwas getan.
CEX.IO 7 mal DOGE->BTC->LTC und 2 mal eine DRK->USD->BTC
BTC-e  1 mal eine LTC->BTC->USD und 1 mal eine PPC->BTC->USD
Vielleicht schlagt ja heute auch endlich der Interexchange Bot wieder zu, die FTC fallen wieder, das könnte etwas bringen, da ist ja ein Punkt gleich mehr als 10%. Wird sicher passieren, wenn ich nicht Online bin und keine Withdrawls eingeben kann, sodass wieder ein Großteil der Arbitrage verloren ist.


Da lobe ich mir die exchanges die Withdraw und Deposit per API anbieten :D


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 04, 2014, 04:15:40 PM
Da lobe ich mir die exchanges die Withdraw und Deposit per API anbieten :D
Ja, das ist ein großer Komfort. Allerdings ist es auch nicht schlecht, ein paar Withdraws zusammenkommen zu lassen und dann nur die Summe in einem einzegen Withdrawl wegzuschicken, das spart oftmals Withdrawl fees, da diese oft als Fixspesen unabhängig vom Betrag definiert sind. Hatte leider noch nie den Fall, dass sich Withdrawls zumindest teilweise aufgehoben haben, dafür kommen sie bis jetzt zu selten vor.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 04, 2014, 05:15:48 PM
Da lobe ich mir die exchanges die Withdraw und Deposit per API anbieten :D
Ja, das ist ein großer Komfort. Allerdings ist es auch nicht schlecht, ein paar Withdraws zusammenkommen zu lassen und dann nur die Summe in einem einzegen Withdrawl wegzuschicken, das spart oftmals Withdrawl fees, da diese oft als Fixspesen unabhängig vom Betrag definiert sind. Hatte leider noch nie den Fall, dass sich Withdrawls zumindest teilweise aufgehoben haben, dafür kommen sie bis jetzt zu selten vor.

Bzw. die Anzahl der Coins sind bei mir meist nicht hoch genug um mehrere Trades aussitzen zu können :D


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kneim on November 05, 2014, 09:53:54 AM
Als Antizyklic-Bot könnte ich mir gut auch einen Algo vorstellen, der nicht selber Limit-Order aufstellt, sondern nach starken Ausschlägen bewusst auf Wände wartet, die einem vor die Nase (dicht am Marktpreis) gestellt werden. Die Wahrscheinlichkeit, dabei jemanden auf dem falschen Fuß zu erwischen, ist hoch. Dieses Vorgehen ist für die "beleibteren" unter uns ein Heidenspaß, ohne Bot müsste man ständig in die Glotze schauen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Wolke on November 05, 2014, 11:12:58 AM
Als Antizyklic-Bot könnte ich mir gut auch einen Algo vorstellen, der nicht selber Limit-Order aufstellt, sondern nach starken Ausschlägen bewusst auf Wände wartet, die einem vor die Nase (dicht am Marktpreis) gestellt werden. Die Wahrscheinlichkeit, dabei jemanden auf dem falschen Fuß zu erwischen, ist hoch. Dieses Vorgehen ist für die "beleibteren" unter uns ein Heidenspaß, ohne Bot müsste man ständig in die Glotze schauen.

könntest du das bitte etwas näher erklären? - bin dabei noch leider nicht so "im thema"...  ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 05, 2014, 04:58:29 PM
Als Antizyklic-Bot könnte ich mir gut auch einen Algo vorstellen, der nicht selber Limit-Order aufstellt, sondern nach starken Ausschlägen bewusst auf Wände wartet, die einem vor die Nase (dicht am Marktpreis) gestellt werden. Die Wahrscheinlichkeit, dabei jemanden auf dem falschen Fuß zu erwischen, ist hoch. Dieses Vorgehen ist für die "beleibteren" unter uns ein Heidenspaß, ohne Bot müsste man ständig in die Glotze schauen.

könntest du das bitte etwas näher erklären? - bin dabei noch leider nicht so "im thema"...  ;)

Ein kleines Anschauliches Beispiel wäre nett :) So Zaunpfahl und so ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kneim on November 05, 2014, 09:36:49 PM
Nach starken Kursabstürzen darf ich kaufen, je höher der Kurssturz ausfällt, desto mehr. Wenn ich wirklich kaufen möchte, ist eine Verkaufswand vor meiner Nase doch optimal, oder nicht? Das gleiche auch umgekehrt bei heftigen Kursanstiegen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 07, 2014, 11:40:58 PM
Nach starken Kursabstürzen darf ich kaufen, je höher der Kurssturz ausfällt, desto mehr. Wenn ich wirklich kaufen möchte, ist eine Verkaufswand vor meiner Nase doch optimal, oder nicht? Das gleiche auch umgekehrt bei heftigen Kursanstiegen.
Das sind ja Ideen! Ich habe mit Sportwetten auf Exchange Märkten mehr Erfahrung als bei den Bitcoin Exchanges, bei den Sportwetten war es meist nicht sinnvoll, sich an einer Wand zu orientieren, die war oft so schnell wieder fort, und die Orientierung an einer Wall hat meist zu einer schlechteren Quote geführt.
Sind die Walls bei den Bitcoin Exchanges beständiger, wie oft wird so eine Wall wieder aus dem Markt genommen, noch bevor sie zumindest Teilweise abgetragen wird?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 08, 2014, 12:48:22 AM
So, jetzt bin ich auf einem Status, wo ich mir den weitere Richtung gut überlegen muss. Ich habe ja gerade 3 unterschiedliche Strategien am Laufen, die sich gegenseitig die verfügbare Anzahl an erlaubten Abfragen bei den Exchanges wegnehmen. Vor allem die Interexchange Strategie und die 3Ecksarbitrage leben ja von vielen, schnellen Abfragen, eine Abfrage, die für die 3Ecksarbitrage verwendet wird, kann ja bei dem Interexchange Bot weiterverwertet werden und umgekehrt.

Weiters ist mir eigentlich egal, auf welcher Exchange die Coins liegen. Da könnte ich ja eine einzige Gewichtung über alle Exchanges hinweg verwenden, und nicht jede Exchange einzeln umgewichten.

Als Folge davon, sollte ich alle 3 Strategien in einem einzigen Bot vereinen, da wäre dann auch das Problem der Unverträglichkeit zwischen Interexchange und Antizyklus Bot gelöst. Betrachtet man eine Exchange isoliert, dann zerstört der Interexchange Bot die Gewichtung bei den beiden betroffenen Exchanges, betrachtet man die Positionsveränderungen in Summe über alle betroffenen Exchanges, ändert sich nichts an der Gewichtung.

Mit einer exchangeübergreifenden Antizyklus Strategie erhoffe ich mir, die Withdrawls, die bei der Interexchange Strategie nötig sind, zumindest teilweise einsparen zu können. Jetzt ist aber erst einmal eine Runde Nachdenken angesagt..........


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 08, 2014, 01:35:02 AM
Cryptsy Thema hat sich natürlich nicht gelöst :( bekomme jetzt nicht einmal mehr die wöchentliche Info, dass ein ominöser Techniker an meinem Problem arbeitet.

Dafür läuft es an den anderen Börsen besser....
24h Profit liegt bei 0,00577921 BTC bei einem Wareneinsatz von 0,3 BTC sind das immerhin fast 2% an Tageszins.

Ich bin im Grunde noch immer dabei herauszufinden, woran ich einen guten Coin für meinen ArbitrageBot erkenne. NXT war ein Totalausfall ;)
Wie weit das Ganze nach oben hin skaliert muss ich mal testen. Aber ohne Moos nix los ;)
Wird sicher wieder was zum Knobeln sein, ab wann muss ich ebenfalls die Marktdaten für das zweit, dritt oder X Beste Angebot berücksichtigen sollte für einen Trade.


Die Beta mit hanspeter77 läuft aus meiner Sicht sehr gut. Gab einiges an Stolpersteinen und noch mehr fürs Tutorial zum Niederschreiben :)
Wir sind also auf einem guten Weg. Wenn hanspeter77 Lust hat, kann er ja von seinen Erfahrungen hier berichten, denke wäre eine neue Perspektive.



So, jetzt bin ich auf einem Status, wo ich mir den weitere Richtung gut überlegen muss. Ich habe ja gerade 3 unterschiedliche Strategien am Laufen, die sich gegenseitig die verfügbare Anzahl an erlaubten Abfragen bei den Exchanges wegnehmen. Vor allem die Interexchange Strategie und die 3Ecksarbitrage leben ja von vielen, schnellen Abfragen, eine Abfrage, die für die 3Ecksarbitrage verwendet wird, kann ja bei dem Interexchange Bot weiterverwertet werden und umgekehrt.

Weiters ist mir eigentlich egal, auf welcher Exchange die Coins liegen. Da könnte ich ja eine einzige Gewichtung über alle Exchanges hinweg verwenden, und nicht jede Exchange einzeln umgewichten.

Als Folge davon, sollte ich alle 3 Strategien in einem einzigen Bot vereinen, da wäre dann auch das Problem der Unverträglichkeit zwischen Interexchange und Antizyklus Bot gelöst. Betrachtet man eine Exchange isoliert, dann zerstört der Interexchange Bot die Gewichtung bei den beiden betroffenen Exchanges, betrachtet man die Positionsveränderungen in Summe über alle betroffenen Exchanges, ändert sich nichts an der Gewichtung.

Mit einer exchangeübergreifenden Antizyklus Strategie erhoffe ich mir, die Withdrawls, die bei der Interexchange Strategie nötig sind, zumindest teilweise einsparen zu können. Jetzt ist aber erst einmal eine Runde Nachdenken angesagt..........

Kann ich nachempfinden. Ich habe Rechtzeitig diesen Thread entdeckt und noch die Kurve nehmen können, beide Strategien in einem Bot zu integrieren. Gerade die Statusübergänge sind immer wieder kniffelig, wann darf wie und warum eine dynamische Anpassung erfolgen. Am Ende habe ich es so gelöst, dass er zwar alle 15 Minuten den Stand prüft. Sollten aber gerade Trades gefüllt werden, dann überspringe und komm später wieder. Klappt bisher ganz gut. Muss aber noch ausführlicher getestet werden, da mir die Variante zu simple erscheint...

Bin gespannt wie dein Lösungsansatz aussehen wird.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 08, 2014, 01:40:27 AM
Nach starken Kursabstürzen darf ich kaufen, je höher der Kurssturz ausfällt, desto mehr. Wenn ich wirklich kaufen möchte, ist eine Verkaufswand vor meiner Nase doch optimal, oder nicht? Das gleiche auch umgekehrt bei heftigen Kursanstiegen.


Interessanter Ansatz, ist aber glaube ich für mich alten Angsthasen zu offensiv. Ich werde mal grübeln ob und wie es umsetzbar ist in meinem Kontext. Wäre dann aber eher etwas für Version 2 :D will langsam mal einen stabilen Stand haben :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 08, 2014, 02:58:11 AM

Kann ich nachempfinden. Ich habe Rechtzeitig diesen Thread entdeckt und noch die Kurve nehmen können, beide Strategien in einem Bot zu integrieren. Gerade die Statusübergänge sind immer wieder kniffelig, wann darf wie und warum eine dynamische Anpassung erfolgen. Am Ende habe ich es so gelöst, dass er zwar alle 15 Minuten den Stand prüft. Sollten aber gerade Trades gefüllt werden, dann überspringe und komm später wieder. Klappt bisher ganz gut. Muss aber noch ausführlicher getestet werden, da mir die Variante zu simple erscheint...

Bin gespannt wie dein Lösungsansatz aussehen wird.

Es hat sich leider herausgestellt, dass mein erster Ansatz der 3Ecksarbitrage zwar gut funktioniert, keine Withdrawls braucht, aber wenig Ertrag bringt. Die Interexchange Arbitrage ist da umgekehrt, bringt 10 mal so viel, hat aber das Problem der Withdrawls.

Sollten sich keine anderen großartigen Probleme damit ergeben, bekommt der Bot für jede Exchange (zumindest einen) Thread,  der die Abfragen macht. Asynchron und Gleichzeitig. Ist ein neues Ergebnis von einem  Exchange Thread da, werden alle Arbitragemöglichkeiten durchgerechnet, wo der zuletzt abgefragte Markt relevant ist, und die Daten aller anderen Märkte aus der Arbitrage nicht allzu veraltet sind. Die Arbitragebots suchen sich bereits jetzt aufgrund der Coin und Marktdefinitionen die Arbitragemöglichkeiten selbstständig zusammen, da muss ich die 2 Arbitragemodule nur mehr zusammenführen.

Der Antizyklus Bot ist nicht so zeitkritisch, der läuft einfach mit. Leider sind die Anpassungen vom Antizyklus bot immer sehr gering, der kann niemals Withdrawals ersetzen.

Manuelle Withdrawals kann ich auch nicht machen, solange der Antizyklus Bot läuft, ich denke ich werde den Interexchange Bot auch erlauben müssen, dass er auch verlustbringende Arbitragen macht, damit die Coins auf den einzelnen Exchanges im Gleichgewicht bleiben. So kann ich auch die FIAT Märkte mit dem Interexchange Bot erschließen.

Technisch sollte ich aber als Erstes ausprobieren, ob auch alles Thread Safe ist, wenn ich dann auch noch ohne Withdrawls auskomme, bin ich zufrieden.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 08, 2014, 11:50:43 AM


Manuelle Withdrawals kann ich auch nicht machen, solange der Antizyklus Bot läuft,


Habe eine Routine Implementiert, die sich nicht um den Fakt kümmern muss. Der Bot passt sich der aktuellen Coinsituation an. Der Referenzpreis bleibt ja am Ende gleich nur die Portfolio Bewertung ändert sich für den Zeitraum des Withdraws. Wenn die dann angekommen sind bewertet er wieder neu. Wenn er keine Coins zu verkaufen hat, dann wartet er bis zum nächsten Zyklus


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 10, 2014, 12:10:42 AM
Jetzt wird das ganze Projekt eine Stufe komplexer. Habe meine PHP Installationen um das pthread Package erweitert, und jetzt geht es los mit dem Programmieren der neuen Version.

Geplant ist, dass jede Exchange im Bot einen (oder mehrere) Threads bekommt, die jeweils asynchron die Exchangedaten abfragen. Alle Arbitragestrategien sind dann in einem Bot implementiert, dadurch werden die wertvollen da limitierten Abfragen besser ausgenutzt.

Wie immer, mach ich alles in kleinen Schritten. Die Bots für CEX.IO und BTC-e laufen erst einmal weiter, die neue Version entwickle ich vorerst nur für BTer. Wenn die neue Version mehrere Tage ohne Probleme gelaufen ist, kommt die Anbindung von CEX.IO auch in die neue Version.



Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 10, 2014, 11:37:31 AM
Wie ist bei euch das Wochenende gelaufen? Also bei mir steppte der Bär und ich musste durch die fehlende API Withdrawal Funktion bei BTer öfters am PC hocken als erwartet.
Ich habe den BOT ja am Mittwoch, 05.11.2014 vollständig resettet (um mein Install Dokument zu schreiben) und er hat bisher 104 Trades abgeschlossen bei einem Einsatz von 0,3 BTC einen Profit von 0,01354550 BTC erreicht.

Die AntiZyklus Einheit habe ich bisher nicht oben mit drin, aber bei den schönen Wellenformen von DRK ein wahrer Augenschmaus zu sehen wie die Strategie aufgeht :)


kalkulatorix: Haben dir die API Calls weiter geholfen?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 10, 2014, 01:24:08 PM
Wie ist bei euch das Wochenende gelaufen?

Mies, ich habe mich schachmatt gesetzt. Der Interexchange Bot hat eine wunderbare Arbitrage BTC/USD zwischen BTC-e ( da war der Kurs 16 USD höher ) und CEX.IO gefunden, und sie total ausgenützt. Alle USD sind jetzt auf BTC-e, und fast alle BTC auf CEX.IO. Dadurch gehen die Arbitragen sehr schlecht, wegen zu geringer Funds. Jetzt habe ich die Wahl:
- mit bei beiden Éxchanges verifizieren lassen und die FIATs per Überweisung angleichen. Dauert lange und kostet in Summe an die 9% Spesen, da ich nur EUR Konto habe.
- eine Gegen-Arbitrage machen, kostet in Summe 17%
- warten, bis sich eine billige Arbitrage in die Gegenrichtung ergibt.
Da ich genug Beschäftigung mit dem Programmieren der neuen Version habe, werde ich letzteres machen.

kalkulatorix: Haben dir die API Calls weiter geholfen?
Danke für Deine Hilfe, war am Wochenende zu spät dran, da war die Dropbox schon weg. Ist aber kein Problem, bis auf andere URLs ist das 1:1 wie die BTC-e API. Was ich noch implementieren muß, die seltsamen Kommastellen bei Preis und Anzahl.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 10, 2014, 02:23:48 PM

kalkulatorix: Haben dir die API Calls weiter geholfen?
Danke für Deine Hilfe, war am Wochenende zu spät dran, da war die Dropbox schon weg. Ist aber kein Problem, bis auf andere URLs ist das 1:1 wie die BTC-e API. Was ich noch implementieren muß, die seltsamen Kommastellen bei Preis und Anzahl.


Sag doch was :) hast PN mit neuem Link :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on November 10, 2014, 06:50:17 PM
Mag mir einer von euch dabei helfen einen Bot in Python für Kraken.com zu schreiben?
Er soll einfach die Orderbooks auslesen können und eben Orders nach von mir gewählten Kriterien erstellen können.

Also an sich brauch ich halt so das Grundgerüst des Bots. Die Strategien usw. werde ich dann selbst programmieren, wobei es da hilfreich wäre, wenn mir dann noch gesagt wird, wo/wie ich solche Bedingungen am besten einbinde.
Die Sprache Python lerne ich aktuell, wobei ich grob geschätzt 1/4 bereits kann :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 10, 2014, 07:49:37 PM
Mag mir einer von euch dabei helfen einen Bot in Python für Kraken.com zu schreiben?
Sorry, mit Python kann ich Dir nicht helfen, aber Hier: https://github.com/veox/python2-krakenex/ findest Du das erste Puzzlestück, ein einfaches API für Kraken.

Die Exchanges liefern ihre Antworten und wollen auch die Requests im json - Format, das ist im Python standard library enthalten. Am Anfang nur Abfragen senden, die Antworten auf Deine Abfragen in Python - Daten umwandeln.  Und zu Beginn nicht viele Funds am Account haben! Viel Glück!

Edit: Habe gerade gelesen, daß Du Python erst lernst, da ist es extrem hilfreich, mit kleinen Schritten zu beginnen. Vielleicht einmal die Funds von Deinen Account abfragen, in Python - Daten umwandeln, und dann formattiert ausgeben.

Das Gerüst vom Bot hängt stark davon ab, welche Strategie Du machen möchtest. Zu Beginn würde ich mir aber in jedem Fall das von Kraken holen und ausprogrammieren:

- Account Balance
- Order Book
- Open Orders



Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on November 10, 2014, 09:42:50 PM
Mag mir einer von euch dabei helfen einen Bot in Python für Kraken.com zu schreiben?
Sorry, mit Python kann ich Dir nicht helfen, aber Hier: https://github.com/veox/python2-krakenex/ findest Du das erste Puzzlestück, ein einfaches API für Kraken.

Die Exchanges liefern ihre Antworten und wollen auch die Requests im json - Format, das ist im Python standard library enthalten. Am Anfang nur Abfragen senden, die Antworten auf Deine Abfragen in Python - Daten umwandeln.  Und zu Beginn nicht viele Funds am Account haben! Viel Glück!

Edit: Habe gerade gelesen, daß Du Python erst lernst, da ist es extrem hilfreich, mit kleinen Schritten zu beginnen. Vielleicht einmal die Funds von Deinen Account abfragen, in Python - Daten umwandeln, und dann formattiert ausgeben.

Das Gerüst vom Bot hängt stark davon ab, welche Strategie Du machen möchtest. Zu Beginn würde ich mir aber in jedem Fall das von Kraken holen und ausprogrammieren:

- Account Balance
- Order Book
- Open Orders


Vielen Dank für deine Antwort :) habe mir davon mal die Kakenex3 Version für Python 3 geholt, weil ich das lerne.
Ja habe schon extra einen neuen Account eingerichtet, damit meine Botversuche nichts kaputt machen können :D

Kannst du mir kurz erklären, was dieses Krakenex bereits macht und was ich noch selbst machen muss?
Das mit "json" habe ich noch nicht verstanden, das wird auch im Tutorial ab und zu als import verwendet, ich habe aber noch keine Idee, was das genau macht und was da überhaupt ist (dass es ein Dateiformat ist, konnte ich zum. schonmal bei wikipedia nachlesen und dass es unabhängig von der Programmiersprache ist.. also ist das vermutlich der Zweck, damit man es mit jeder Sprache vernünftig auslesen kann?).

Okay, das mit den kleinen Schritten und erstmal einzelne Daten auslesen und anzeigen lassen klingt schonal sehr vernünftig werde ich so versuchen, sobald ich weiß, was ich dazu machen muss.
Ich les mir die tage/wochen dann noch die API Doku von Kraken durch und wenn dabei dann noch Fragen auftreten, frag ich hier nochmal an, okay? =)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 11, 2014, 01:01:19 AM
Vielen Dank für deine Antwort :) habe mir davon mal die Kakenex3 Version für Python 3 geholt, weil ich das lerne.
Ja habe schon extra einen neuen Account eingerichtet, damit meine Botversuche nichts kaputt machen können :D

Bevor Du si richtig anfangst, prüfe erst einmal nach, ob Deine Python Installation die Richtige ist, wie gesagt, ich kenne Python nur vom Wikipedia, würde die letzte NICHT - Beta Version für Dein Betriebssystem von einer zuverlässigen Quelle runterladen und Installieren. Ein "Spiel - Account" ist schon einmal eine gute Idee.

Kannst du mir kurz erklären, was dieses Krakenex bereits macht und was ich noch selbst machen muss?

Wie das Installieren geht, steht im README.md im Package. Bevor Du Deine Private - Daten abfragen kannst, musst Du das kraken.key File mit dem Key und Secret vom "Spiel - Account" befüllen. Das Package stellt Dir 2 Methoden zur Verfügung, die query_public und query_private. Mehr nicht. Ist nur das API, mit dem Du in Python mit kraken.com kannst. Das API mit den Parametern und allen Möglichkeiten ist auf Kraken.com beschrieben, hast DU aber ohnehin schon gefunden.  :D

Das mit "json" habe ich noch nicht verstanden, das wird auch im Tutorial ab und zu als import verwendet, ich habe aber noch keine Idee, was das genau macht und was da überhaupt ist (dass es ein Dateiformat ist, konnte ich zum. schonmal bei wikipedia nachlesen und dass es unabhängig von der Programmiersprache ist.. also ist das vermutlich der Zweck, damit man es mit jeder Sprache vernünftig auslesen kann?).
Genau so ist es. Und bei Spachen, die ein lockeres Typkonzept haben, kannst Du das json geich in eine Variable dekodieren lassen. Da ist die Antwort vom Kraken.com dann nicht mehr ein String, sondern gleich ein multidimensionales, assoziatives Array. Kling kompliziert, ist aber sehr praktisch. Das den besten Kaufpreis findest Du dann in der Antwort auf einen Orderbuch - Request so: antwort["ask"][0][0]

... wenn dabei dann noch Fragen auftreten, frag ich hier nochmal an, okay? =)
Gerne. Vielleicht meldet sich in der Zwischenzeit auch ein Python Spezialist......


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on November 11, 2014, 06:41:14 PM
Vielen Dank für deine Antwort :) habe mir davon mal die Kakenex3 Version für Python 3 geholt, weil ich das lerne.
Ja habe schon extra einen neuen Account eingerichtet, damit meine Botversuche nichts kaputt machen können :D

Bevor Du si richtig anfangst, prüfe erst einmal nach, ob Deine Python Installation die Richtige ist, wie gesagt, ich kenne Python nur vom Wikipedia, würde die letzte NICHT - Beta Version für Dein Betriebssystem von einer zuverlässigen Quelle runterladen und Installieren. Ein "Spiel - Account" ist schon einmal eine gute Idee.

Kannst du mir kurz erklären, was dieses Krakenex bereits macht und was ich noch selbst machen muss?

Wie das Installieren geht, steht im README.md im Package. Bevor Du Deine Private - Daten abfragen kannst, musst Du das kraken.key File mit dem Key und Secret vom "Spiel - Account" befüllen. Das Package stellt Dir 2 Methoden zur Verfügung, die query_public und query_private. Mehr nicht. Ist nur das API, mit dem Du in Python mit kraken.com kannst. Das API mit den Parametern und allen Möglichkeiten ist auf Kraken.com beschrieben, hast DU aber ohnehin schon gefunden.  :D

Das mit "json" habe ich noch nicht verstanden, das wird auch im Tutorial ab und zu als import verwendet, ich habe aber noch keine Idee, was das genau macht und was da überhaupt ist (dass es ein Dateiformat ist, konnte ich zum. schonmal bei wikipedia nachlesen und dass es unabhängig von der Programmiersprache ist.. also ist das vermutlich der Zweck, damit man es mit jeder Sprache vernünftig auslesen kann?).
Genau so ist es. Und bei Spachen, die ein lockeres Typkonzept haben, kannst Du das json geich in eine Variable dekodieren lassen. Da ist die Antwort vom Kraken.com dann nicht mehr ein String, sondern gleich ein multidimensionales, assoziatives Array. Kling kompliziert, ist aber sehr praktisch. Das den besten Kaufpreis findest Du dann in der Antwort auf einen Orderbuch - Request so: antwort["ask"][0][0]

... wenn dabei dann noch Fragen auftreten, frag ich hier nochmal an, okay? =)
Gerne. Vielleicht meldet sich in der Zwischenzeit auch ein Python Spezialist......

Danke nochmal für die ausführliche antwort :)  Ich hab Version 3.4.2, soweit ich sehe ist das schon die neuste offizielle Version und nicht die BETA-Variante.
Gutgut.. Ich denke ich eröffne dennoch in "Suche" des Forums mal ein Thema, wo ich noch nach Programmierern suche.
Wenn ich das nun alles selbst mache, dauert das vermutlich noch ein paar Monate... und da Zeit Geld ist, versuch ich das mal so zu beschleunigen, zumal ich am besten aus Beispielen lerne, also z.b einen fertigen Bot sehe und mir erklärt wird, "das ist dafür  da  und das hier amcht das und das". Dann bin ich denke ich sehr schnell in der Lage, das Konzept zu erweitern, auf eine andere börse anzuwenden und es wäre halt schneller, als wenn ich mir nun selbst alles aneigne.
Edit: https://bitcointalk.org/index.php?topic=854890.0


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 12, 2014, 01:52:43 AM
Ich denke ich eröffne dennoch in "Suche" des Forums mal ein Thema, wo ich noch nach Programmierern suche.
Sorry, aber ich halte das für einen großen Fehler. Wieso sollte Dir ein Fremder helfen, Deine Coins zu vermehren? Bitte verstehe mich nicht falsch, du bist aufgrund Deiner vorhergehenden Postings sehr positiv in meiner Erinnerung (soferne das irgendeine Bedeutung hat), aber eine kleine Warnung ist dennoch angebracht.

Die Bitcoins, und alles was dazugehört, ist zur Zeit ein Haifischbecken, jeder der eine Schwäche zeigt, wird abgezockt. Kaufst Du einen Miner, ist der reif für den Schrott, falls er überhaupt bei Die ankommt. Kaufst Du eine Software zum Bifcoin handeln, kann sie bei weitem nicht den Gewinn bringen, der im Prospekt steht. Kaufst Du Bitcoins, sind sie in 2 Tagen im 15% weniger wert.

Wenn ich das nun alles selbst mache, dauert das vermutlich noch ein paar Monate... und da Zeit Geld ist,
Ist ja kein Problem. Die Bitcoins wird es in 2 Jahren auch noch geben, da hast Du mehr als genug Zeit selbst zu lernen.

versuch ich das mal so zu beschleunigen, zumal ich am besten aus Beispielen lerne, also z.b einen fertigen Bot sehe und mir erklärt wird, "das ist dafür  da  und das hier amcht das und das".
Überschätze Deine Kenntnisse nicht. Selbst wenn Du die Syntax vom Python beherrscht, wird es Dir am Anfang schwerfallen, ein tricky Script, zu durchschauen. Am Besten lernt man aus Fehlern, je kostspieliger die Fehler sind, umso steiler geht die Lernkurve nach oben.
[/quote]

Dann bin ich denke ich sehr schnell in der Lage, das Konzept zu erweitern, auf eine andere börse anzuwenden und es wäre halt schneller, als wenn ich mir nun selbst alles aneigne.
Überschätze Deine Kenntnisse nicht. Bevor Du einen Bot programmierst, braucht es eine Idee, was der machen soll. Anwenden, was Dir irgendjemand gesagt hat, bringt gar nichts, da muss eine Idee dahinterstecken, viel Energie, Geduld und Durchhaltevermögen.

Bitte sei mir nicht böse, ich habe diesen Thread extra angefangen, um aufzuzeigen, wie schwierig die Entwicklung und die Wartung von Bots ist, deswegen muss ich Dich ernsthaft davor warnen, einfach Deine Zukunft in fremde Hande zu legen. Und schon gar nicht in die Hände von einem, der sich auf Deinen verzweifelten Hilferuf nach einem Bot Entwickler meldet.  8)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on November 12, 2014, 03:16:15 AM
Ich denke ich eröffne dennoch in "Suche" des Forums mal ein Thema, wo ich noch nach Programmierern suche.
Sorry, aber ich halte das für einen großen Fehler. Wieso sollte Dir ein Fremder helfen, Deine Coins zu vermehren? Bitte verstehe mich nicht falsch, du bist aufgrund Deiner vorhergehenden Postings sehr positiv in meiner Erinnerung (soferne das irgendeine Bedeutung hat), aber eine kleine Warnung ist dennoch angebracht.

Die Bitcoins, und alles was dazugehört, ist zur Zeit ein Haifischbecken, jeder der eine Schwäche zeigt, wird abgezockt. Kaufst Du einen Miner, ist der reif für den Schrott, falls er überhaupt bei Die ankommt. Kaufst Du eine Software zum Bifcoin handeln, kann sie bei weitem nicht den Gewinn bringen, der im Prospekt steht. Kaufst Du Bitcoins, sind sie in 2 Tagen im 15% weniger wert.

Wenn ich das nun alles selbst mache, dauert das vermutlich noch ein paar Monate... und da Zeit Geld ist,
Ist ja kein Problem. Die Bitcoins wird es in 2 Jahren auch noch geben, da hast Du mehr als genug Zeit selbst zu lernen.

versuch ich das mal so zu beschleunigen, zumal ich am besten aus Beispielen lerne, also z.b einen fertigen Bot sehe und mir erklärt wird, "das ist dafür  da  und das hier amcht das und das".
Überschätze Deine Kenntnisse nicht. Selbst wenn Du die Syntax vom Python beherrscht, wird es Dir am Anfang schwerfallen, ein tricky Script, zu durchschauen. Am Besten lernt man aus Fehlern, je kostspieliger die Fehler sind, umso steiler geht die Lernkurve nach oben.


Dann bin ich denke ich sehr schnell in der Lage, das Konzept zu erweitern, auf eine andere börse anzuwenden und es wäre halt schneller, als wenn ich mir nun selbst alles aneigne.
Überschätze Deine Kenntnisse nicht. Bevor Du einen Bot programmierst, braucht es eine Idee, was der machen soll. Anwenden, was Dir irgendjemand gesagt hat, bringt gar nichts, da muss eine Idee dahinterstecken, viel Energie, Geduld und Durchhaltevermögen.

Bitte sei mir nicht böse, ich habe diesen Thread extra angefangen, um aufzuzeigen, wie schwierig die Entwicklung und die Wartung von Bots ist, deswegen muss ich Dich ernsthaft davor warnen, einfach Deine Zukunft in fremde Hande zu legen. Und schon gar nicht in die Hände von einem, der sich auf Deinen verzweifelten Hilferuf nach einem Bot Entwickler meldet.  8)

Ich danke dir für deine Sorge :)
Du brauchst dir bezüglich der Strategie keine Sorgen machen, ich habe mehr als genug eigene Erfahrung und definitv eine Strategie, die ich seit über einem Jahr manuell durchführe. Weil ich jetzt aber weniger Zeit habe, erhoffe ich mir, dass ein Bot dies fortführen kann.  Ich habe mir auch schon seitenlange Gedanken darüber gemacht, wie ich einen bot dazu kriege, bestimmte Dinge so zu erkenenn, wie ich es tue usw usw.   Also das ist alles kein Problem.
Es wäre ein Problem, wenn ich einen Bot kaufen würde, von dem mir der ersteller verspricht, dass ich damit reich werde oderso. Aber das habe ich ja nicht vor. Ich will nur einen bot mit dem Grundgerüst, vollkommen ohne irgendeine Strategie.

Was aber natürlich ein Problem ist, dass ich nicht blindlings irgendeinem Code vertrauen sollte und den bei mir ausführen sollte. Aber dazu gibt es ja viele unabhängige freundliche User wie dich, die ich nochmal darum bitten könnte, über den code drüberzuschauen, ob da auch ja keine Hintertür oder ähnliches eingebaut ist :)
Zum Thema unterschätzen: Gerade weil ich die Programmierarbeit nicht unterschätze, bin ich überzeugt davon, dass etwas Hilfe nicht schaden kann.  Alleine würde ich ewig dafür brauchen.

Mal schauen ob sich die Tage überhaupt jemand meldet..

Mein größtes Problem ist zurzeit eigentlich nur der Einstieg.  
Ich denke ich bekomme es hin, bei Kraken Werte abzufragen, diese in Variablen zu speichern und für Rechnungen zu verwenden und dadurch dann eben Orders zu erstellen.
Aber was ich nicht weiß, wie ein Bot/Skript startet, wie es Verbindung zu Kraken aufnimmt, wie ich eine kleine GUI schreibe, um z.b zu sagen "kaufe wenn Preis um x% steigt", wobei ich den x Wert dann eben in der GUI eintragen kann (gut am anfang gehts natürlich auch, wenn ich einfach im Skript ne Zahl ändere).  
Wenn ich die ersten Zeilen von hier General Usage lese: https://www.kraken.com/help/api
Dann verstehe ich nur Bahnhof =/  Ich weiß nicht, was mit POST gemeint ist. Ich weiß nicht was ein API Sign oder HMAC-SHA512 ist. Ich weiß nicht was "nonce = always increasing unsigned 64 bit integer" meint. Ich weiß nicht was "ISO4217-A3 " ist.
Ich weiß nicht worauf ich sonst noch alles achten muss.

Diese ganzen Dinge werde ich ziemlich sicher in keinem Python Tutorial lernen. Deswegen suche ich nach jemanden, der es mir direkt anhand eines fertigen Codes zeigen kann.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 12, 2014, 10:03:26 AM
Ich danke dir für deine Sorge :)
Du brauchst dir bezüglich der Strategie keine Sorgen machen, ich habe mehr als genug eigene Erfahrung und definitv eine Strategie, die ich seit über einem Jahr manuell durchführe. Weil ich jetzt aber weniger Zeit habe, erhoffe ich mir, dass ein Bot dies fortführen kann.  Ich habe mir auch schon seitenlange Gedanken darüber gemacht, wie ich einen bot dazu kriege, bestimmte Dinge so zu erkenenn, wie ich es tue usw usw.   Also das ist alles kein Problem.
Es wäre ein Problem, wenn ich einen Bot kaufen würde, von dem mir der ersteller verspricht, dass ich damit reich werde oderso. Aber das habe ich ja nicht vor. Ich will nur einen bot mit dem Grundgerüst, vollkommen ohne irgendeine Strategie.

Was aber natürlich ein Problem ist, dass ich nicht blindlings irgendeinem Code vertrauen sollte und den bei mir ausführen sollte. Aber dazu gibt es ja viele unabhängige freundliche User wie dich, die ich nochmal darum bitten könnte, über den code drüberzuschauen, ob da auch ja keine Hintertür oder ähnliches eingebaut ist :)
Zum Thema unterschätzen: Gerade weil ich die Programmierarbeit nicht unterschätze, bin ich überzeugt davon, dass etwas Hilfe nicht schaden kann.  Alleine würde ich ewig dafür brauchen.

Mal schauen ob sich die Tage überhaupt jemand meldet..

Mein größtes Problem ist zurzeit eigentlich nur der Einstieg.  
Ich denke ich bekomme es hin, bei Kraken Werte abzufragen, diese in Variablen zu speichern und für Rechnungen zu verwenden und dadurch dann eben Orders zu erstellen.
Aber was ich nicht weiß, wie ein Bot/Skript startet, wie es Verbindung zu Kraken aufnimmt, wie ich eine kleine GUI schreibe, um z.b zu sagen "kaufe wenn Preis um x% steigt", wobei ich den x Wert dann eben in der GUI eintragen kann (gut am anfang gehts natürlich auch, wenn ich einfach im Skript ne Zahl ändere).  
Wenn ich die ersten Zeilen von hier General Usage lese: https://www.kraken.com/help/api
Dann verstehe ich nur Bahnhof =/  Ich weiß nicht, was mit POST gemeint ist. Ich weiß nicht was ein API Sign oder HMAC-SHA512 ist. Ich weiß nicht was "nonce = always increasing unsigned 64 bit integer" meint. Ich weiß nicht was "ISO4217-A3 " ist.
Ich weiß nicht worauf ich sonst noch alles achten muss.

Diese ganzen Dinge werde ich ziemlich sicher in keinem Python Tutorial lernen. Deswegen suche ich nach jemanden, der es mir direkt anhand eines fertigen Codes zeigen kann.

Habe eure Postings interessiert verfolgt und möchte gerne jetzt auch etwas dzu kund tun ;)

Ich sehe es wie kalkulatorix. Ich hatte auch am Anfang das Problem...wie fängt man an? Da habe ich mir dann auch einen Bot organisiert um mal zu lernen wie überhaupt so die Zusammenhänge sind. Der Bot lief gut, aber dann habe ich angefangen Sachen zu verändern und für mich zu verbessern bis ich letztendlich einen Rappel bekommen habe und einen eigenen geschrieben habe. Lange Rede kurzer Sinn im Grunde waren die Coins für den Bot rausgeschmissen hätte ich mich gleich dran gesetzt wäre mein Startkapital höher gewesen und ich hätte dennoch die Lernkurve gehabt.

Und egal wie gut udn simpel deine Strategie ist, du wirst genügend bullshit einprogrammieren der dir wieder Kopfzerbrechen bereitet. Mein aktuelles Beispiel: Sell Exchange ändert sich zwischen Kauf und Verkauf und auf dem neuen Sell Echange sind nciht genügend Coins. Bis ich rausgefunden hatte in welchem zeitfenster das passiert udn was die ursache ist...eyeyey...und es lag an miner basis API's zum Abfragen der API's die du dir bauen lassen möchtest....

Sehr viele Exchanges bieten direkt Tutorial und Beispiele in PHP, damit solltest du vielleicht anfang. Python hat zwar auch einige Tutorials und Beispiele auf GIT, aber glaube das Gro kennt sich halt mit Python nicht so gut aus udn kann auch nicht gut bewerten, ob da Backdors drin sind.

Vielleicht fängst du auch lieber mit eienr der Börsen von uns an, dann könnenw ir dir auch besser helfen. Habe bisher nicht gelesen, dass jemand Kraken implementiert hat.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daboehla on November 12, 2014, 10:25:58 AM
Ich danke dir für deine Sorge :)
Du brauchst dir bezüglich der Strategie keine Sorgen machen, ich habe mehr als genug eigene Erfahrung und definitv eine Strategie, die ich seit über einem Jahr manuell durchführe. Weil ich jetzt aber weniger Zeit habe, erhoffe ich mir, dass ein Bot dies fortführen kann.  Ich habe mir auch schon seitenlange Gedanken darüber gemacht, wie ich einen bot dazu kriege, bestimmte Dinge so zu erkenenn, wie ich es tue usw usw.   Also das ist alles kein Problem.
Es wäre ein Problem, wenn ich einen Bot kaufen würde, von dem mir der ersteller verspricht, dass ich damit reich werde oderso. Aber das habe ich ja nicht vor. Ich will nur einen bot mit dem Grundgerüst, vollkommen ohne irgendeine Strategie.

Was aber natürlich ein Problem ist, dass ich nicht blindlings irgendeinem Code vertrauen sollte und den bei mir ausführen sollte. Aber dazu gibt es ja viele unabhängige freundliche User wie dich, die ich nochmal darum bitten könnte, über den code drüberzuschauen, ob da auch ja keine Hintertür oder ähnliches eingebaut ist :)
Zum Thema unterschätzen: Gerade weil ich die Programmierarbeit nicht unterschätze, bin ich überzeugt davon, dass etwas Hilfe nicht schaden kann.  Alleine würde ich ewig dafür brauchen.

Mal schauen ob sich die Tage überhaupt jemand meldet..

Mein größtes Problem ist zurzeit eigentlich nur der Einstieg.  
Ich denke ich bekomme es hin, bei Kraken Werte abzufragen, diese in Variablen zu speichern und für Rechnungen zu verwenden und dadurch dann eben Orders zu erstellen.
Aber was ich nicht weiß, wie ein Bot/Skript startet, wie es Verbindung zu Kraken aufnimmt, wie ich eine kleine GUI schreibe, um z.b zu sagen "kaufe wenn Preis um x% steigt", wobei ich den x Wert dann eben in der GUI eintragen kann (gut am anfang gehts natürlich auch, wenn ich einfach im Skript ne Zahl ändere).  
Wenn ich die ersten Zeilen von hier General Usage lese: https://www.kraken.com/help/api
Dann verstehe ich nur Bahnhof =/  Ich weiß nicht, was mit POST gemeint ist. Ich weiß nicht was ein API Sign oder HMAC-SHA512 ist. Ich weiß nicht was "nonce = always increasing unsigned 64 bit integer" meint. Ich weiß nicht was "ISO4217-A3 " ist.
Ich weiß nicht worauf ich sonst noch alles achten muss.

Diese ganzen Dinge werde ich ziemlich sicher in keinem Python Tutorial lernen. Deswegen suche ich nach jemanden, der es mir direkt anhand eines fertigen Codes zeigen kann.

Habe eure Postings interessiert verfolgt und möchte gerne jetzt auch etwas dzu kund tun ;)

Ich sehe es wie kalkulatorix. Ich hatte auch am Anfang das Problem...wie fängt man an? Da habe ich mir dann auch einen Bot organisiert um mal zu lernen wie überhaupt so die Zusammenhänge sind. Der Bot lief gut, aber dann habe ich angefangen Sachen zu verändern und für mich zu verbessern bis ich letztendlich einen Rappel bekommen habe und einen eigenen geschrieben habe. Lange Rede kurzer Sinn im Grunde waren die Coins für den Bot rausgeschmissen hätte ich mich gleich dran gesetzt wäre mein Startkapital höher gewesen und ich hätte dennoch die Lernkurve gehabt.

Und egal wie gut udn simpel deine Strategie ist, du wirst genügend bullshit einprogrammieren der dir wieder Kopfzerbrechen bereitet. Mein aktuelles Beispiel: Sell Exchange ändert sich zwischen Kauf und Verkauf und auf dem neuen Sell Echange sind nciht genügend Coins. Bis ich rausgefunden hatte in welchem zeitfenster das passiert udn was die ursache ist...eyeyey...und es lag an miner basis API's zum Abfragen der API's die du dir bauen lassen möchtest....

Sehr viele Exchanges bieten direkt Tutorial und Beispiele in PHP, damit solltest du vielleicht anfang. Python hat zwar auch einige Tutorials und Beispiele auf GIT, aber glaube das Gro kennt sich halt mit Python nicht so gut aus udn kann auch nicht gut bewerten, ob da Backdors drin sind.

Vielleicht fängst du auch lieber mit eienr der Börsen von uns an, dann könnenw ir dir auch besser helfen. Habe bisher nicht gelesen, dass jemand Kraken implementiert hat.

Ich verwende derzeit Kraken API, jedoch mit PHP.
Habe mir eine PHP Kraken API Klasse aus github heruntergeladen und verwende diese.

Dann ist die Verwendung sehr leicht:

$key = 'xxxxxxx';
$secret = '<<<<<<<<<<';

$beta = false;
$url = $beta ? 'https://api.beta.kraken.com' : 'https://api.kraken.com';
$sslverify = $beta ? false : true;
$version = 0;

$kraken = new KrakenAPI($key, $secret, $url, $version, $sslverify);

$res = $kraken->QueryPublic('Ticker', array('pair' => 'XXBTZEUR'));

$btcpriceask = $res['result']['XXBTZEUR']['a']['0'];

// Query private asset balances
$res = $kraken->QueryPrivate('Balance');
$balEUR = $res['result']['ZEUR'];
$balBTC = $res['result']['XXBT'];


So ähnlich kannst du es auch mit Python machen. Hier gbit es auch auf Gibhub eine API:

https://github.com/veox/python2-krakenex

Example:
import krakenex

k = krakenex.API()
k.load_key('kraken.key')

k.query_private('AddOrder', {'pair': 'XXBTZEUR',
                             'type': 'buy',
                             'ordertype': 'limit',
                             'price': '1',
                             'volume': '1',
                             'close[pair]': 'XXBTZEUR',
                             'close[type]': 'sell',
                             'close[ordertype]': 'limit',
                             'close[price]': '9001',
                             'close[volume]': '1'})

also genau gleich, nur dass die Syntax eine andere ist ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: ewibit on November 12, 2014, 05:31:47 PM
Da lobe ich mir die exchanges die Withdraw und Deposit per API anbieten :D
welche gibt es da noch außer Poloniex, Bittrex und Cryptsy?
TIA


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 12, 2014, 07:09:23 PM
Da lobe ich mir die exchanges die Withdraw und Deposit per API anbieten :D
welche gibt es da noch außer Poloniex, Bittrex und Cryptsy?
TIA

Bitstamp hat auch, Mintap mit v2 sollte es auch haben aber keine Ahnung. Muss man halt einzeln prüfen:

http://www.cryptocoincharts.info/markets/info

Bin gerade mit dem Dreieck BTer, Poloniex und Bittrex sehr zufrieden und schaue gerade nicht mehr nach API Integration.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on November 12, 2014, 10:37:59 PM
Danke für eure Kommentare Darkwinde und daboehla :)

@Darkwinde:
Ich denke schon, dass dadurch, dass du einen Bot zum analysieren hattest, dass dein Lernfortschritt dadurch sehr beschleunigt wurde. Natürlich musstest du dich letzlich noch genauer einarbeiten und genau das machen, was dort im Bot auch shcon gemacht wurde, aber du konntest es halt vergleichen und hattest anhaltspunkte.
Sowas hätte ich auch gerne .. =/
Wenn ich mit Python wikrlich nicht weiterkommen sollte, werd ich nochmal überlegen die Sprache zu wechseln und/oder einfach mal ein paar Beispiel Codes für einen Altcoinexchange mit euch besprechen, um das Prinzip zu verstehen.


@daboehla:
Ja diese Krakenex API hatte mir kalkulatorix schon gezeigt und ich hab die Version für Python 3 hier.

Also, fangen wir mal an, dass ich konkrete Fragen stelle, damit ich voran komme :)
Ich habe nun dieses Krakenex3.
Was muss ich nun tun, damit was passiert? Du hast ja schon das Beispiel aus dem Pack hier zitiert. Reicht es tatsächlich krakenex zu importieren so wie im Beispiel und kann dann schon direkt Dinge von Kraken abrufen und Orders erstellen? Also würde dieses Beispiel schon so funktionieren, dasss dann eine Kauforder mit den genannten daten erstellt wird?
Angenommen das funktioniert schon tatsächlich so: Wie starte ich das dann? Einfach doppelklick auf das Pythonskript des Beispiels (nachdem ich meinen API Key implementiert habe)?  Ich tippe mal das bestmögliche Ergebnis wäre, dass dann tatsächlich schon eine ORder erstellt wird.
Aber ich will ja nicht ständig ein Skript doppelklicken. Wie sorge ich also dafür, dass ständig durchgeführt wird, wie halt ein Programm? Eine Dauerschleife einbauen?
Habs jetzt tatsächlich mal ausprobiert, was passiert, wenn ichs doppelklicke... es wird jedenfalls keine Order eröffnet.. und ne Fehlermeldung bekomm ich auch nicht, weil das Fenster sich zu schnell wieder schließt :D aber das liegt wohl eher an Python selbst, da muss ich noch lernen, wie das anders geht.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 12, 2014, 11:04:37 PM
Danke für eure Kommentare Darkwinde und daboehla :)

@Darkwinde:
Ich denke schon, dass dadurch, dass du einen Bot zum analysieren hattest, dass dein Lernfortschritt dadurch sehr beschleunigt wurde. Natürlich musstest du dich letzlich noch genauer einarbeiten und genau das machen, was dort im Bot auch shcon gemacht wurde, aber du konntest es halt vergleichen und hattest anhaltspunkte.
Sowas hätte ich auch gerne .. =/
Wenn ich mit Python wikrlich nicht weiterkommen sollte, werd ich nochmal überlegen die Sprache zu wechseln und/oder einfach mal ein paar Beispiel Codes für einen Altcoinexchange mit euch besprechen, um das Prinzip zu verstehen.



Ein klares Jaein ;) was geholfen hat ist das ich schnell wusste was ich nicht will im Bot auch wenn sie eine gewisse Daseinsberechtigung haben. Und wie ich Ajax fürs Frontenend nutze. Aber beides hat mich wirklich mit dem Coden zu tun. Meine Lernkurve war wirklich durch Bugs am höchsten, da ich dadurch auch erst gewisse Dynamiken an dem Exchange verstanden habe die man durch lesen von Code nicht wirklich nachvollziehen kann. Aber jeder lernt anders, von daher sei dies dir belassen :)

Startest du das Python über Batch? Wenn Ja hau mal zum
Schluss PAUSE rein, müsste dir schon helfen.

Dauerschleife kann man so machen:


while(true)
{
Code in der Schleife
}


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on November 12, 2014, 11:26:29 PM
Ein klares Jaein ;) was geholfen hat ist das ich schnell wusste was ich nicht will im Bot auch wenn sie eine gewisse Daseinsberechtigung haben. Und wie ich Ajax fürs Frontenend nutze. Aber beides hat mich wirklich mit dem Coden zu tun. Meine Lernkurve war wirklich durch Bugs am höchsten, da ich dadurch auch erst gewisse Dynamiken an dem Exchange verstanden habe die man durch lesen von Code nicht wirklich nachvollziehen kann. Aber jeder lernt anders, von daher sei dies dir belassen :)

Startest du das Python über Batch? Wenn Ja hau mal zum
Schluss PAUSE rein, müsste dir schon helfen.

Dauerschleife kann man so machen:


while(true)
{
Code in der Schleife
}

Danke :)

Ich weiß leider nicht, was Ajax ist.. auch nicht was Batch ist. Lerne ich das noch im Pyhton Tutorial?  Im Tutorial hatte ich gelernt, dass man zum schluss "input()" schreiben kann, dann bleibt das Ausführungsfenster offen, weil er auf eine Eingabe wartet. In meinem "Hallo Welt" Testscript geht das auch, aber wenn ich direkt unter den Examplecode "input()" schreibe, oder auch in der Funktion selbst, bleibt es nicht offen, keine ahnung warum.

Ich hab schon eine 3 monatige Programmiererfahrung, mit der C4Skript-sprache (ein lustiges kleines Spiel namens "Clonk", https://clonkspot.org/  und hier die Sprache: http://www.clonk.de/docs/de/sdk/script/index.html ). Das heißt den groben Aufbau von einem Skript, mit Funktionen, Variablen und Schleifen kann ich schon (variiert in den unterschiedlichen Sprachen ja hauptsächlich nur vom Aufbau her). Nur glaube ich nicht, dass einer von euch seinen Bot so laufen hat, dass er eine dauerschleife ausführt, oder? Also möglicherweise schon, um immer wieder zu checken, wie das orderbook aussieht, aber sicher nicht, um den bot am laufen zu halten, oder?. Also wie funktioniert, also startet, beendet, läuft der Bot bei euch?

edit:
@ kalkulatorix: ist es okay, wenn ich hier weiterhin meine Fragen stelle und antworten erhalte, oder stört das zu sehr in deinem Thread und ich verlagere das iwie aus?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: botticelli on November 13, 2014, 07:15:23 PM
Hey, ich wollte eigentlich auch schon länger in diesem Thread antworten. Und da gerade jetzt Python aufkommt, bietet sich das noch umsomehr an :-)

Ich selbst habe mit einem Freund auch einen Bot geschrieben und momentan am laufen.
Wir wollten das ganze sogar professionell aufziehen, Gelder und vor allem Bitcoins anleihen, anteilig Rendite zahlen und ganz dicke reich werden ;)
(https://bitcointalk.org/index.php?topic=475021)

Es gab zwar positives Feedback, aber dann hatten wir selbst kaum Zeit um das Projekt aktiv fortzuführen und auch kamen selbst einfach nicht zu einem stichhaltigen Investitionskonzept, welches Risiko, gesetzlichen Anforderungen und unseren Gewinnerwartungen gerecht wurde.

Lange Rede kurzer Sinn: Wir haben nen Python Bot, den wir meines Erachtens ziemlich professionell aufgezogen haben. Darüber will ich gern Ideen, Entscheidungen, Erfahrungen und Eindrücke mit euch teilen.

Wir haben uns für Python entschieden, weil es eine wunderschöne Programmiersprache ist, sie ohne großen Aufwand überall zum laufen gebracht werden kann, es zig nützliche Bibliotheken gibt, und die mathematisch-statistischen Tools (NumPy, SciPy, Pandas, ...) umwerfend sind.

Zudem läuft der Bot mitlerweile in einem Rechenzentrum (zu Beginn auf nem Raspberry Pi). Unser Anbieter ist DigitalOcean, der wie ich finde ein faires Angebot an für komplette virtuelle Maschinen hat, auf denen man machen kann was man will.

Und dann haben wir uns frühzeitig für eine Modularisierung, also ein Aufsplitten des Bots in kleine unabhängige Programmteile entschieden, die momentan sogar auf verschiedenen Servern laufen. Da sind einerseits die Crawler (momentan mehrere Programme auf zwei Servern) die im Sekundentakt, parallel die Orderbücher der Börsen abfragen. Deren Ergebnisse werden dann in eine Redis-Datenbank geschoben.
Und ein zweiter Server bietet einen vereinigten Datenstrom aller Orderbücher aller Börsen an, der kontinuierlich aus der Datenbank erstellt wird.
Dieser "Datenstrom" ist im Grunde eine einzige Datei/Webseite/Text-file, der jede Sekunde um eine Zeile länger wird.

So ist es erstens möglich ganz einfach einen Crawler für eine neue Börse hinzuzufügen, einen abzuschalten, einen weiteren auf einem anderen Server mit neuer IP zu starten usw...
Gleichzeitig können dann mehrere Bots unseren vereinigten Datenstrom abfragen, ohne dass jeder einzeln die Börsen abfragen muss.

Der eigentliche Bot läuft dann auf einem anderen Server, damit er mit seiner eigenen IP nicht durch eine Rate-Limitierung seitens der Crawler konkurrieren muss.
Dieser Bot ruft dann einmalig unseren Datenstromserver auf und sobald eine neue Zeile mit neuen Informationen eingetroffen ist, rechnet er los und setzt eventuell einen Trade ab, dann wartet er auf die nächste Zeile.

Darüber hinaus gibt es noch einen weiteren Server, auf dem ein Programm nichts weiter macht als den Datenstrom ebenfalls aufzurufen und auf die Festplatte zu speichern.
So loggen wir kontinuierlich die Orderbücher all unserer Börsen mit. (Hier mussten wir einiges an Hirnschmalz in die Komprimierung stecken und verwenden letztendlich einen Kompressor namens blosc. Andernfalls sind die Daten schnell im mehrstelligen Gigabyte Bereich)
Das ist nicht nur nützlich für ein paar Backtests und das Ausprobieren neuer Strategien sondern essentiell für den Bot!
Ein großteil der Strategien basiert auf der Vergangenheit des Kurses. Und wenn man den Bot mal neustartet dann muss der irgendwoher die Vergangenheit kriegen. Dafür kann er dann von dem Logging-Server die Informationen abfragen, die er gern möchte.

Momentan werden bei einem Neustart des Bots die letzten 24h vom Logging-Server geladen und diese dem Bot einfach vorgespielt, als kämen sie vom echten Server, zeile für Zeile, aber natürlich nicht im Sekundentakt, sondern so schnell er es abarbeiten kann. Dabei ist dann das Trading selbst deaktiviert. Er durchlebt aber quasi nochmal die letzten 24h, kann seine Statistiken und Trends aufbauen und dann geht es ab in den Live-Modus.

Und schlussendlich sendet der Bot immer wenn er gehandelt hat, diesen Trade an eine Datenbank, die wir mit einer kleinen Webseite dann visualisieren. Wir können uns also sowas wie einen Report anschauen, wann er was getradet hat, was die aktuellen Funds auf den Börsen sind und wie der Profit ist. Zu einer Erstellung von schicky-micky Grafiken fehlte aber bisher die Zeit ;)

Die Anbindung an die Börsen haben wir soweit komplett selbst übernommen - keine Dritt-Bibliotheken.

Am Ende macht der Bot bezogen auf die investierte Menge einen ordentlichen Gewinn, aber absolut gesehen steht das bisher in keinem Verhältnis zum Arbeitsaufwand :D
Leider sind die Server-kosten momentan auch beachtlich, sodass der absolute Gewinn weiter schrumpft.
Und leider, leider benötigt unsere Strategie immer auch einen Teil in Bitcoins, wobei wir diese im Februar, März und April erworben haben. Da darf man nicht auf den Kurs gucken :D Aber wenns wieder hoch geht... yay ! ;)

Soweit von mir
 - botticelli



Title: Re: Tagebuch eines Bot Entwicklers
Post by: botticelli on November 13, 2014, 07:30:16 PM
@Serpens66

Kennst du Quantopian (https://www.quantopian.com/home)? Ich selbst hatte nie die Zeit, wirklich reinzugucken.
Aber es scheint mir eine Plattform für das Erstellen von Handelsstrategien zu sein. Also im Grunde definierst du deine Idee (meines Erachtens in Python) und die lassen dann alles laufen in ner Art "Bot-Framework" mit allem drum und dran.

Ähnliches Angebot scheint mir TradeWave (https://tradewave.net/)

Allerdings habe ich keinen Schimmer, wie vertrauenswürdig das ganze wiederum ist.
Ab und zu gabs immer mal wieder Nachrichten drüber... aber wer weiß ;)

Aber Vorsicht hin oder her - vielleicht ist es genau was für dich? Du hast Lust deine eigenen Strategien zu programmieren - vornehmlich Python - der ganze Bot-Kram drumherum ist dir aber zu aufwändig ...

beste Grüße
  botticelli



Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 16, 2014, 10:54:21 AM
habe noch über 4 Wochen meine Coins von Cryptsy wieder. 90% abgezogen jetzt liegen da nur noch Gammelcoins im Wert von 5€ für meine Bot Tests rum.

Habe aktuell einige Stabilisierungsmaßnahmen implementiert und scheinen den API Calls auch gut zu tun. Kleinere AUsgabefehler auch noch behoben aber nichts dramatisches. Habe halt momentan wenig Zeit zum Basten.

Aber echt cool, dass sich jetzt mehr Bot Entwickler hier herumtreiben :) willkommen an alle


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 17, 2014, 10:38:10 AM
Kaum schaue ich einige Tage nicht ins Forum, schon kommen neue, wertvolle Beiträge! Vielen Dank dafür. Auf den ersten Blick sieht das Tradewave sehr vielversprechend aus. Ich hatte leider keine Zeit, Tradewave auszuprobieren, ich kann aber aufgrund meiner Erfahrungen sagen, daß das Backtesting eine sehr aufwändige Arbeit ist, einerseits mußt Du dafür passende historische Kursreihen organisieren, und dann die Strategie ein zweites Mal programmieren, damit sie mit den historischen Daten umgehen kann. Wenn man bei Tradewave wirklich mit Backtesting solange an den Parametern feilen kann, bis eine profitable Strategie herauskommt, und dann einfach die Stragegie gegen geringe Monatsgebühr "live" schalten kann, verringert das den Entwicklungsaufwand zumindest um den Faktor 3.

Und jetzt der Status von meinem Projekt. Ich wollte ja zumindest 2 meiner Bots, die 3Ecks Arbitrage und Interexchange Arbitrage, in einem multithreaded PHP Script zusammenführen. Im Hauptthread sind die Strategien implementiert, und für jede Exchange gibt es einen asynchronen Thread, der die Daten abfragt und für den Hauptthread speichert.

Leider hat sich das PHP als unpassend dafür herausgestellt. In der pthread - Erweiterung von PHP bekommt jeder Thread eine eigene Kopie sämtlicher Daten, der Hauptthread würde in diesem Modell nicht sehen, was der Exchangethread von der Börse liest.

Wenn ich versuche, die pthread - Erweiterung zu überlisten, sodaß sie nicht mehr Kopien auf die eigentlichen Daten bekommen, sondern nur mehr Kopien der Referenzen auf die Daten, kommen die Daten vom Exchangethread in den Hauptthread. Aber spätestens wenn der Bot beendet wird, kommt es zum unvermeidlichen Crash: PHP versucht dann, die Daten vom Hauptthread mehrfach freizugeben, 1 Mal vom Hauptthread, und jeder Exchangetread einzeln zusätzlich, was zu einen Totalabsturz des PHP führt, den kann man nicht einmal mehr mit einer Ausnahmebehandlung abfangen.

Fazit: PHP kann zwar Multithreading, aber nicht so, daß ein vernünftiger Austausch von Daten zwischen den einzelnen Threads funktioniert. Viel mehr als ein Massenemail, oder das Ergebnis einer einmaligen langen Datenbankabfrage würde ich unter PHP nicht ein einen Thread legen.

Jetzt habe ich die letzte Woche dafür verwendet, die Bots auf C# umzuschreiben. Mit dieser Programmiersprache ist ein Multithreading, wie ich es mir vorstelle, sicher möglich. Zum Glück habe ich eine einfache Implementation eines APIs in C# gefunden. Ein Glück ist auch, daß die Syntax von PHP und C# ähnlich ist, kann einfach durch Textersetzungen umgewandelt werden, aber trotzem wirft mich dieser Systemumstieg 2 Wochen zurück.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: daybyter on November 17, 2014, 06:33:41 PM
Ach, hättest Du doch was gesagt! Ich hab doch den meisten Kram schon in Java am Laufen! Das wär doch ne Kleinigkeit gewesen, Dir zu helfen...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 17, 2014, 11:48:20 PM
Ach, hättest Du doch was gesagt! Ich hab doch den meisten Kram schon in Java am Laufen! Das wär doch ne Kleinigkeit gewesen, Dir zu helfen...
Kein Problem. Ist ein toller Synergieeffekt. Muss auch für die Arbeit C# lernen, jede Stunde die ich in den Bot in C# investiere, zählt somit doppelt. Beobachte jetzt schon eine Stunde, wie schön die Threads ineinandergreifen! Das Traden habe ich noch deaktiviert, da braucht es noch einige Tage Testläufe.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 23, 2014, 01:48:01 PM
API Stabilität steht momentan bei mir im Hauptfokus. Ich entdecke immer wieder kleine Eigenheiten der Börsen die das Fehlerhandling immer wieder auf die Probe stellen. Der Bot selber hat keine Abstürze aber wenn es natürlich in einer Schleife endet ohne Exit Strategie ist das natürlich doof. Aber sind zum Glück selten geworden :)

Antizyklus Einheit ist auch voll am werkeln. Nach der letzten Woche wo nahezu alle Coins verloren haben geht es nun bergauf und direkt auf den Ausgangszustand zu.

Arbitrage rödelt vor sich hin, wobei ich mir selber ein Bein gestellt habe als ich nicht über den Bot habe traden lassen sondern eine manuelle Order stehen und vergessen hatte. Jetzt hat zwar der Bot erkannt dass ich mit mir selber traden wollte, hat aber vergessen nicht zu traden. Naja und die dauerschleife war geboren ;) ansonsten konstantes Einkommen von 1% des Invest pro Tag. Bot traden jetzt an 4 Exchanges Parallel was auch nette Race Conditions verursacht hat aber auch die sind nun aufgelöst.


Geduld ist alles ;) mittlerweile Schaue ich nur noch 1x am Tag noch ob was passiert ist.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 24, 2014, 02:27:53 PM
API Stabilität steht momentan bei mir im Hauptfokus. Ich entdecke immer wieder kleine Eigenheiten der Börsen die das Fehlerhandling immer wieder auf die Probe stellen.
Was mir dabei immer wieder Probleme macht: ( aber nicht bei allen Börsen ) Die Rundung im Betrag. Die Beträge rechnet der Bot ja selbst, und bei manchen Börse ergibt das einen Fehler, wenn der Betrag zu viele Nachkommastellen hat, andere Börsen runden wieder automatisch. Damit ich das Problem umgehe habe ich die Anzahl der Kommastellen als Eigenschaft vom Markt definiert, und runde die Beträge, bevor ich sie an die Börse sende. Das braucht etwas an Wartungsaufwand, und immer wieder Kontrolle, falls die Börse die Kommastellen ändert.

Mit den Preisen habe ich keine Probleme, die kommen vom Orderbuch, und haben deswegen nie zu viele Kommastellen.

Ansonsten gibt es ein paar mal am Tag Internetausfälle. Wenn die geforderten Daten nicht kommen, werden die im Bot gespeicherten Daten gelöscht, damit nicht mit veralteten Informationen gehandelt wird. Manche Börsen zicken noch mit dem nonce herum. BTC-e ist da lustig, diese Börse sendet bei falschem nonce jenen, welchen sich die Börse erwartet. Da mit dem nonce ist immer dann ein Problem, wenn 2 Bots mit demselben Key / Secret aktiv sind, da hole ich einfach einen zweiten Key ( bei BTer geht das nicht, da kann immer nur einer aktiv sein, als Ausgleich nehmen sie es dort mit dem nonce nicht so genau..... )

Die Dreicksarbitrage ist mittlerweile vollständig in C# implementiert.

Als Nächstes programmiere ich Auswertungen, einmal je Börse und einmal gesamt über alle angebundenen Exchanges hinweg. Bei BTer war die Dreiecksarbitrage am Wochenende irrsinnig aktiv, da habe ich komplett die Übersicht verloren. Im Doge/Btc Markt waren gravierende Differenzen zwischen BTer und Cex, dafür hätte ich zwar noch den PHP Bot gehabt, habe ihn aber nicht gestartet wegen mangelnder Orientierung, wo meine Coins gerade sind.  ???

@Darkwinde: Wobei hast Du ein Stabilitätsproblem?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 24, 2014, 02:39:02 PM
API Stabilität steht momentan bei mir im Hauptfokus. Ich entdecke immer wieder kleine Eigenheiten der Börsen die das Fehlerhandling immer wieder auf die Probe stellen.
Was mir dabei immer wieder Probleme macht: ( aber nicht bei allen Börsen ) Die Rundung im Betrag. Die Beträge rechnet der Bot ja selbst, und bei manchen Börse ergibt das einen Fehler, wenn der Betrag zu viele Nachkommastellen hat, andere Börsen runden wieder automatisch. Damit ich das Problem umgehe habe ich die Anzahl der Kommastellen als Eigenschaft vom Markt definiert, und runde die Beträge, bevor ich sie an die Börse sende. Das braucht etwas an Wartungsaufwand, und immer wieder Kontrolle, falls die Börse die Kommastellen ändert.


Ich bin da sehr gnadenlos :) Coins haben 8 Nachkommsstellen. Nicht mehr nicht weniger und damit rechne ich bzw. sende es auch so an die Börsen :) das scheint zumindest den Exchanges nicht ungelegen zu kommen.


@Darkwinde: Wobei hast Du ein Stabilitätsproblem?

BTer scheint mir immer mal wieder falsche oder keine OrderID's zu übergeben was ich zwar abfange aber irgendwo doch schlupflöcher sind. Im schlimmsten fall hatte ich es sogar mal das die API so eine Latenz hatte, dass er die Order Akzeptiert hatte, beid er Börse angelegt wurde aber erst nach 1 Minute via API der Status abrufbar war. Da wurder der Bot natürlich zu recht ungemütlich, hat meien Datenbank bereinigt um kurze Zeit später eien "Lost Buy Order" wieder zu finden mit gleicher ID.... GRRRRRRRRRRRRRRRRRRRR


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 24, 2014, 04:24:55 PM
@Darkwinde: Wobei hast Du ein Stabilitätsproblem?

BTer scheint mir immer mal wieder falsche oder keine OrderID's zu übergeben was ich zwar abfange aber irgendwo doch schlupflöcher sind. Im schlimmsten fall hatte ich es sogar mal das die API so eine Latenz hatte, dass er die Order Akzeptiert hatte, beid er Börse angelegt wurde aber erst nach 1 Minute via API der Status abrufbar war. Da wurder der Bot natürlich zu recht ungemütlich, hat meien Datenbank bereinigt um kurze Zeit später eien "Lost Buy Order" wieder zu finden mit gleicher ID.... GRRRRRRRRRRRRRRRRRRRR
Nur eine Idee, da ich keine Rückmeldungen verarbeite ( aber doch die Fehler mitlogge ), kann da vielleicht ein Überlauf vorliegen? Bei manchen Exchanges sind die OrderIDs schon sehr hoch, die passen in keinen int32 mehr, da braucht es schon 64 bit. Wenn die Order ID über 2.147.483.647 liegt, passt das nicht mehr in einen 32 bit langen integer. PHP hat zwar kein strenges Typkonzept, aber irgendwie muss das PHP dann ja doch rechnen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 24, 2014, 04:30:18 PM
@Darkwinde: Wobei hast Du ein Stabilitätsproblem?

BTer scheint mir immer mal wieder falsche oder keine OrderID's zu übergeben was ich zwar abfange aber irgendwo doch schlupflöcher sind. Im schlimmsten fall hatte ich es sogar mal das die API so eine Latenz hatte, dass er die Order Akzeptiert hatte, beid er Börse angelegt wurde aber erst nach 1 Minute via API der Status abrufbar war. Da wurder der Bot natürlich zu recht ungemütlich, hat meien Datenbank bereinigt um kurze Zeit später eien "Lost Buy Order" wieder zu finden mit gleicher ID.... GRRRRRRRRRRRRRRRRRRRR
Nur eine Idee, da ich keine Rückmeldungen verarbeite ( aber doch die Fehler mitlogge ), kann da vielleicht ein Überlauf vorliegen? Bei manchen Exchanges sind die OrderIDs schon sehr hoch, die passen in keinen int32 mehr, da braucht es schon 64 bit. Wenn die Order ID über 2.147.483.647 liegt, passt das nicht mehr in einen 32 bit langen integer. PHP hat zwar kein strenges Typkonzept, aber irgendwie muss das PHP dann ja doch rechnen.

Orderid: 2.843.917 ;) da ist noch Luft :D außerdem geht das direkt in ein String über.
Bekomme dann auch mal sowas 2599382 was weit unter dem aktuellen Bereich liegt.
Keine Ahnung was da schief läuft, ich logge jetzt erstmal jeden scheiß mit...ist halt müßig da es nicht immer passiert, aber extrem häufig seit den Wartungsarbeiten am Wochenende


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 24, 2014, 07:09:09 PM
Das kann jetzt mittlerweile echt nurnoch ein API Server Überlast Szenario sein. So unregelmäßig und an unterschiedlichen Stellen das kommt. Und wenn ich noch weitere identische Calls nur mit nem Delay absetze werden diese mit gleicher OrderID korrekt beantwortet.

Ich schreibe später mal ein Script das permanent kauft, Status abfragt und Cancelt um das nachzuweisen. Bekommen die BTer Jungs ein nettes Ticket von mir ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 25, 2014, 12:17:57 AM
Das kann jetzt mittlerweile echt nurnoch ein API Server Überlast Szenario sein. So unregelmäßig und an unterschiedlichen Stellen das kommt. Und wenn ich noch weitere identische Calls nur mit nem Delay absetze werden diese mit gleicher OrderID korrekt beantwortet.

Ich schreibe später mal ein Script das permanent kauft, Status abfragt und Cancelt um das nachzuweisen. Bekommen die BTer Jungs ein nettes Ticket von mir ;)
Von mir bekommen die von Bter auch ein Ticket. Vor allem der BTC/CNY Markt ist dort zeitweise vermurkst. Zeitweise ein falsches Orderbuch, bis zu 5% daneben. Zwar in sich konsistent ( bid kleiner als ask , Sortierung ist ebenfalls OK, also keine Möglichkeit den Fehler durch triviale Checks zu erkennen), bleibt ein paar Sekunden so falsch, und nach einigen Sekunden ist der Spuk vorbei.

Kann mir vorerst helfen, indem ich Arbitragen von mehr als 1% Gewinn ignoriere. Kommt mir so vor, als ob ein Orderbuch angezeigt wird, das einige Stunden alt ist.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 25, 2014, 09:57:26 AM
Das kann jetzt mittlerweile echt nurnoch ein API Server Überlast Szenario sein. So unregelmäßig und an unterschiedlichen Stellen das kommt. Und wenn ich noch weitere identische Calls nur mit nem Delay absetze werden diese mit gleicher OrderID korrekt beantwortet.

Ich schreibe später mal ein Script das permanent kauft, Status abfragt und Cancelt um das nachzuweisen. Bekommen die BTer Jungs ein nettes Ticket von mir ;)
Von mir bekommen die von Bter auch ein Ticket. Vor allem der BTC/CNY Markt ist dort zeitweise vermurkst. Zeitweise ein falsches Orderbuch, bis zu 5% daneben. Zwar in sich konsistent ( bid kleiner als ask , Sortierung ist ebenfalls OK, also keine Möglichkeit den Fehler durch triviale Checks zu erkennen), bleibt ein paar Sekunden so falsch, und nach einigen Sekunden ist der Spuk vorbei.

Kann mir vorerst helfen, indem ich Arbitragen von mehr als 1% Gewinn ignoriere. Kommt mir so vor, als ob ein Orderbuch angezeigt wird, das einige Stunden alt ist.

Scheint wohl irgendein Caching und/oder Publizierungsproblem auf Seiten von BTer zu sein, dass mir wirklich in die Suppe spuckt... Vielleicht kann/mag jemand das verifizieren.

Abblauf:
1) Setzte eine Order in einen beliebigen Markt
2) Hol dir den Status der Order via "private/getorder" API
3) Cancel die Order


Ergebnis:
1) Wenn man innerhalb der ersten 10 Sekunden nach Erstellung der Order den Status abrufen möchte, bekommt man ein API Response Error "Invalid Order ID".
Nach den 10 Sekunden ist die Order ID auf einmal bekannt und kann abgefragt werden.
2) Wenn man nicht innerhalb der ersten Minute nach der Erstellung der Order wieder den Status abfragt, "vergisst" die API ebenfalls wieder diese Order ID und bei der dann gestellten Anfrage bekommt man erstmalig wieder ein Invalid Order ID zurück.
3) Man kann den Umstand jetzt auf mehreren Ebenen begegnen. Ich habe mich für die Variante entschieden, dass nach einer Order nach 15 Sekunden ein Pseudo-Call abgesetzt wird, um den Cache  für weitere Abfragen vorzubereiten.


Die Frage die sich natürlich daraus ergibt, wenn die Latenz bereits beim einstellen einer Order so massiv ist, wie wird es dann wohl bei anderen Schnittstellen sein... :(




Wer es testen mag, einfach den API Key ($apiKey) und Secret ($apiSecret) von eurem Account verwenden und mit dem auskommentierten sleep Timer experimentieren.

Code:
<?php
date_default_timezone_set
('Europe/Berlin');

while(
true)
{

$pair "WDC_BTC";
$buyrice 0.00001000;
$buyAmount 50;
logging("/////////////////////////////");
logging("BUY ORDER");
$buyOrderID buyOrder($pair$buyrice$buyAmount);
var_dump($buyOrderID);
        
// Change this parameter to find the sweet spot of the API response / caching time
//sleep(15);

logging("/////////////////////////////");
logging("INFO ORDER");
$info statusOrder($buyOrderID["order_id"]);
var_dump($info);

logging("/////////////////////////////");
logging("CANCEL ORDER");
$cancel cancelOrder($buyOrderID["order_id"]);
var_dump($cancel);

logging("/////////////////////////////");
logging("FINISHED");
logging("/////////////////////////////");
sleep(20);


}









//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function query($path, array $req = array()) 
{
$api_url "https://bter.com/api/1/";
$apiKey "";
$apiSecret "";



// Prevent API from overload
usleep(300000);

// generate a nonce to avoid problems with 32bits systems
$mt explode(' 'microtime());
$req['nonce'] = $mt[1].substr($mt[0], 26);
 
// generate the POST data string
$post_data http_build_query($req'''&');
$sign hash_hmac('sha512'$post_data$apiSecret);
 
// generate the extra headers
$headers = array(
'KEY: ' $apiKey,
'SIGN: ' $sign,
);

//!!! please set Content-Type to application/x-www-form-urlencoded if it's not the default value

// curl handle (initialize if required)
static $ch null;
if (is_null($ch)) {
$ch curl_init();
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_USERAGENT
'Mozilla/4.0 (compatible; Bter PHP bot; '.php_uname('a').'; PHP/'.phpversion().')'
);
}
curl_setopt($chCURLOPT_URL$api_url $path);
curl_setopt($chCURLOPT_POSTFIELDS$post_data);
curl_setopt($chCURLOPT_HTTPHEADER$headers);
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);

// run the query
// run the query
$error null;
for ($i 0$i 5$i++) 
{
try 
{
$res curl_exec($ch);
}
catch (Exception $ex
{
$error "[BTER] Private API CALL error: " print_r($ex->getMessage(), true);
logging($errortrue);
sleep(1);
continue;
}

if ($res === false
{
$error "[BTER] Could not get reply: " curl_error($ch);
logging($error);
continue;
}


$dec json_decode($restrue);
//Debugging only
// var_dump($dec);

if (!$dec || $dec["result"] != "true" || (key_exists("msg"$dec) && $dec["msg"] != "Success"))
{
$error "[BTER] Private API RESPONSE error: " print_r($dectrue);
$info " Method: " print_r($pathtrue) . " / Parameter: " print_r($reqtrue);
logging($error "\n" $infotrue);
sleep(5);
continue;
}
else
return $dec;
}
}




function 
buyOrder($pair$buyrice$buyAmount)
{
return query('private/placeorder', array
(
'pair' => strtolower($pair),
'type' => 'buy',
'rate' => $buyrice,
'amount' => $buyAmount
)
);
}



function 
cancelOrder($orderID
{
return query('private/cancelorder', array('order_id' => $orderID));
}



function 
statusOrder($orderID
{
return query('private/getorder', array('order_id' => $orderID));
}



function 
logging($message
{
echo date("H:i:s") . ": " $message "\n";
}


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on November 25, 2014, 11:28:18 AM
Den Test mach ich gerne, kann aber erst spät am Abend.

Für mein derzeitiges Problem brauchst Du nur den BTC/CNY Markt auf BTer nur 10 Minuten anschauen, alle 30 Sekunden die Seite manuell refreshen, da ist dann sicher mehrmals das Orderbuch total falsch. Zur Zeit ist der Kurs dort 2406/2412, wenn der Fehler auftritt springt der Kurs auf 2300/2312. Selbstverständich matchen sich die Orders nicht, die Du im Fehlerfall in den Markt stellst.

Habe mich erst gefreut, dass der Bot so gute Arbitragen von mehreren % gefunden hat (normal ist bei einer Dreiecksarbitrage ein Gewinn im Promille - Bereich). Jetzt hat der Bot alle meine BTCs auf BTer mit Kauforders zum Preis von rund 2200 CNY blockert, und der Markt bewegt sich in die falsche Richtung... Nicht sehr ermutigend, da steckt man Zeit und Geld in so ein Projekt, und ein so ein Fehler eines Dritten macht einem alles kaputt.  :'( :'( :'( :'( :'(


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 25, 2014, 11:42:35 AM
Bin ganz bei dir....
Cryptsy hat heute wieder 50 SAT2 von meinem Account abgezogen ^^ obwohl sie ja hoch und heilig versprochen haben der Bug sei gelöst. MUAHAHAHA mir hupe da dort eh nur Coins und BTC zum Testen im Wert von 0,01 BTC liegen. Die werde ich jetzta uch noch abziehen ;) Schade drum, Cryptsy scheint wirklich langsam Richtung Gox zu maschieren...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on November 25, 2014, 05:32:16 PM
Also das "Pseudo Pollen" der API Schnittstelle scheint wirklich das einigermaßen zu tun. Seit 24 Stunden keine "Beschwerden" mehr. Testscript werde ich später nochmal dediziert laufen lassen und dann ein Ticket bei BTer eröffnen :) Erstversorgung meines Beta Testers war erstmal wichtiger als den Support zu nerven ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 03, 2014, 12:05:24 AM
Also das "Pseudo Pollen" der API Schnittstelle scheint wirklich das einigermaßen zu tun. Seit 24 Stunden keine "Beschwerden" mehr. Testscript werde ich später nochmal dediziert laufen lassen und dann ein Ticket bei BTer eröffnen :) Erstversorgung meines Beta Testers war erstmal wichtiger als den Support zu nerven ;)

Bin bisher nicht mehr zum Testen gekommen  :o ob es wohl daran liegt, dass jetzt wohl alles unauffällig läuft  ::)
Das Pseudo Pollen hat bei mir wirklich viel bewirkt, wer also auch bei BTer ähnliches sieht kann gerne meinen Workaround frei nutzen!

Ansonsten gibt es nicht viel Neues. Wie immer hält mich die Arbeit auf Trap und komme kaum zum Coden. Aktuell fixe ich nur die Bugs die mir mein Beta-Tester meldet und da ist der letzte auch schon bald 2 Wochen wieder her ;) sprich ich muss mir mal wieder ein neues Ziel/Idee setzen um bis 4 Uhr nahcts zu Coden und mit Augenringen in die Firma zu torkeln :D
Also her mit euren Ideen *FG*

Wie läuft es bei euch anderen so?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on December 03, 2014, 11:02:00 PM
Wie läuft es bei euch anderen so?

Wie bei Dir, viel zu wenig Zeit für die wirklich wichtigen Dinge.  ;D

Habe Deinen Ordertest angeschaut, bei mir ist das nötige Sleep  - Delay sehr variabel, aber spätestens nach 300ms sehe ich sie. 20ms braucht es aber immer.
Ich würde das Pollen mit ansteigenden Delays machen, sonst kommt BTer noch auf die Idee, dass eine DDoS Attake versucht wird, und setzt Deine IP auf eine Blacklist.
Also nach dem BuyOrder erst einmal fix eingestellt  warten, vielleicht so 40ms, und wenn dann nichts kommt wiederholt abfragen, in Fibonacci Abständen, als z.B. Sleeps von 10,10,20,30,50,80,..... zwischen den Polls einbauen.

Musste aus gegebenen Anlass eine Sicherheit einbauen, vor 2 Wochen war das Orderbuch auf BTer zeitweise falsch, habe einen Gegencheck mit dem Ticker programmiert, das Orderbuch darf nur um die doppelte Spanne des Tickers abweichen, andernfalls nimmt der Bot ein Problem mit dem Orderbuch an.

Seitdem ich das eingebaut habe, sind die Orderbuch Probleme von BTer nicht mehr aufgetreten. Ich frage den Ticker immer nur alle 15 Minuten ab, oder wenn das Orderbuch vom Ticker abweicht, dadurch verbraucht der Ticker nicht so viele API-Calls. Auch wenn ich den Check mit den Ticker aktuell nicht mehr brauche, bin ich doch über diese zusätzliche Sicherheit froh.

Im Moment arbeite ich an einem HTML-Export, möchte die wichtigsten Daten des Bots am Webspace ablegen, damit ich den Bot auch einfach von unterwegs kontrollieren kann.




Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 06, 2014, 07:19:57 PM
Webinterface hab ich nebenher immer mitgezogen, da ich sonst immer wie wild in der DB rumeiern müsste. Nach dem 5 Mal nervt die Performance einfach über VPN in einen 16er DSL Endpunkt mit MySQL auf nem Raspberry PI ;). Dem Bot reicht es, dem User nicht ;)

Ich habe eh ein kleines Delay eingebaut als DDOS Protection aber dennoch komm ich ohne direkte Abfrage nach einer Order nicht zu einem konstanten Ergebnis. Solange es läuft lass ich erstmal so wie es ist.

Was mich mehr stört ist aktuell das ich für Webinterface 3 Sprachen verwende... Java Script, HTML und PHP. Werde das aber nicht änder können wenn ich nicht eine gleichwertige freie Plotting Engine für PHP finde :/


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on December 06, 2014, 08:16:28 PM
Plotting Engine? Mit so was darf ich gar nicht beginnen, sonst verbrauche ich zu viel Zeit mit Details. Ich möchte mir nur eine Info - Seite basteln, damit ich auf einen Blick sehen kann, was gerade los ist. Habe keinen Zugriff von außen auf den Bot geplant, ich kann ihm nur die Funds durch Orders mit Mondpreisen blockieren.

Das Problem mit veralteten Daten ist auf jeder Exchange, CEX.IO ist da am schnellsten. Ich mache immer 10 Sekunden Pause nach dem versenden von Orders, da ich alle Orders aus einer Arbitrage gleichzeitig sende, kann ich dem Bot die Pause gönnen.





Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 07, 2014, 03:56:25 AM
Plotting Engine? Mit so was darf ich gar nicht beginnen, sonst verbrauche ich zu viel Zeit mit Details. Ich möchte mir nur eine Info - Seite basteln, damit ich auf einen Blick sehen kann, was gerade los ist. Habe keinen Zugriff von außen auf den Bot geplant, ich kann ihm nur die Funds durch Orders mit Mondpreisen blockieren.

Das Problem mit veralteten Daten ist auf jeder Exchange, CEX.IO ist da am schnellsten. Ich mache immer 10 Sekunden Pause nach dem versenden von Orders, da ich alle Orders aus einer Arbitrage gleichzeitig sende, kann ich dem Bot die Pause gönnen.


Auch du wirst noch dem SchiSchi verfallen junger Padawan :)
http://www.flotcharts.org/

Webinterface hat bei mir nur anzeigende Funktion, keine verändernde/eingreifende. Wäre mir auch einfach zu heikel den Bot einfach noch weiteren Einflüssen auszusetzen. Das Chaos der Exchanges reicht mir schon ;)

Veraltet sind die Daten ja bei BTer nicht, nur werden sie nicht sauber ausgeliefert. Bekomme jetzt sogar statt einer Fehlermeldung oder keiner Antwort ein TRUE zurück wenn ich von der API wissen möchte wie der Status meiner Order ist. Da soll mir noch einer sagen, dass die Kollegen dort wissen was sie tun ;) Aber auch das werde ich noch behandeln und in eine saubere Meldung überführen. Die tatsache das da ein True zurück gibt ignoriert der Bot eh. Frei nach dem Motto: Das Schema was du mir anbietest ist nicht das was ich erwarte...also troll dich...ich frage gleich nochmal ;)



Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on December 08, 2014, 12:11:56 PM
Veraltet sind die Daten ja bei BTer nicht, nur werden sie nicht sauber ausgeliefert. Bekomme jetzt sogar statt einer Fehlermeldung oder keiner Antwort ein TRUE zurück wenn ich von der API wissen möchte wie der Status meiner Order ist. Da soll mir noch einer sagen, dass die Kollegen dort wissen was sie tun ;) Aber auch das werde ich noch behandeln und in eine saubere Meldung überführen.

Jetzt wird mir Einiges klar. Ich musste wegen der unpassenden Multithreads Implementation im PHP auf C# umsteigen. C# ist stark typisiert, deswegen funktioniert das json_encode/json_decode im C# anders, da muss für jede Response eine Klasse definiert werden, und die Response von der Exchange wird dann mit einem JavaScriptSerializer in das C# Konstrukt geschrieben. Wenn in der Klasse etwas ist, was nicht in der Response ist, gibt es eine Exception. Die Response darf allerdings auch nicht benötigte Informationen enthalten.

Und ich habe sehr viele Exceptions, die ich mir bislang nicht erklären konnte, werde einmal aus Neugierde nachschauen, ob der Grund für die Exceptions unvollständige Responses sind. Habe das etwas unsauber gelöst, ein Exceptionhandler für Alles, da die Behandlung der Exceptions gleich ist: Response wird ignoriert, und beim Nächsten Mal klappt es hoffentlich.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on December 08, 2014, 08:51:04 PM
Veraltet sind die Daten ja bei BTer nicht, nur werden sie nicht sauber ausgeliefert.

jetzt habe ich auch so ein Beispiel für eine vermurkste Order Response von BTer gefunden:

{"id":"83334352","oid":"5771520","sell_type":"USD","buy_type":"LTC","sell_amount":"0.00000001","buy_amount":"0","pair":"ltc_usd","type":"buy","rate":false,"amount":"0.00000001","initial_rate":3.4877,"initial_amount":"0.0417","status":"open"},

Habe lange gesucht, habe leider viele offene Order im BTer.

Mit dem Text der Exception war das aber nicht so schwer:

ERROR in Open Orders:    Connection:bter    Error:Exception:False ist kein gültiger Wert für Double.

Als Strafe für diesen Fehler musste BTer heute 4700 Open Order Abfragen für mich beantworten.  ;D


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 08, 2014, 11:31:34 PM
Jaja und ich bin paranoid und sehe überall Rose Exceptions ;) :)


Jetzt ist natürlich spannend warum er dir was meldet und mir nicht. Hmmmm muss mal mein Handler prüfen.
Danke für den Hinweis!

Ansonsten war das Wochenende so ruhig, dass keine Trades stattgefunden haben.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on December 09, 2014, 01:13:25 AM
Jaja und ich bin paranoid und sehe überall Rose Exceptions ;) :)


Jetzt ist natürlich spannend warum er dir was meldet und mir nicht. Hmmmm muss mal mein Handler prüfen.
Danke für den Hinweis!

Ansonsten war das Wochenende so ruhig, dass keine Trades stattgefunden haben.
Nicht falsch verstehen. Mir hat BTer seit Samstag Nacht bei der Open Order Abfrage ( Liste aller offenen Orders ) bei einer Order, die bis auf 0.00000001 gematched wurde, unter rate statt einer Zahl "false" gemeldet. Das ist für C#  ein großes Problem, wegen der starken Typisierung. Mit PHP würde das erst gar keinen Fehler entstehen, nur wenn man versucht weiterzurechnen, kommt ein unerwartetes Ergebnis raus. Die Order Status Abfrage, die Dir Probleme macht, verwende ich gar nicht.

Wenn die es aber schaffen, aus einer Zahl "false" zu machen, dann ist nicht auszuschließen, dass irgendwo im API nicht noch ein Fehler steckt. Habe aber keine Lust und Zeit, ein Support Ticket zu machen, auf das letzte ist auch nur eine automatische Antwort bekommen. Habe die fehlerhafte Restorder storniert, und der Fehler war weg.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 09, 2014, 10:01:11 AM
Ja Ironie funktioniert nicht in Foren trotz Smilies ;) wollte dich nur Ägern :) :) :) habs schon richtig verstanden.

Ich hab momentan absolut keine Zeit und Muße die komischen API Verhaltensweisen imemr wieder auszubügeln ;) aber hey dann hätte ich auch nicht mit dem Projekt anfangen dürfen, hehehe


C#... lang lang ist es her. Genau die Typensicherheit bin ich aktuell froh bei Perl und PHP nicht zu haben um einfach Problemen von unsauberen Daten aus den Weg zu gehen. Die Freiheit die ich mir damit erkaufe, stecke ich natürlich wieder ins Fehlerhandling.


Das was der Bot am Wochenende nicht gemacht hat, wurde heute Nacht machgeholt, binnen 1 Stunden mal den Gewinn von einem tag eingeholt.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on December 18, 2014, 04:32:52 PM
weiß einer von euch, wie die Asset Pairs von Kraken.com heißen?  Ich will lediglich die besten bids/asks vom Ticker abrufen, aber ich scheitere bei den pair names, die ich bei der Anfrage mitschicken muss.

Für €/BTC und $/BTC klappt  "XXBTZEUR" bzw. "XXBTZUSD" .

Aber wie sieht das z.b für LTC/BTC aus?  Habs jetzt mit XLTCZXBT , XLTCXXBT und ZLTCXXBT versucht, aber immer kommt die Meldung "unknown asset pair" =/

In der API Doku finde ich grad leider auch keine angabe dazu, ihr?
https://www.kraken.com/help/api#general-usage

edit:
gleich nach dem posten ist mir eingefallen, welche Variation ich noch probieren kann, nämlich XXBTXLTC ^^ und das klappt auch, hat sich also erledigt die frage :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 24, 2014, 02:09:19 AM
Ich weiß zwar nicht was ich getan habe, aber momentan rennt der Bot wie hulle :)
Findet und führt viele Trades im DOGE, BTCD, DRK, BC und LTC Markt. Bin sehr zu frieden...

Hab jetzt mal den Coin Stand von heute und vor vier Wochen vergleichen.
Wenn ich mal die Fehlverkäufe durch Bugs oder unvorsichtigkeit meinerseit etwas ausblendet, sind das ein Zuwach von 5% and BTC und durch schnittlich 10% mehr Coins im Portfolio.
Wenn man alles in FIAT umrechnen würde...stehe da sicher ein dickes Minus aufgrund der Verluste von nahezu allen Cryptowährungen gegegn BTC bzw. Dollar.




Ich denke so langsam bin ich auf einem 1.0 Stand und ich muss mir mal Gedanken machen was nun ist. Hatte ja anklingen lassen alles unter dem hier üblichen Bot Lizenzmodell zu fahren. Bin mir nicht so sicher ob das so wirklich das ist was gut für mich und die Interessenten ist. Vielleicht kann mir ja die Community etwas Inspiration geben?!?
Was wäre denn für euch Anlass ein Stück Software zu erwerben?

Cool wäre es natürlich auch irgendwie, wenn jemand ein Review macht, um mal unabhängig meinen Schmonz zu verifizieren. Die Struktur die cagrund in diversen Reviews bisher gewählt hat finde ich zum Beispiel gut... Fragen über Fragen. Hoffe ihr könnt mir helfen...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Splett on December 30, 2014, 11:42:18 PM
Ich weiß zwar nicht was ich getan habe, aber momentan rennt der Bot wie hulle :)
Findet und führt viele Trades im DOGE, BTCD, DRK, BC und LTC Markt. Bin sehr zu frieden...

Hab jetzt mal den Coin Stand von heute und vor vier Wochen vergleichen.
Wenn ich mal die Fehlverkäufe durch Bugs oder unvorsichtigkeit meinerseit etwas ausblendet, sind das ein Zuwach von 5% and BTC und durch schnittlich 10% mehr Coins im Portfolio.
Wenn man alles in FIAT umrechnen würde...stehe da sicher ein dickes Minus aufgrund der Verluste von nahezu allen Cryptowährungen gegegn BTC bzw. Dollar.




Ich denke so langsam bin ich auf einem 1.0 Stand und ich muss mir mal Gedanken machen was nun ist. Hatte ja anklingen lassen alles unter dem hier üblichen Bot Lizenzmodell zu fahren. Bin mir nicht so sicher ob das so wirklich das ist was gut für mich und die Interessenten ist. Vielleicht kann mir ja die Community etwas Inspiration geben?!?
Was wäre denn für euch Anlass ein Stück Software zu erwerben?

Cool wäre es natürlich auch irgendwie, wenn jemand ein Review macht, um mal unabhängig meinen Schmonz zu verifizieren. Die Struktur die cagrund in diversen Reviews bisher gewählt hat finde ich zum Beispiel gut... Fragen über Fragen. Hoffe ihr könnt mir helfen...

Das hört sich ja gut an.
Als Feedback auf deine Frage, verkaufe es als Programm, bei dem du von den Profiten 5% erhälst und somit ein passives Einkommen aufbaust.
Ich kann mir die Software gerne mal anschauen, btw. du kannst auch gerne mal ein paar Screenshots reinstellen.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 31, 2014, 12:40:30 PM
Ich weiß zwar nicht was ich getan habe, aber momentan rennt der Bot wie hulle :)
Findet und führt viele Trades im DOGE, BTCD, DRK, BC und LTC Markt. Bin sehr zu frieden...

Hab jetzt mal den Coin Stand von heute und vor vier Wochen vergleichen.
Wenn ich mal die Fehlverkäufe durch Bugs oder unvorsichtigkeit meinerseit etwas ausblendet, sind das ein Zuwach von 5% and BTC und durch schnittlich 10% mehr Coins im Portfolio.
Wenn man alles in FIAT umrechnen würde...stehe da sicher ein dickes Minus aufgrund der Verluste von nahezu allen Cryptowährungen gegegn BTC bzw. Dollar.




Ich denke so langsam bin ich auf einem 1.0 Stand und ich muss mir mal Gedanken machen was nun ist. Hatte ja anklingen lassen alles unter dem hier üblichen Bot Lizenzmodell zu fahren. Bin mir nicht so sicher ob das so wirklich das ist was gut für mich und die Interessenten ist. Vielleicht kann mir ja die Community etwas Inspiration geben?!?
Was wäre denn für euch Anlass ein Stück Software zu erwerben?

Cool wäre es natürlich auch irgendwie, wenn jemand ein Review macht, um mal unabhängig meinen Schmonz zu verifizieren. Die Struktur die cagrund in diversen Reviews bisher gewählt hat finde ich zum Beispiel gut... Fragen über Fragen. Hoffe ihr könnt mir helfen...

Das hört sich ja gut an.
Als Feedback auf deine Frage, verkaufe es als Programm, bei dem du von den Profiten 5% erhälst und somit ein passives Einkommen aufbaust.
Ich kann mir die Software gerne mal anschauen, btw. du kannst auch gerne mal ein paar Screenshots reinstellen.

Auch eine interessante Variante, bin mir nur nicht so sicher, ob das gut für beide Seiten funktioniert... zum Einen da der BOT in PHP geschrieben ist und somit die Donation Methoden umgeschrieben werden können und zum Anderen wäre die Frage wo man die 5% ansetzt und dann überträgt. Bei zu kleinen Trades würde der Ertrag vom Network Fee gefressen werden. Zeit- und Minimumbasiert könnte man machen, dass  würde dann aber auch im Zweifel dazu führen, dass der Nutzer verwirrt ist wohin seine BTC verschwinden ^^ aber ich setzte es mal auf die Liste :)

Hab momentan folgende Varianten überlegt:
  • Lizenz 1: Man erwirbt für X BTC einen Bot. Der Bot darf frei installiert werden aber nicht verkauft/verschenkt/weitergegeben. Updates und Weiterentwicklung inklusive.
  • Lizenz 2: Man erwirbt für X BTC einen Bot. Der Bot darf frei installiert und 1zu1 bei nicht mehr Gebrauch verkauft werden. Mir muss der neue Besitzer mitgeteilt werden, Zwecks Updates und Weiterentwicklung inklusive.
  • Versteigerung: Bots gehen an die 10 Höchstbieter. Der Bot darf frei installiert und 1zu1 bei nicht mehr Gebrauch verkauft werden. Mir muss der neue Besitzer mitgeteilt werden, Zwecks Updates und Weiterentwicklung inklusive.
  • Funding: Community sagt wir legen X BTC zusammen. Funder bekommen den Bot für Y Wochen exklusiv danach Veröffentlichung auf Git Hub. Updates und Weiterentwicklung inklusive bzw. Community Updates
  • Donation: X% des positiven Profites gehen auf mein BTC-Konto. Updates und Weiterentwicklung inklusive
  • ...

Ich mach gleich mal paar aktuell Screenshots der Version 0.9 die aktuell im "Systemtest" und "Abnahmetest" ist.

Ich haue auch mal meinen Beta-Tester an hier ein Review zu schreiben...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: whyte on December 31, 2014, 12:49:54 PM
Was würdest du denn bei Lizenz 1 überhaupt ansetzen (auch in Euro) ?
Mich würd das ja schon interessieren.

Und als Beta Tester würde ich mich anbieten, habe einen derzeit nicht genutzten vServer ...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Wolke on December 31, 2014, 12:50:29 PM
Was würdest du denn bei Lizenz 1 überhaupt ansetzen (auch in Euro) ?
Mich würd das ja schon interessieren.

+1


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 31, 2014, 01:07:40 PM
Hier ist eine XAMPP Installationsanleitung (https://www.dropbox.com/s/w5llywgw6vd30lq/Windows_Installation_XAMPP.pdf?dl=0) zum  Bot, da kann man schon viel rauslesen ;)
Oder auch Release Notes (https://www.dropbox.com/s/yy3eqpjy81amm5d/ReleaseNotes.txt?dl=0) was nach aktuellem Stand in v1.0 drin sein wird.

Consolen Output:
> Raspberry PI mit Arch Linux
> neueste Version von PHP und mySQL (MariaDB)
> XAMPP mit PHP und mySQL geht auch entsprechend
http://fs2.directupload.net/images/141231/dvfspxn8.png (http://www.directupload.net)



Webinterface:
> Aktuelle Datenübersicht vom Bot.
> Man sieht sehr gut, dass durch den Kuranstieg bei BC einige Arbitrage Trades als auch Antizyklische Trades (Grün - Sell) durchgeführt wurden.
> Man sieht zudem, dass die Coins die im Wert gefallen sind (VIA, BTCD, LTC, POT) von der Antizyklischen Strategie nachgekauft wurden (Orange - Buy).
> Warum sind so viele Antizyklische Buy gehäuft? Hab gestern die Strategie nach testing wieder aktiviert udn was sich über die Tage davo "angestaut" hat wurde dann ausgeglichen.
http://fs2.directupload.net/images/141231/ccwvigcp.png (http://www.directupload.net)



Webinterface:
> Chart mit den letzten 48 Stunden Snapshot Daten vom Profit.
> Passend zu den Recent trades kann man die Antizyklsichen Käufe nachvollziehen
http://fs1.directupload.net/images/141231/cqwqsyji.png (http://www.directupload.net)


Webinterface:
> Chart mit den letzten 48 Stunden Snapshot Daten vom aktuellen BTC Stand auf den Börsen
> Man kann sehen, dass trotz der Antizyklischen Käufe es kaum Bewegung im BTC bestand gab, das lag daran, dass zuvor ausgelöste Arbitragen viel kompensiert haben bzw. Orders zurückgezogen wurden
> Unten seht ihr das Logbuch, was hat der Bot getan
http://fs1.directupload.net/images/141231/lwcgaqkw.png (http://www.directupload.net)



Webinterface
> Übersichtsseite was ist alles so beim Coin (BC) passiert
http://fs2.directupload.net/images/141231/ycsnss98.png (http://www.directupload.net)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 31, 2014, 01:20:39 PM
Was würdest du denn bei Lizenz 1 überhaupt ansetzen (auch in Euro) ?
Mich würd das ja schon interessieren.

+1

Huch, es gibt ja doch Mitleser hier :) hatte schon befürchtet bald mit Kalkulatorix alleien zu sein :)
Um das Thema ziere ich mich momentan bisserl um ehrlich zu sein ;) ist schon schwer die eigene Arbeit einzupreisen und auf der anderen Seite den Nutzern eine faire Chance zu bieten erstmal das Grundinvest auch zügig wieder raus zu haben. Natürlich geht bei mehr Coins auf den Exchanges das viel schneller, denke aber auch eher an so Kleininvester wie ich einer bin...sprich die das just for 4 machen...
Aber um auf deine Frage offen zu antworten, aktuell kreisen meine Gedanken um 0,5 BTC. Das würde sich also um die ~120€ pendeln.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: whyte on December 31, 2014, 01:24:39 PM
Da sollten wir doch mal in Verhandlungen treten ;-)

Mitgelesen habe ich schon die ganze Zeit, nur letzlich nichts zu beitragen können.
Ich kenne mich mit PHP schon aus, habe aber keine Ahnung, wo ich anfangen müsste, deswegen würde mich dein Bot auf jeden Fall reizen ...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 31, 2014, 01:30:32 PM
Da sollten wir doch mal in Verhandlungen treten ;-)

Mitgelesen habe ich schon die ganze Zeit, nur letzlich nichts zu beitragen können.
Ich kenne mich mit PHP schon aus, habe aber keine Ahnung, wo ich anfangen müsste, deswegen würde mich dein Bot auf jeden Fall reizen ...


Bin auf deine PN gespannt ;) denke wir sollten den Beitrag damit nicht voll spamen ;)

Fragen rund um den Bot natürlich auch hier gerne für die Öffentlichkeit :) gibt sicher mehrere die ähnliche Fragen haben...


Edit:
So habe ich auch angefangen damals :) Bis ich den damaligen Bot so umgeschrieben hatt bis er mir das machte was ich alles wollte...naja dann war ich vom Programmieren so angefixt das ich selber gestartet habe meine Gedanken zu verwirklichen :) von daher Daumen hoch :) Wenn du fragen zum Einstieg hast danna uch her damit.




@Kalkulatorix: Ist das ok für dich oder soll ich eigenen Beitrag aufmachen?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on December 31, 2014, 01:34:47 PM
sry für die unterbrechung =P

ich kenn mich mit "rasperry" dingern nicht aus, weiß auch nicht wie die aussehen oderso, habe nur hier gelesen, dass man darauf einen Bot laufen lassen kann.
Was würdet ihr mir diesbezüglich empfehlen? Würde gerne meinen Python Bot dauerhaft laufen lassen, sobald er fertig ist. Ich vermute mal so ein Rasperry ist besser/günstiger als ein Server? Welcher Art von Rasperry wäre da empfehlenswert?  Was kann so ein Ding? Kann es auch mithilfe des Skripts Log Dateien erstellen, die ich dann auslesen/auf den PC übertragen kann?

edit: MySQL und diesen ganzen Kram bräuchte ich nur, wenn ich einen Server verwenden würde, oder? Aber du (Darkwinde) hast ja auch einen Rasberry, also wozu noch einen server? Oder wie darf ich das verstehen?

ach und an dem Bot von Darkwinde wäre ich natürlich auch interessiert ;)
Ich nehme mal an man kann dann bei Erwerb auch selbst bestimmen, welche Coins gehandelt werden sollen und muss nicht antizyklisch mit den von dir erwähnten Coins verfahren, richtig?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 31, 2014, 01:46:29 PM
sry für die unterbrechung =P

Immer her mit den Unterbrechungen :) klasse dass der Beitrag wieder eine hohe Besucherdichte hat.

ich kenn mich mit "rasperry" dingern nicht aus, weiß auch nicht wie die aussehen oderso, habe nur hier gelesen, dass man darauf einen Bot laufen lassen kann.
Was würdet ihr mir diesbezüglich empfehlen? Würde gerne meinen Python Bot dauerhaft laufen lassen, sobald er fertig ist. Ich vermute mal so ein Rasperry ist besser/günstiger als ein Server? Welcher Art von Rasperry wäre da empfehlenswert?  Was kann so ein Ding? Kann es auch mithilfe des Skripts Log Dateien erstellen, die ich dann auslesen/auf den PC übertragen kann?

edit: MySQL und diesen ganzen Kram bräuchte ich nur, wenn ich einen Server verwenden würde, oder? Aber du (Darkwinde) hast ja auch einen Rasberry, also wozu noch einen server? Oder wie darf ich das verstehen?
Raspberry geht gerade für Ressourcenarme aber dauerhafte Anwendungen extrem gut. Ich nutze ihn halt zum Minen, BOT oder gar als PayCoin Node. man muss halt nur etwas sich in Linux reinfummeln. War vor einem Jahr auch totaler DAU und mittlerweile schreibe ich Tutorials wie man so nen Node aufsetzten kann...bin bisserl verrückt ich weiß :D

ich kenne mich mit Python nicht aus aber soweit ich weiß brauchste nur nebst nginx (als webserver) nur das Python Modul installieren und aktivieren. Dann sollte es gehen... Bitte Korrektur wenn ich mich irre :)

Das Ding kann alles was du ihm sagst und was die Linux Distribution hergibt ^^ Aber in deinem Fall Ja, würde das über Perl machen und dann auf einem network Share ablegen.

Das Raspberry wird dann zum Web und Datenbank Server.
Als Webserver nutze ich nginx und als Datenbank MariaDB (ehemals mySQL)

Edit: Wenn du ein NAS hast, hast du eine Ähnliche Konstellation. Da ist oft auch ein Linux drauf was man mit einigen Kniffen umfunktionieren kann. Und dort sind am Ende auch nciht mehr drauf als Linux, Webserver, Datenbank, SAMBA...



ach und an dem Bot von Darkwinde wäre ich natürlich auch interessiert ;)
Ich nehme mal an man kann dann bei Erwerb auch selbst bestimmen, welche Coins gehandelt werden sollen und muss nicht antizyklisch mit den von dir erwähnten Coins verfahren, richtig?
Korrekt. Du kannst jeden Coin nehmen der gegen BTC gehandelt wird. Zudem kannst du in der Config festlegen, ob du nur Arbitrage oder nur Anti Zyklisch oder beides zusammen machst. Ganz nach eigenem empfinden.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: ewibit on December 31, 2014, 05:32:27 PM
ach und an dem Bot von Darkwinde wäre ich natürlich auch interessiert ;)
Ich nehme mal an man kann dann bei Erwerb auch selbst bestimmen, welche Coins gehandelt werden sollen...
und vor allem welche exchanges...
(nur die 3 - 4 üblichen oder mehr?)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on December 31, 2014, 07:00:53 PM
ach und an dem Bot von Darkwinde wäre ich natürlich auch interessiert ;)
Ich nehme mal an man kann dann bei Erwerb auch selbst bestimmen, welche Coins gehandelt werden sollen...
und vor allem welche exchanges...
(nur die 3 - 4 üblichen oder mehr?)

Aktuell BTer, Bittrex, Poloniex und Cryptsy.
Weitere können aber bei Bedarf noch implementiert werden hatte aberbisher kein Bedarf.
Bin da flexibel was eure Wünsche anbelangt.

Bzw. wenn jemand die API Schnittstelle für Bot und Exchange schreibt integriere ich das gerne...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on January 01, 2015, 11:04:08 PM
Ich habe mal zum Projekt ein neuen Beitrag eröffnet.

Zwecks Fragen zum Bot einfach vorbeischauen: https://bitcointalk.org/index.php?topic=911201.0


Ansonsten machen wir hier mit der generellen Entwicklung weiter :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on January 02, 2015, 10:49:30 AM
Ich konnte leider die letzten Wochen sehr wenig hier schreiben, der Umstieg in der Entwicklungsumgebung von PHP auf C# hat viel Zeit in Anspruch genommen, ich habe die P/L Auswertung noch nicht fertig. Das ist mein erstes Projekt in C#, da wollte ich möglichst viel aus dem .NET nutzen, ein proprietäres .SAV File zum Abspeichern der Programmdaten ist für einen alten C-Programmierer kein Problem, aber die Fehlersuche, warum der JavaScriptSerializer in der CountrySetting Klasse wegen Rekursion eine Exception wirft, dauert schon einige Tage, wenn die entsprechende Erfahrung fehlt.  ???

Das Problem beim Speichern ist mittlerweile gelöst, da hat sich bei der zu speichernden flachen Kopie der Programmdaten eine Referenz auf die Original Programmdaten eingeschlichen. Und in den Original Programmdaten sind notwendigerweise Loops enthalten, die beim JavaScriptSerializer eine Endlosrekursion verursachen.

Wie immer, lange Fehlersuche, am Ende nur 3 Zeilen im Programm verändert. Die Zeit hat sich aber gelohnt. Anstelle von 300 Zeilen Code für ein proprietäres .SAV File gibt es jetzt 30 Zeilen Code zum Abspeichern und Einlesen von Programmdaten im JSON Format.  ;D


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on January 05, 2015, 12:23:30 AM
Sooo.. meine Grundversion eines einfachen Dreiecksarbitragebot für Kraken.com ist fertig :)
Fertig im Sinne von: er tut was er soll, nämlich auslesen ob sich was lohnt und wenn ja orders platizeren :D
Dreiecksarbitrage geht dort eig nur sinnvoll mit "btc xrp eur" und "btc ltc eur", weil überall woanders das Volumen fehlt.. und selbst bei diesen 2 möglichkeiten habe ich noch nie was profitables gesehen, es dient also mehr Testzwecken :)
Morgen versuche ich dann rauszufinden, wie ich mit Python was in eine txt datei schreiben lasse und mache mir damit dann eine Logdatei.

Jetzt zu meinen Fragen:
Habt ihr noch Hinweise worauf ich achten sollte? Also z.b ungewöhnliche Fehlermeldungen, oder Kontrollen die man einbauen sollte?

Aktuell läuft es wirklich nur so ab, dass die besten bids/asks miteinander vergleichen werden. Wenn kein Profit möglich ist, macht er nichts weiter. Wenn Profit möglich ist, dann ruft er zusätzlich noch das Volumen dieser besten bids/asks ab und kontrolliert nochmal schnell, ob der Preis sich nicht schon geändert hat.  Dann berechnet er die Menge, die möglich ist zu handeln, dabei berücksichtigt er die angebotene Handelsmenge und auch die eigene Balance der Währungen. Wenn diese Menge mind. der MindestHandelmenge entspricht, dann platziert er die entsprechenden Orders mit der ermittelten Menge.
Dann wird 10 sekunden gewartet.
Nun wird versucht die soeben erstellten Orders wieder zu canceln. Tritt dabei überall eine Fehlermeldung auf, ist alles gut, weil die orders nicht gecancelt werden können, da sie bereits durchgeführt wurden.  Tritt aber bei einer Order kein Fehler auf, wurde diese nicht ausgeführt und der Bot gibt eine entsprechende Fehlermeldung an mich aus. Bisher müsste ich das dann manuell korrigieren, sodass die richtige Menge gehandelt wird.

Geplant ist noch folgendes:
-Selbstständiges reagieren auf nicht durchgeführte Orders.
Dazu frage ich dann halt die Open Orders ab und dementsprechende Reaktionen.  Das einzige Problem was ich dabei sehe ist die Geschwindigkeit. Denn auch wenn ich alle Befehle innerhalb einer Funktion ohne "warten" habe, dauert die Durchführung ja eventuell etwas (und wenn es nur 1 Sekunde ist). Nun will und kann ich ja aber nicht ständig weitere API Abfragen reinstellen, um zu kontrollieren, ob eine Order angenommen wurde oder nicht. Zumal die Durchführung der Funktion ja eig instant sein sollte und es evlt auch ist... Vllt muss ich mich da mal nach einen Zeitmesser für Pythonfunktionen umsehen, damit ich sehe, was wie lange braucht :)
- und natürlich "verschobene Arbitrage" wie Darkwinde es in seinem Thread nennt :) Da wird die Kontrolle der Open Orders dann natürlich noch wichtiger...

Und noch Fragen zu API Abfragen:
Wovon hängt die Zeit ab, die der Bot für die einzelnen Schritte und Abfragen bei den APIs braucht? Von meiner Inetverbindung? Von meinem Pc? (z.b ist mein Browser oft relativ langsam, ist meine api abfrage es damit auch?) Braucht die API Abfrage länger, wenn ich ein ganzes Orderbook abfrage, als wenn ich nur die besten bids/asks abfrage, die ausgegebene Liste also länger ist? Wie kann ich die API Abfrage beschleunigen, also worauf achten?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on January 05, 2015, 01:18:11 AM
Sooo.. meine Grundversion eines einfachen Dreiecksarbitragebot für Kraken.com ist fertig :)
Gratuliere Dir!


Dreiecksarbitrage geht dort eig nur sinnvoll mit "btc xrp eur" und "btc ltc eur", weil überall woanders das Volumen fehlt..
Fehlendes Volumen ist nicht nur Dein Problem, sondern auch das aller Anderen in diesem Markt. Schnell kann da ein best bis zu einem best ask werden, und sich eine Arbitragemöglichkeit ergeben. Auch wenn es nur eine alle paar Tage ist. ....

und selbst bei diesen 2 möglichkeiten habe ich noch nie was profitables gesehen, es dient also mehr Testzwecken :)
Also seit Samstag sollte sich auch da einiges getan haben. Bei so großen Kurssprüngen sollten sich einige arbitragemöglichkeiten gefunden haben.

Morgen versuche ich dann rauszufinden, wie ich mit Python was in eine txt datei schreiben lasse und mache mir damit dann eine Logdatei.
Logdatei ist sehr wichtig.

Habt ihr noch Hinweise worauf ich achten sollte? Also z.b ungewöhnliche Fehlermeldungen, oder Kontrollen die man einbauen sollte?
Alle APIs die ich bisher gesehen habe, liefern immer eine Antwort zurück. Manche Programmiersprachen werfen eine Exception, wenn bei der Abfrage ein Fehler in der Internetverbindung auftritt (das kommt sehr häufig vor) Die Antworten immer auswerten, Fehler in jedem Fall ins Logfile schreiben, ebenso die Internet Excaptions.

Aktuell läuft es wirklich nur so ab, dass die besten bids/asks miteinander vergleichen werden. Wenn kein Profit möglich ist, macht er nichts weiter. Wenn Profit möglich ist, dann ruft er zusätzlich noch das Volumen dieser besten bids/asks ab und kontrolliert nochmal schnell, ob der Preis sich nicht schon geändert hat.  Dann berechnet er die Menge, die möglich ist zu handeln, dabei berücksichtigt er die angebotene Handelsmenge und auch die eigene Balance der Währungen. Wenn diese Menge mind. der MindestHandelmenge entspricht, dann platziert er die entsprechenden Orders mit der ermittelten Menge.
Dann wird 10 sekunden gewartet.
Arbitrage muss schnell gehen. Die extra Abfrage der Besten bid/asks würde ich weglassen, sondern gleich mit den Orderbüchern starten. Spesen nicht vergessen!

Nun wird versucht die soeben erstellten Orders wieder zu canceln. Tritt dabei überall eine Fehlermeldung auf, ist alles gut, weil die orders nicht gecancelt werden können, da sie bereits durchgeführt wurden.  Tritt aber bei einer Order kein Fehler auf, wurde diese nicht ausgeführt und der Bot gibt eine entsprechende Fehlermeldung an mich aus. Bisher müsste ich das dann manuell korrigieren, sodass die richtige Menge gehandelt wird.
Du bekommst ja nur eine OrderID, wenn eine Order angelegt wird, also die Order nicht sofort vollständig durchgeführt werden konnte. Mit dem Order Cancel Versuch erkennst Du nur jene Order als korrekt durchgeführt, die beim Absenden der Order nicht sofort vollständig durchgeführt wurden, aber innerhalb von 10 Sekunden komplett durch waren. Vor allem bei Teilweise ausgeführten Orders kannst Du Dir mit dieser Logik Probleme einfangen, Da Du nicht weißt, ab eine gecancelts Order teilweise ausgeführt wurde. Ich würde da eher so vorgehen, wie Du weiter unten schreibst.

Geplant ist noch folgendes:
-Selbstständiges reagieren auf nicht durchgeführte Orders.
Dazu frage ich dann halt die Open Orders ab und dementsprechende Reaktionen.  


Das einzige Problem was ich dabei sehe ist die Geschwindigkeit. Denn auch wenn ich alle Befehle innerhalb einer Funktion ohne "warten" habe, dauert die Durchführung ja eventuell etwas (und wenn es nur 1 Sekunde ist).
Ja, die Geschwindigkeit ist ein Problem. Da Du die Märkte nur einzeln Abfragen kannst, arbeitest Du im Prinzip immer mit veralteten Daten. Ja nachdem, wieviele andere Bots gerade dieselbe Arbitrage gefunden haben, wird die Anzahl der nicht sofort durchgeführten Orders steigen.

Nun will und kann ich ja aber nicht ständig weitere API Abfragen reinstellen, um zu kontrollieren, ob eine Order angenommen wurde oder nicht.
Wieso? Sende soviele API Anfragen an die Exchange wie es für Dich nötig und von der Exchange her zulässig ist.

Und noch Fragen zu API Abfragen:
Wovon hängt die Zeit ab, die der Bot für die einzelnen Schritte und Abfragen bei den APIs braucht? Von meiner Inetverbindung? Von meinem Pc? (z.b ist mein Browser oft relativ langsam, ist meine api abfrage es damit auch?) Braucht die API Abfrage länger, wenn ich ein ganzes Orderbook abfrage, als wenn ich nur die besten bids/asks abfrage, die ausgegebene Liste also länger ist?
, also worauf achten?
Kann ich Dir nicht für Kraken beantworten. Der Browser hat mit dem API wenig zu tun, den kannst Du nicht als Vergleich heranziehen. Die APIs brauchen nicht viel Bandbreite, ich verbrauche 20kBit/s Senden und 400kBit/s Empfangen als kurzfristiges Maximum. Internetverbindung sollte wesentlich mehr kBit/s haben, geht ja noch Anderes über die Leitung.

Wie kann ich die API Abfrage beschleunigen?
Darauf hast Du wenig Einfluß. Aktuelle Hardware verwenden, gute Internetverbindung und gut ist. Das Bot Programmieren ist keine Raketenwissenschaft, da kann so viel außerhalb Deines Einflußbereichs als Programmierer passieren, sodass ein suboptimales API das geringste Problem ist.  >:(


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on January 05, 2015, 02:15:47 AM
kalkulatorix hat ja schon sehr ausführlich geantwortet.
Werde daher nochmal auf wirklich Knackpunkte eingehen, die dir vielleicht das Leben erleichtern sollten :)


> Wenn du die Orderbücher abfragst, bekommst auch zum einen immer das Volumen und die Tiefe mit. Du brauchst also keine zweite Abfrage nur deine erste etwas Aufbohren. Ich schreibe solche Infos immer in ein Array.

> Wenn du Sicherheit gewinnen willst, berechne erst alle Notwendigen Informationen, ob der Trade gut wäre und prüfe zum Schluss nochmal ob die selben Marktbedingungen noch existent sind. Das mache ich auch so, danach feuer frei ;)

> Logdateien werden dein Bester Freund, sieh schon jetzt eine Logging Klasse vor die du immer bemühst um Daten wegzuschreiben. Gerade das Debugging wird enorm einfacher wenn du einfach mal wichtige Codestellen im Log ausgeben lassen kannst.

> Du solltest nicht auf Exception bei der Erfüllung von Orders prüfen, das geht spätestens bei Partiell Erfüllten Orders schief. oftmals bieten die Exchanges ein API Call an, der dir sagt ob eien Order bereits geschlossen wurde und was der Grund dafür war. Cancel <-> Erfüllt
Gleiches gilt auch für teilweise Erfüllte Orders. Ich meien, dass es Bittrexx ist, die das sogar ganz wüst machen. Da hast du zum Einen Orders die in der API als offen stehen aber gleichzeitig in der History auftauchen ^^ da muss man dann beides verbinden...

> Du musst dir überlegen, wie und wann du mit Partiell Erfüllten Orders umgehst. Da gibt es diverse Einflüsse und musst dir ein Konzept überlegen. Nimm dir zeit dafür.

> Dein Rechner wird nicht der limitierende Faktor sein. Mein Bot äuft auf einem Raspberry PI Model B bei nicht mal 10% Last. Was aber zuträglich ist, sind stabile Verbindungen zu deinem Provider und einen Timeout für API Response und Connect Zeiten einzubauen in das Programm, Rest kannst du nicht beeinflussen.

> API Anfragen kannst du meines Wissens nach nicht beeinflussen nur deren Verarbeitung und da wirst du sicher deinen Weg finden

> Zeitmessung in Python kann sicher wie in PHP gehen. Nimm aktuelle Zeit vor der Methode und nach der Methode, abziehen und tada haste die Durchlaufgeschwindigkeit ^^

Hoffe ich konnte etwas helfen
Darkwinde


PS: Mir viel bisher kein besserer Name als verschobene Arbitrage ein da du eigentlich Ping-Pong Orders generierst und auf Erfüllung wartest, die aber über mehrere Exchanges gehen ;) Wenn es dafür nen Fachbegriff gibt oder jemand einen Coolen namen weiß, her damit ^^


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on January 05, 2015, 07:57:19 AM
@kalkulatorix:

Quote
Alle APIs die ich bisher gesehen habe, liefern immer eine Antwort zurück. Manche Programmiersprachen werfen eine Exception, wenn bei der Abfrage ein Fehler in der Internetverbindung auftritt (das kommt sehr häufig vor) Die Antworten immer auswerten, Fehler in jedem Fall ins Logfile schreiben, ebenso die Internet Excaptions.
jop, habe bei vielen Abfragen eine error Abfrage, also ob von Kraken ein error zurückgegeben wird und falls ja, wird dieser angezeigt. Ist noch nicht überall eingebaut.. sollte ich vllt wirklich nach jeder Abfrage machen, sicher ist sicher.
Habe vorhin auch geguckt was passiert, wenn ich den Bot ohne Internetverbindung starte. Dann erscheint ne lange Fehlerliste von Python und dem Modul requests, was ich verwende um die Anfragen zu machen... bin noch nicht sicher, wie ich da nun eine Kontrolle einbauen kann... Hast du eine Idee wie ich am anfang eine Kontrolle reinkriege ob Internet an ist und ob die API erreichbar ist?

Quote
Arbitrage muss schnell gehen. Die extra Abfrage der Besten bid/asks würde ich weglassen, sondern gleich mit den Orderbüchern starten. Spesen nicht vergessen!
Ja richtig. Ich ging halt davon aus, dass es länger dauert das komplette orderbook abzufragen, als erstmal nur die Ticker, zusätzlich hatte ich dadurch gleich noch die kleine Kontrolle, ob der Preis sich vllt innerhalb der Ausführung schon wieder geändert hat. Aber wenn das kein großer unterschied ist, ist es tatsächlich sinnvoller gleich das Orderbook abzufragen.

Quote
Du bekommst ja nur eine OrderID, wenn eine Order angelegt wird, also die Order nicht sofort vollständig durchgeführt werden konnte. Mit dem Order Cancel Versuch erkennst Du nur jene Order als korrekt durchgeführt, die beim Absenden der Order nicht sofort vollständig durchgeführt wurden, aber innerhalb von 10 Sekunden komplett durch waren. Vor allem bei Teilweise ausgeführten Orders kannst Du Dir mit dieser Logik Probleme einfangen, Da Du nicht weißt, ab eine gecancelts Order teilweise ausgeführt wurde. Ich würde da eher so vorgehen, wie Du weiter unten schreibst.
Habe das gerade mal bei Kraken getestet. Da bekomme ich auch eine OrderID, wenn die Order sofort ausgeführt wird. Bin aber gerade auch dabei, jetzt das mit den OpenOrders einzubauen. Ich frage also alle open orders ab, schaue ob meine Id dort noch vorhanden ist. Wenn ja, dann rufe ich das executed volume ab um zu erfahren, ob sie teilweise erfüllt ist.
Ich bin mir noch unsicher, wie ich verfahren sollte, wenn tatsähclich eine Order nicht/nur teilweise erfüllt wird... Entweder kehre ich dann trotzdem zur Ausganswährung zurück mit eventuellen Verlusten. Zurzeit stelle ich alle KAuf/Verkaufsorders gleichzeitig rein.  Man könnte es auch so machen, dass man erst die erste ORder reinstellt und diese kontrolliert, ob sie sofort erfüllt wurde. Wenn ja, dann werden die restlichen Orders reingestellt. Wenn nein, dann wird der Vorgang abgebrochen. Das minimiert also die Chance, dass ich in die Situation komme, dass etwas unerfüllt ist.  Dafür habe ich aber auch eine kleine Zeitverzögerung von ca. 1 sekunde zur Kontrolle ob die erste Order erfüllt ist...
Wie hast du das gelöst? Ich glaube Darkwinde z.b. hatte geschrieben, dass er die orders dann einfach drin lässt mit der begründung "das wird schon iwann angenommen", oder?  Wenn ich manuell trade und mir sowas passiert, dann analysiere ich erstmal die Lage und schätze ab, ob die Order noch erfüllt werden könnte und ziehe evtl nach oder schließe sie mit Verlust. Ich kann das ganz gut einschätzen. Aber der Bot kann das nicht. Deswegen müsste man da eine einzige konsequente Vorgehensweise programmieren. Und da wäre mir eine Schließung der Position schon lieber, als evlt in noch größere Verluste zu geraten.

Quote
Nun will und kann ich ja aber nicht ständig weitere API Abfragen reinstellen, um zu kontrollieren, ob eine Order angenommen wurde oder nicht.
Wieso? Sende soviele API Anfragen an die Exchange wie es für Dich nötig und von der Exchange her zulässig ist.
Naja, die Limits der Exchanges sind schon ziemlich eng. Soweit ich das bei Kraken verstanden habe, habe ich für die meisten Abfragen 10 Calls pro 5 sekunden.  Wenn ich nun also bei 3 currencies immer wieder ziwschendurch, in derselben Funktion, die Daten abfrage, ist das schon nach 3 Abfragen voll ^^ und da sind dann andere Abfragen wie openorders oderso noch garnicht mit drin. Also ich hab da eig nicht besonders viel Spielraum.




@Darkwinde:

Quote
> Wenn du die Orderbücher abfragst, bekommst auch zum einen immer das Volumen und die Tiefe mit. Du brauchst also keine zweite Abfrage nur deine erste etwas Aufbohren. Ich schreibe solche Infos immer in ein Array.
jop, meinte kalkulatorix ja auch schon. werde ich so machen.

Quote
> Wenn du Sicherheit gewinnen willst, berechne erst alle Notwendigen Informationen, ob der Trade gut wäre und prüfe zum Schluss nochmal ob die selben Marktbedingungen noch existent sind. Das mache ich auch so, danach feuer frei
hmhm.. ist nur immer schwierig zu erfassen. Weil ich all die Operationen und Abfragen ja theoretisch zurselben Zeit, also in derselben Funktion mache. Das heißt gäbe es keine Verzögerung durch Hardware, Software Inetleitung usw., dann wäre es auch alles zurselben Zeit. Aber wie gesagt, da muss ich mal ein Tool suchen, um zu sehen, wie lange mein Skript tatsächlich braucht und ob es sinnvoll ist, zu anfang und nach den Berechnungen die Werte abzufragen. (nicht sinnvoll wäre es z.b wenn dazwischen dann nur 0,0x sekunden liegen würden)

Quote
> Logdateien werden dein Bester Freund, sieh schon jetzt eine Logging Klasse vor die du immer bemühst um Daten wegzuschreiben. Gerade das Debugging wird enorm einfacher wenn du einfach mal wichtige Codestellen im Log ausgeben lassen kannst.
Nur zu meinem Verständnis, bin ja noch recht neu was das Programmieren angeht: Eine Logdatei ist doch einfach nur eine Datei, in der ich aufschreiben lasse, was so alles passiert ist. Das heißt wenn keine Profite gefunden werden und auch keine Fehler auftreten steht da für den entsprechenden Zeitraum (kann man ja nach Tag gliedern, oder?) nichts drin. Und sonst steht da nur das drin, was ich vorher festlege, also z.b bei Fehlern dann die fehlermeldungen und bei ausgeführten Trades dann evlt noch die Gewinne und sonstige hilfreiche Dinge. Letzlich ist es also dasselbe wie bisher die Ausgabe in meiner Shell (ich lasse Ereignisse und Fehler immer per "print" ausgeben), mit dem unterschied, dass es abgespeichert wird und zu jeder Zeit daher wieder nachvollziehbar ist.
"Debugging" heißt das auffinden und beheben von Fehlern, richtig?
Wieso soll ich eine Logging Klasse schreiben? Wie würde diese aussehen bzw. wozu wäre sie da? Vermutlich würde ich einfach im Botskript selbst nach jedem Ereignisauslösendem Teil sowas schreiben wie log("es wurde x zu y€/BTC gekauft"), angenommen "log()" sorgt dafür, dass der Text in die logdatei geschrieben wird.
Und wie kann ich mir über die Logdatei wichtige Codestellen ausgeben lassen? Undwozu brauche ich das? Den Code kann ich mir doch direkt im Skript ansehen. Oder meinst du bei Fehlermeldungen, dass dort die Codestelle mit dem Fehler genannt wird?

Quote
> Du solltest nicht auf Exception bei der Erfüllung von Orders prüfen, das geht spätestens bei Partiell Erfüllten Orders schief. oftmals bieten die Exchanges ein API Call an, der dir sagt ob eien Order bereits geschlossen wurde und was der Grund dafür war. Cancel <-> Erfüllt
Gleiches gilt auch für teilweise Erfüllte Orders. Ich meien, dass es Bittrexx ist, die das sogar ganz wüst machen. Da hast du zum Einen Orders die in der API als offen stehen aber gleichzeitig in der History auftauchen ^^ da muss man dann beides verbinden...
jop, ist wie oben erwähnt in Arbeit :)


Quote
> Du musst dir überlegen, wie und wann du mit Partiell Erfüllten Orders umgehst. Da gibt es diverse Einflüsse und musst dir ein Konzept überlegen. Nimm dir zeit dafür.
hast du dazu denn noch Ratschläge?


Quote
> Zeitmessung in Python kann sicher wie in PHP gehen. Nimm aktuelle Zeit vor der Methode und nach der Methode, abziehen und tada haste die Durchlaufgeschwindigkeit ^^
ja das klingt sinnvoll, werde ich so ausprobieren :)





Ach noch zur Bot-betreibung:
Welche Möglichkeiten habe ich da denn? Also entweder den Pc den ganzen Tag laufen lassen. Sich ein kleines stromsparendes Gerät wie einen Rasperry kaufen (gibts noch andere leichter einstellbare alternativen? weiß nicht ob ich mich mit Linux rumschlagen möchte). Oder einen Server mieten? Ein Server mieten würde vermutlich heißen, dass ich mein Skript irgendwo hochlade und der Dienstleister dieses dann für mich ausführt, richtig? Was kostet sowas im schnitt, ist es günstiger oder teurer als die anschaffung eine rasperry (oder für welchen Zeitraum lohnt sich was davon). Und sind meine Daten auf dem Server sicher? Schließlich steht im Skript mein API Key und bei manchen Exchanges sogar Username und passwort. Nicht dass die das nutzen können und mich bestehlen ^^


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on January 05, 2015, 11:12:54 AM
Quote
Du bekommst ja nur eine OrderID, wenn eine Order angelegt wird, also die Order nicht sofort vollständig durchgeführt werden konnte. Mit dem Order Cancel Versuch erkennst Du nur jene Order als korrekt durchgeführt, die beim Absenden der Order nicht sofort vollständig durchgeführt wurden, aber innerhalb von 10 Sekunden komplett durch waren. Vor allem bei Teilweise ausgeführten Orders kannst Du Dir mit dieser Logik Probleme einfangen, Da Du nicht weißt, ab eine gecancelts Order teilweise ausgeführt wurde. Ich würde da eher so vorgehen, wie Du weiter unten schreibst.
Habe das gerade mal bei Kraken getestet. Da bekomme ich auch eine OrderID, wenn die Order sofort ausgeführt wird. Bin aber gerade auch dabei, jetzt das mit den OpenOrders einzubauen. Ich frage also alle open orders ab, schaue ob meine Id dort noch vorhanden ist. Wenn ja, dann rufe ich das executed volume ab um zu erfahren, ob sie teilweise erfüllt ist.
Ich bin mir noch unsicher, wie ich verfahren sollte, wenn tatsähclich eine Order nicht/nur teilweise erfüllt wird... Entweder kehre ich dann trotzdem zur Ausganswährung zurück mit eventuellen Verlusten. Zurzeit stelle ich alle KAuf/Verkaufsorders gleichzeitig rein.  Man könnte es auch so machen, dass man erst die erste ORder reinstellt und diese kontrolliert, ob sie sofort erfüllt wurde. Wenn ja, dann werden die restlichen Orders reingestellt. Wenn nein, dann wird der Vorgang abgebrochen. Das minimiert also die Chance, dass ich in die Situation komme, dass etwas unerfüllt ist.  Dafür habe ich aber auch eine kleine Zeitverzögerung von ca. 1 sekunde zur Kontrolle ob die erste Order erfüllt ist...
Wie hast du das gelöst? Ich glaube Darkwinde z.b. hatte geschrieben, dass er die orders dann einfach drin lässt mit der begründung "das wird schon iwann angenommen", oder?  Wenn ich manuell trade und mir sowas passiert, dann analysiere ich erstmal die Lage und schätze ab, ob die Order noch erfüllt werden könnte und ziehe evtl nach oder schließe sie mit Verlust. Ich kann das ganz gut einschätzen. Aber der Bot kann das nicht. Deswegen müsste man da eine einzige konsequente Vorgehensweise programmieren. Und da wäre mir eine Schließung der Position schon lieber, als evlt in noch größere Verluste zu geraten.

Ich kümmere mich gar nicht darum, ob die Order erfüllt ist oder nicht. Wenn ich eine Arbitrage gefunden habe, stelle ich alle Order gleichzeitig in den Markt, schreibe das Ergebnis ins Logfile und gut ist es. Dann warte ich 10 Sekunden und frage dannach die "availiable Funds" ab, und der Bot lauert auf weitere Arbitragen. Dadurch blieben so schöne Orders stehen wie verkaufe BTC um 620 oder verkaufe LTC um 7.9. Das reduziert mir die "availiable Funds" zwar, aber bis jetzt at sich das Aussitzen von offenen Orders immer noch ausgezahlt. Da würde ich eventuell das Volumen der Arbitragen beschränken, damit der Bot nicht handlungsunfähig wegen zu wenig Funds wird.

Ich habe leider noch kein API für Kraken, sorry für die Fehlinformation wegen der OrderID bei erfüllten Orders.

Naja, die Limits der Exchanges sind schon ziemlich eng. Soweit ich das bei Kraken verstanden habe, habe ich für die meisten Abfragen 10 Calls pro 5 sekunden.  Wenn ich nun also bei 3 currencies immer wieder ziwschendurch, in derselben Funktion, die Daten abfrage, ist das schon nach 3 Abfragen voll ^^ und da sind dann andere Abfragen wie openorders oderso noch garnicht mit drin. Also ich hab da eig nicht besonders viel Spielraum.

Ich würde davon ausgehen, daß der Bot das Einzige ist, was Orders in den Markt stellt. Wenn Du manuell eingreifen willst, stell den Bot ab, oder bau eine "Pause" ein, sodaß Du den Bot anhalten kannst, wenn Du manuell in die Exchange eingreifen willst.

Dann brauchst Du nicht so viele zusätzlichen Abfragen. Wenn eine Order erfüllt wird, erhöhen sich die "availiable Funds" in jedem Fall. Verringern tun sich die "avaliable Funds" nur, wenn Du Orders in den Markt stellst, die nicht erfüllt werden. Somit brauchst Du die Funds nur beim Start, Neustart nach Pause, nach Trades und sonst nur alle 5 Minuten. (je mehr Reserven Du hast, desto länger bleibt Dein Bot handlungsfähig und Du kannst das Intervall weiter erhöhen.)  Wenn Du Dich nicht darum kümmerst, ob die Orders erfüllt werden, oder nicht, kannst Du die Open Orders Abfrage ganz weglassen, oder das Handling der offenen Orders nur alle 15 Minuten machen, höchstens so oft, wie Du die Funds abfragst.


Ach noch zur Bot-betreibung:
Welche Möglichkeiten habe ich da denn? Also entweder den Pc den ganzen Tag laufen lassen. Sich ein kleines stromsparendes Gerät wie einen Rasperry kaufen (gibts noch andere leichter einstellbare alternativen? weiß nicht ob ich mich mit Linux rumschlagen möchte). Oder einen Server mieten? Ein Server mieten würde vermutlich heißen, dass ich mein Skript irgendwo hochlade und der Dienstleister dieses dann für mich ausführt, richtig? Was kostet sowas im schnitt, ist es günstiger oder teurer als die anschaffung eine rasperry (oder für welchen Zeitraum lohnt sich was davon). Und sind meine Daten auf dem Server sicher? Schließlich steht im Skript mein API Key und bei manchen Exchanges sogar Username und passwort. Nicht dass die das nutzen können und mich bestehlen ^^
Ich habe 3 lüfterlose Stromsparcomputer, die haben eine Quadcore Laptop CPU verbaut, und sind als Bot-Hardware vollkommen überdiemensioniert. CPU Last nur 1-3% durch den Bot. Stromverbrauch maximal 65 Watt, Kaufpreis aber 1400 EUR. Ich denke, Du würdest da auch mit irdenteinem billigeren USFF (Ultra Small Form Faktor) Computer auskommen, die Gefahr bei einem kleinen Gehäuse ist aber, dass die Lüfter angehen, das nervt auf Dauer gewaltig. Ein Ding mit Atom Prozessor reicht locker aus. Zum Raspberry kann ich nicht viel sagen, bin Windows gewöhnt und möchte in meinem Alter nicht mehr so viel Neues erlernen.


Edit: Unbedingt eine Professional Windows Version für den Bot - Computer verwenden. Nur die Professional Versionen habe einen Remote Desktop inkludiert, sodaß Du den Bot - Compter von Deinem Haupt - Computer fernsteuern kannst. Da brauchst Du, abgesehen von der Erstinstallation keinen Bildhschirm und Tasatur mehr am Bot - Computer, der kann dann irgendwo stehen, wo er keinen Hitzestau bekommt.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on January 05, 2015, 02:13:39 PM
Quote
Quote
> Wenn du Sicherheit gewinnen willst, berechne erst alle Notwendigen Informationen, ob der Trade gut wäre und prüfe zum Schluss nochmal ob die selben Marktbedingungen noch existent sind. Das mache ich auch so, danach feuer frei
hmhm.. ist nur immer schwierig zu erfassen. Weil ich all die Operationen und Abfragen ja theoretisch zurselben Zeit, also in derselben Funktion mache. Das heißt gäbe es keine Verzögerung durch Hardware, Software Inetleitung usw., dann wäre es auch alles zurselben Zeit. Aber wie gesagt, da muss ich mal ein Tool suchen, um zu sehen, wie lange mein Skript tatsächlich braucht und ob es sinnvoll ist, zu anfang und nach den Berechnungen die Werte abzufragen. (nicht sinnvoll wäre es z.b wenn dazwischen dann nur 0,0x sekunden liegen würden)
Weil es in der sleben Funktion ist, heißt es ja nicht zwangsläufig, dass du es parallel alles machst. Ist Python Multithread fähig? Wenn ja könntest du eine Näherung hinbekommen aber ein sofortiges Ergebnis sehe ich aktuell nicht als möglich an....lasse mich aber gerne umstimmen ;)

Quote
Quote
> Logdateien werden dein Bester Freund, sieh schon jetzt eine Logging Klasse vor die du immer bemühst um Daten wegzuschreiben. Gerade das Debugging wird enorm einfacher wenn du einfach mal wichtige Codestellen im Log ausgeben lassen kannst.
Nur zu meinem Verständnis, bin ja noch recht neu was das Programmieren angeht: Eine Logdatei ist doch einfach nur eine Datei, in der ich aufschreiben lasse, was so alles passiert ist. Das heißt wenn keine Profite gefunden werden und auch keine Fehler auftreten steht da für den entsprechenden Zeitraum (kann man ja nach Tag gliedern, oder?) nichts drin. Und sonst steht da nur das drin, was ich vorher festlege, also z.b bei Fehlern dann die fehlermeldungen und bei ausgeführten Trades dann evlt noch die Gewinne und sonstige hilfreiche Dinge. Letzlich ist es also dasselbe wie bisher die Ausgabe in meiner Shell (ich lasse Ereignisse und Fehler immer per "print" ausgeben), mit dem unterschied, dass es abgespeichert wird und zu jeder Zeit daher wieder nachvollziehbar ist.
"Debugging" heißt das auffinden und beheben von Fehlern, richtig?
Wieso soll ich eine Logging Klasse schreiben? Wie würde diese aussehen bzw. wozu wäre sie da? Vermutlich würde ich einfach im Botskript selbst nach jedem Ereignisauslösendem Teil sowas schreiben wie log("es wurde x zu y€/BTC gekauft"), angenommen "log()" sorgt dafür, dass der Text in die logdatei geschrieben wird.
Und wie kann ich mir über die Logdatei wichtige Codestellen ausgeben lassen? Undwozu brauche ich das? Den Code kann ich mir doch direkt im Skript ansehen. Oder meinst du bei Fehlermeldungen, dass dort die Codestelle mit dem Fehler genannt wird?
Jop hast es schon erfasst. Meine Logging Methode gibt auf der Console oder in DB oder schickt mir was per Mail zu, abhängig von dem was ich im Code ausgeben will. Sprich alle aktuellen Daten zur Marktlage gebe ich nur auf der Console aus, wenn aber ein Trade stattgefunden hat kommt es zusätzlich in die DB (wie auch Fehler) und wenn ein Eingreifen des Nutzers erforderlich ist (kein Withdraw via API) dann schickt er mir eine Mail ;)
Debugging -> Nach verfolgen und Lösen von Fehlern
In PHP gibt es zum Beispiel eine Möglichkeit die Struktur und Inhalte von Variablen auszugeben, was oftmals einfach wichtig ist um ein falschen Tradevorgang nachzuvollziehen.


Quote
Quote
> Du musst dir überlegen, wie und wann du mit Partiell Erfüllten Orders umgehst. Da gibt es diverse Einflüsse und musst dir ein Konzept überlegen. Nimm dir zeit dafür.
hast du dazu denn noch Ratschläge?
Ratschlag nicht, aber kann dir sagen, wie ich es mache:
1) prüfe ob partiell erfüllt
2) wenn ja prüfe ob mit vorhandenem Füllstand bereits meine Profitvorgaben erfüllt sind
2.1) wenn nein leg dich schlafen
3) wenn ja prüfe ob Magic Counter erreicht (berechne ich aus Anzahl der zu prüfenden Coins) wurde
2.2) wenn nein leg dich schlafen
3) wenn ja, breche den Arbitrage ab und verkaufe

Ist etwas verwirrend, hat aber den Ursprung darin, dass mein Arbitrage Trading Strategie zwei geteilt aufgebaut ist: Sofortige Ausführung und verschobene.
Die verschobene Arbitrage geht bei mir vom Startpunkt aus, dass jemand mein Kaufangebot annimmt und erst dann los geschossen wird. Damit trage ich eben Sorge, dass mir der Markt nicht weg läuft und ich im Deadstate bin ohne dass die Order nochmal erfüllt wird. kalkulatorix, hat wie oben beschrieben ein anderes vorgehen bei Arbitrage.







Ach noch zur Bot-betreibung:
Welche Möglichkeiten habe ich da denn? Also entweder den Pc den ganzen Tag laufen lassen. Sich ein kleines stromsparendes Gerät wie einen Rasperry kaufen (gibts noch andere leichter einstellbare alternativen? weiß nicht ob ich mich mit Linux rumschlagen möchte). Oder einen Server mieten? Ein Server mieten würde vermutlich heißen, dass ich mein Skript irgendwo hochlade und der Dienstleister dieses dann für mich ausführt, richtig? Was kostet sowas im schnitt, ist es günstiger oder teurer als die anschaffung eine rasperry (oder für welchen Zeitraum lohnt sich was davon). Und sind meine Daten auf dem Server sicher? Schließlich steht im Skript mein API Key und bei manchen Exchanges sogar Username und passwort. Nicht dass die das nutzen können und mich bestehlen ^^

Ist am Ende des Tages eine Sache, was dir am Besten gefällt. Das aagt dir jemand der erst auf seine alten Tage vor einem Jahr mit Linux angefangen hat: Linux rumschlagen musst du dich nicht viel, sind paar Kommandozeilen Parameter und das ding rennt dann bis zum Ende aller Tage. Updates sind auch einfacher als bei Windows. Will meine beiden Rasps nimmer missen. Aber auch jeder andere Mini PC tut es auch und Windows ist ja auch nicht so das Schlimmste ;) schau dich doch einfach mal um und lass dann danach entscheiden was dir ein sicheres Gefühl gibt und was nicht dein Geldbeutel zu sehr schröpft.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: ewibit on January 05, 2015, 06:26:58 PM
Aktuell BTer, Bittrex, Poloniex und Cryptsy.
Weitere können aber bei Bedarf noch implementiert werden hatte aberbisher kein Bedarf.
Bin da flexibel was eure Wünsche anbelangt.

viele der neuen cryptos werden auf

   AllCrypt
   Coins-E
   AllCoin
   Coin-Swap
   SwissCEX
   AskCoin
   UseCryptos.com
   .
   .
   .


gehandelt und gerade am Anfang ist meist hohe Volatilität...

hier
https://de.cryptonator.com/exchange
hat man einen schönen Überblick  :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on January 05, 2015, 09:35:52 PM
Aktuell BTer, Bittrex, Poloniex und Cryptsy.
Weitere können aber bei Bedarf noch implementiert werden hatte aberbisher kein Bedarf.
Bin da flexibel was eure Wünsche anbelangt.

viele der neuen cryptos werden auf

   AllCrypt
   Coins-E
   AllCoin
   Coin-Swap
   SwissCEX
   AskCoin
   UseCryptos.com
   .
   .
   .


gehandelt und gerade am Anfang ist meist hohe Volatilität...

hier
https://de.cryptonator.com/exchange
hat man einen schönen Überblick  :)

Nur weil ein Exchange einen neuen Coin ASAP integriert, heißt es ja nicht, dass andere das auch tun. Bei Dreiecks Arbitrage auf einem Exchange geht das, keine Frage, aber nicht bei meiner Methode über zwei Exchanges...

Trotzdem guter Hinweis zu der Seite (merke ich mir) und auch welche Börsen potenziell interessant sein könnten für meine nächsten APIs
Danke dir


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on January 08, 2015, 12:20:38 PM
nochmal danke für eure antworten kalkulatorix und darkwinde :) 
Python ist übrigens multithread-fähig, weshalb ich das noch dementsprechend umschreiben werde :) Aktuell braucht es vom erkennen bis zur ausführung 5 sekunden, was leider oft zu lange ist =/

Mir kam der Gedanke, ob es nicht auch möglich ist, so ein Skript auf einem Tablet zu betreiben? Würde mir halt ungerne ein neues gerät anschaffen wollen. Ich kenne mich nicht mit den nötigen Vorraussetzungen und den Möglichkeiten eines mittelmäßigen Android Tablets aus... aber eigentlich sollte das doch möglich sein?  WLAN kann man sogar im Ruhezustand aktiviert lassen, also sollte man es doch auch hinbekommen, dass im Ruhezustand der Bot arbeitet?  Denkt ihr sowas geht?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on January 08, 2015, 02:20:07 PM
Python ist übrigens multithread-fähig
Das ist eine guten Nachricht, da ergeben sich schon einmal mehrere Möglichkeiten.

Aktuell braucht es vom erkennen bis zur ausführung 5 sekunden, was leider oft zu lange ist
Das dauert genau 5 Sekunden? Für eine Analyse des Problem solltest Du erst herausfinden, wie lange jeder einzelner Schritt der Verarbeitung dauert. Ohne mit Kraken Erfahrungen zu haben, erscheinen mir die 5 Sekunden lange für 1*Fund,1*Open_Orders und 3*Market. OOps, das sind ja genau 5, hast Du vielleicht die Verzögerungen eingebaut und mitgerechnet, damit Du nicht über das API Limit kommst?

Mir kam der Gedanke, ob es nicht auch möglich ist, so ein Skript auf einem Tablet zu betreiben? Würde mir halt ungerne ein neues gerät anschaffen wollen.
Das kann ich jetzt nicht nachvollziehen. Selbst bei mir in Österreich kostet so ein Mini PC unter 300 EUR, das sind doch Peanuts im Vergleich dazu, was er im Laufe der Zeit bringen wird. Unterschätze nicht die Schwierigkeiten, die auf Dich zukommen, wenn Du unter Android programmieren willst.

Weiters sollte ein Bot ja 24/7 laufen, das ist mit einem Tablett nur schwer zu erreichen, wenn man es so verwendet, wofür es gedacht ist.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on January 08, 2015, 03:29:01 PM
Sorry muss mal wieder ranten...
Ich bekomme schon wieder Plack. Hab durch Zufall gesehen, dass der PHP Parser auf einmal meinte in Zeile XY von API Bittrex würde es Offset 1 nicht geben...
Schaue es mir an, kratz mich am Kopf. Erstelle Testdaten....alles OK...kann doch nicht sein...

So nach 2 Stunden jetzt die Lösung... (sorry fürs Schreien) DIE SCHE.... API SCHNITTSTELLE VON BITTREX GIBT ALS ORDERTYPE "Limit_Buy" ZURÜCK UND WENN SIE GERADE LUST HAT FÜR DICH GLEICHE ORDER AUCH MAL NUR "Buy"...
AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH wie soll man mit so nem Mist arbeiten


So hab mich jetzt ausgekotzt ;)

-----------------

Warum nimmst kein Raspberry PI kostet doch nur 30€ und verbraucht nur paar Watt...


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on January 08, 2015, 06:12:54 PM
Danke für die antworten :)

@kalkulatorix:
ich hab ja schon mehrere API Anfragen und diese dauern grob überschlagen je 1 Sekunde.  Ganz genau habe ich es noch nicht nachvollzogen, was wie lange braucht.  Verzögerungen sind nur 0,5 sekunden eingebaut. Wie gesagt beschäftige ich mich jetzt mit Threads (für mich als programmieranfänger noch nicht ganz so leicht, aber wird schon :D) und dann mal schauen, wieviel Zeit ich einsparen kann :)

Auch wenn ich schon ein paar Gewinne durch Bitcoins machen konnte, bin ich dennoch nur Student und 300€ sind schon eine gaaaaanze Menge Geld. Hatte bis vor kurzem auch noch einen alten Röhrenfernseher, kein Smartphone, ein kaputtes Bett, einen sehr alten Laptop usw. Neu kaufe ich die Dinge erst, wenns wirklich garnicht mehr anders geht :D  oder wenn ich so wie jetzt gebrauchte Dinge von Verwandten geschenkt bekomme, die aber dennoch um ein vielfaches Neuer sind, als meine Dinge :D
Deswegen würde mir die günstigst-mögliche Variante schon zusagen, die aber dennoch nicht zuviel zusätzlichen Aufwand benötigt.
Schön wäre vermutlich so eine Preisklasse von maximal 100€, wobei ich den Aufwand einen Rasperry zu programmieren für mich mal mit einem Wert von 70€ beziffere :D (weürde also 70€ mehr zahlen, wenn ich keinen Einrichtungsaufwand des Gerätes habe).
Bezüglich Android hätte es ja sein können, dass es da bereits irgendwelche Apps (eine art sehll) gibt, mit denen man Skripte ausführen kann. dann müsste ich nichts direkt mit android machen.

@Darkwinde:
Oh man :D Altcoin-exchanges scheinen eine ziemlich dämliche API zu haben ^^  
Kann man so einen Raspberry denn irgendwo fertig einrichten lassen, sodass ich mich wirklich garnicht mit Linux auskennen muss? Programmieren lernen reicht mir fürs Erste, möchte mich wirklich nicht auch noch mit Linux beschäftigen müssen =/
Gibts denn nichts mit Windows oderso in der Preisklasse 50-100€?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: ewibit on January 08, 2015, 07:09:24 PM

Kann man so einen Raspberry denn irgendwo fertig einrichten lassen, sodass ich mich wirklich garnicht mit Linus auskennen muss? Programmieren lernen reicht mir fürs Erste, möchte mich wirklich nicht auch noch mit Linus beschäftigen müssen =/
Gibts denn nichts mit Windows oderso in der Preisklasse 50-100€?
hier
http://www.raspberrypi.org/downloads/
hast du fertige Linux images zum download und z.B. Raspbian
(Debian Wheezy) ist gut und einfach zum Einstieg.

edit:
hier noch ein Vergleich
http://www.raspberry-pi-geek.de/Magazin/2013/05/Distributionen-fuer-den-Raspberry-Pi-im-Ueberblick


Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on January 08, 2015, 08:23:28 PM
... 300€ sind schon eine gaaaaanze Menge Geld.... kein Deswegen würde mir die günstigst-mögliche Variante schon zusagen, die aber dennoch nicht zuviel zusätzlichen Aufwand benötigt.
Schön wäre vermutlich so eine Preisklasse von maximal 100€, wobei ich den Aufwand einen Rasperry zu programmieren für mich mal mit einem Wert von 70€ beziffere :D (weürde also 70€ mehr zahlen, wenn ich keinen Einrichtungsaufwand des Gerätes habe).
Du brauchst ja nicht gleich morgen einkaufen gehen. Einige Zeit musst Du den Bot ja ohnehin überwacht laufen lassen, auf Anhieb funktioniert so ein großes Projekt nicht problemlos. Ich würde sagen, die Hardwareentscheidung hat noch so lange Zeit, bis der Bot längere Zeit ohne Probleme funktioniert hat.

Investiere die 70 EUR besser in Kapital für Deinen Bot, die Installationsanleitungen findest Du ja gratis im Internet.


Gibts denn nichts mit Windows oderso in der Preisklasse 50-100€?
Nein. Ich würde Dir auch NICHT raten, einen gebrauchten Computer in dieser Preisklasse zu kaufen. Da bleibt nur ein Raspberry als Alternative. Ich hatte vor 15 Jahren auch aus der Windows Welt kommend, mit Linux zu tun, das war zwar eine Umstellung, aber nach einer Zeit gewöhnt man sich an die Möglichkeiten die eine Linux Shell so bietet. Du muss ja nicht ein Raspberry Guru werden, im Internet gibt es Installationsanleitungen, wenn es einmal eingerichtet ist, brauchst Du nur Dein Python Programm auf den Raspberry kopieren (entwickeln kannst Du ja bequem am PC) und dann starten/stoppen. Den Bot zu schreiben ist die größere Hürde.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Darkwinde on January 08, 2015, 10:10:56 PM
... 300€ sind schon eine gaaaaanze Menge Geld.... kein Deswegen würde mir die günstigst-mögliche Variante schon zusagen, die aber dennoch nicht zuviel zusätzlichen Aufwand benötigt.
Schön wäre vermutlich so eine Preisklasse von maximal 100€, wobei ich den Aufwand einen Rasperry zu programmieren für mich mal mit einem Wert von 70€ beziffere :D (weürde also 70€ mehr zahlen, wenn ich keinen Einrichtungsaufwand des Gerätes habe).
Du brauchst ja nicht gleich morgen einkaufen gehen. Einige Zeit musst Du den Bot ja ohnehin überwacht laufen lassen, auf Anhieb funktioniert so ein großes Projekt nicht problemlos. Ich würde sagen, die Hardwareentscheidung hat noch so lange Zeit, bis der Bot längere Zeit ohne Probleme funktioniert hat.

Investiere die 70 EUR besser in Kapital für Deinen Bot, die Installationsanleitungen findest Du ja gratis im Internet.


Gibts denn nichts mit Windows oderso in der Preisklasse 50-100€?
Nein. Ich würde Dir auch NICHT raten, einen gebrauchten Computer in dieser Preisklasse zu kaufen. Da bleibt nur ein Raspberry als Alternative. Ich hatte vor 15 Jahren auch aus der Windows Welt kommend, mit Linux zu tun, das war zwar eine Umstellung, aber nach einer Zeit gewöhnt man sich an die Möglichkeiten die eine Linux Shell so bietet. Du muss ja nicht ein Raspberry Guru werden, im Internet gibt es Installationsanleitungen, wenn es einmal eingerichtet ist, brauchst Du nur Dein Python Programm auf den Raspberry kopieren (entwickeln kannst Du ja bequem am PC) und dann starten/stoppen. Den Bot zu schreiben ist die größere Hürde.

+1 nimmst mir die Worte aus dem Mund ;) wobei ich erst vor einem Jahr durch den PI mit Linux angefangen hatte...solange konnte ich mehr wehren ;)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Steinbeisser on January 11, 2015, 05:47:32 PM
Da gibt es gerade neu ein Buch mit dem Titel "Sie wissen alles" zu kaufen. Darin gibt es Hinweise wie Profis aus Banken ihre Bots entwickeln.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: FreeBit on January 14, 2015, 05:17:38 PM
Hallo :) ...

Habe gestern nach langer Zeit mal wieder ins Forum geguckt und diesen Thread über antizyklisches Handeln entdeckt. Sehr interessant - habe ich dort auch zum Ausdruck gebracht.

Ich mache auch crypto currency trading bots, und das auch schon etwas länger. Eher alleine und mit sehr geringem Austausch, vor allem, weil ich die Bots, die versuchen, Prognosen zu treffen, nicht so interessant finde. Eine einfache mathematische Grundlage wie die Antizyklische Strategie mag ich mehr.

Habe allerdings auch einen Bot gemacht, der den Ichimoku-Indikator als Trendsignal benutzt und die Parameter des Indikators mittels genetischer Algorithmen ständig optimiert. Erfolg war durchaus da, habe aber nach VPS-Provider-Wechsel vorübergehend das Interesse daran verloren. Der neue Provider ist sehr billig (7,5$ py, und irgendwie schlecht), und hat nicht genug Rechenleistung für die Optimierung.

Anyway - als Programmiersprache benutze ich Scala. Ist eher wenig verbreitet, aber ich mag es und es ist sehr effektiv. Banken etc. stellen zunehmend auf Scala um. Die Twitter-Message-Loop ist in Scala programmiert, netflix benutzt es auch.

Es war nett zu lesen, wie sich andere durch die Standard-Probleme durchgekämpft (wie Nachkommastellen auf bter etc.) haben. Ich habe als Resultat dieses Lernprozesses inzwischen drei bis vier Abstrahierungsschichten zwischen der konkreten Exchange-Klasse und der Logik :) ...


Mein nächstes Projekt wird die Implementierung eines AntiCycle-Bots sein. Und die allererste sich stellende Frage ist nicht-technischer Natur, nämlich welches Handelspaar: https://bitcointalk.org/index.php?topic=495672.msg10152920#msg10152920


Was meint ihr :) ... ?




Title: Re: Tagebuch eines Bot Entwicklers
Post by: kalkulatorix on January 20, 2015, 12:00:55 PM
Implementierung eines AntiCycle-Bots sein. Und die allererste sich stellende Frage ist nicht-technischer Natur, nämlich welches Handelspaar:
Bei solchen Fragen gehe ich immer nach den Ausschlußprinzip vor. Zuerst alle Alternativen auflisten und dann die schlechten Alternativen streichen.

Meine Ausschlußkriterien sind:

Geringes Handelsvolumen Ein Antizyklus Bot stellt keine zusätzlichen offenen Orders in den Markt, er nimmt nur vorhandene Orders an. d.h. wenn ein weiterer Bot in den Markt kommt, wird das Handelsvolumen nicht oder nur minimalst steigen. Alle Märkte, deren Volumen zumindest nicht 10.000 (zehntausend) mal höher als Deine Investition sind, kannst Du streichen.

Volumen der offenen Orders Ein Antizyklus Bot braucht, bei kleineren Gewichtungskorrekturen pro Prozent der Preisänderung ein halbes Prozent von Deiner Investition an Ordervolumen im Markt. Ich würde 10% Preisänderung als Grenze sehen, mit der der Bot noch funktioniren sollte, alse 5% Deiner Investition sollten jederzeit im Besten Bid/Ask Paar des Marktes verfügbar sein.

Bid/Ask Spread Da ein Antizyklus Bot immer nur vorhandene Orders im Markt nimmt, hat er bei 2 Korrekturen in die entgegengesetzte Richtung den Abstand zwischen Bid und Ask zu überwinden. Dieses Kriterium hängt stark mit dem vorigen zusammen, meist haben Märkte mit gut gefüllten Orderbüchern auch einen geringen Spread.

Handelspreis im Verhältnis zur kleinsten Handelseinheit Oft sind die Kommastellen im Preis auf weniger als 8 Stellen beschränkt. Die kleinstmögliche Preisänderung sollte den Wert eines Coins im Handelspaar um weniger als 1% verändern.

Spesen Die Spesen nicht vergessen! Ein Antizyklus Bot kann durch die Spesen rasch unprofitabel werden, macht der Bot 2 Korrekturen in die entgegengesetzte Richtung, fallen die Spesen doppelt an.

minimale Ordergröße Bei vielen Märkten muß die Order eine bestimmte Größe haben. Ein Antizyklus Bot stellt eher kleinere Orders in den Markt, sodaß das bei kleinen Investitionen bereits ein Problem werden kann. Falls der Bot Fehlgewichtungen von 1% korrigieren soll, darf die minimale Ordergröße nicht kleiner sein als 0,5% der Investition.

Wieviel möchtest Du vom Bot verwalten lassen? Auf welcher Exchange? Es macht einen großen Unterschied, ob Du mit 10 EUR oder 10000 EUR startest, die Kriterien filtern in Abhängigkeit von der Investition ganz andere Märkte heraus.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: FreeBit on January 20, 2015, 03:02:14 PM
Implementierung eines AntiCycle-Bots sein. Und die allererste sich stellende Frage ist nicht-technischer Natur, nämlich welches Handelspaar:
Bei solchen Fragen gehe ich immer nach den Ausschlußprinzip vor. Zuerst alle Alternativen auflisten und dann die schlechten Alternativen streichen.

Meine Ausschlußkriterien sind:

[...]


Danke.

Ich habe mich für STR|BTC auf Poloniex entschieden. Die von dir genannten Punkte sind eingermaßen gewährleistet - darüber hinaus habe ich mich dafür entschieden, weil ->

* ich STR für vergleichsweise langlebig halte
* das Verhältnis schwankt natürlich, aber vermute, daß es nicht zu stark schwanken wird.
* ich einen Grund habe, meine ExchangeInterface-Bibliothek zu erweitern.


Bis jetzt habe ich ->

* die groben, aber schon lauffähigen Klassenstrukturen, die ich in die
Ausführungsroutine der "Bot-Oberklasse" einhängen kann, gemacht. Auch die Datenbanktabellen, Konfigurationsdateien usw.

* ExchangeInterface abgeleitet und teilweise implementiert. Das ist inzwischen einfach nur langweilig.

* Die Kernroutinen dieser AntiCycle-Logik - nämlich Berechnung der Relation und der daraus folgenden Handelsgrößen, unter Berücksichtigung der bid bzw. ask-Seite - vollständig, genau, fehlerbehandelnd und allgemein verwendbar implementiert.

* Erste Strukturen der die AntiCycle-Logik einbindenen Handelslogik. Abläufe etc.

* Das mit anderem bestehenden Code harmonisiert, Code-Wiederholungen in "Traits" (so heißt das bei Scala) oder Elter-Klassen ausgelagert etc.

Wenn ich mir das so durchlese, gar nicht so schlecht.


Anyway - ich mache das schon etwas länger und einige meiner Konstrukte (Klassen) zu Behandlung der typischen Aufgaben eines Handelsbots haben sich für mich als sehr nützlich erwiesen. Beispielsweise eine konfigurierbare Klassen für Fee-Berechungen, Behandlung von Währungswertepaaren, Dezimalstellen etc.

Besteht daran Interesse, ich könnte hier hoffentlich aufschlußreichen SourceCode reinstellen?




Title: Re: Tagebuch eines Bot Entwicklers
Post by: FreeBit on January 20, 2015, 03:03:11 PM
Da gibt es gerade neu ein Buch mit dem Titel "Sie wissen alles" zu kaufen. Darin gibt es Hinweise wie Profis aus Banken ihre Bots entwickeln.

Wie machen die das denn?


Title: Re: Tagebuch eines Bot Entwicklers
Post by: Serpens66 on January 20, 2015, 07:40:06 PM
Besteht daran Interesse, ich könnte hier hoffentlich aufschlußreichen SourceCode reinstellen?
Ich schreibe meinen Bot ja in Python und lerne diese Sprache (als meine erste richtige Programmiersprache) auch gerade.
Meine bisherigen Konstrukte laufen größtenteils linear und mit wenig Verzweigungen, weshalb wenn ich was neues zufügen will,  ich alles neuschreiben müsste. Natürlich wird aber auch in Python normalerweise so programmiert, dass man z.b problemlos eine neue Börse aufnehmen kann, ohne alles komplett neu zu schreiben/zu ändern.
Daher hätte ich schon Interesse daran, wie sowas aussehen kann, wenn auch in einer anderen Sprache, aber ich denke es wird schon verständlich genug sein :)


Title: Re: Tagebuch eines Bot Entwicklers
Post by: FreeBit on January 20, 2015, 09:42:10 PM
@serpens66

Also grundsätzlich mache ich alles so allgemein verwendbar wie möglich.


Beispiel Nachkommastellen. Ich unterscheide drei Fälle: Anzeige, Rechnungen und Handeln. Beispielsweise Nxt auf Bter:  Wird mit drei Nachkommastellen gehandelt, aber mit acht Nachkommastellen berechnet und gespeichert.


In der Konfigurationsdatei gibts einen Abschnitt, der die Nachkommastellen definiert, jeweis für base (NXT), counter (BTC) und die rate, zu der das gehandelt wird.

Quote

        <!-- decimals -->
        <decimals>

            <calc>
                <base>8</base>
                <counter>8</counter>
                <rate>8</rate>
            </calc>

            <show>
                <base>8</base>
                <counter>8</counter>
                <rate>7</rate>
            </show>

            <trade>
                <base>3</base>
                <counter>8</counter>
                <rate>7</rate>
            </trade>

        </decimals>



Dann gibt es eine Klasse, die drei Instanzen eines Dezimalstellen-Sets aufnimmt. Das wird beim Start geladen und erzeugt.


Code:

case class Decimals ( calc: DecSet,
                      show: DecSet,
                      trade: DecSet )





Code:
case class DecSet ( decRate: Int,
                    decBase: Int,
                    decCntr: Int,
                    fmtHRtA: String => String,
                    fmtHRtB: String => String) {

  import tradebot.div.tools._

  /* rounding */
  def rndRate(v: Double) = roundDouble(v, decRate)
  def rndBase(v: Double) = roundDouble(v, decBase)
  def rndCntr(v: Double) = roundDouble(v, decCntr)

  /* formatting */
  def fmtRate(v: Double) = format(v, decRate)
  def fmtBase(v: Double) = format(v, decBase)
  def fmtCntr(v: Double) = format(v, decCntr)


  /* highlight the four relevant decimals */
  def fmtHRate(v: Double) = { ... }
}




Jetzt kann ich anderen Klassen zu verschiedenen Zwecken Instanzen dieser DecSet- Klasse übergeben und muß mich nicht mehr um Runden, Formatieren etc. kümmern.

Beispiel

Code:
case class SDBasicTrade ( trdDirection: TTrdDir.TTrdDir,
                          amount: Double,
                          rate: Double) {

  def toStr(decs: DecSet, units: BCUnits) =
      List( TTrdDir.toStr(trdDirection).toUpperCase, decs.fmtBase(amount),
              units.b, "@", decs.fmtRate(rate)).mkString(" ")
}



Jetzt kann ich sehr schnell und einheitlich eine Ausgabe auf die Konsole erzeugen:


Code:

   val trade = SDBasicTrade ( trdDirection = tdBuy,
                                           amount = 1,
                                           rate = 0.01 )

   println("executing trade -> " + trade.toStr(decs.trade, ... )
   logic.executeTrade(trade)




So, die ganzen Vorarbeiten sind natürlich etwas länglich, aber wenn sie gemacht sind, kann ich alle Dezimalstellen einheitlich runden und formatieren. Und muß für ein anderes Handelpaar an einer anderen Exchange nur ein paar Zahlen in einer Konfigurationsdatei ändern.


Title: Re: Tagebuch eines Bot Entwicklers
Post by: FreeBit on January 20, 2015, 10:01:02 PM
Nächstes Beispiel.

Die Werte des Währungspaars fasse ich in einer Klasse zusammen:

Code:

/* base/counter currency pair class and its companion object */
object BCPair extends XMLTools {
  def apply(b: Double, c: Double) = new BCPair(b, c)
  def apply(bcp: BCPair) = new BCPair(bcp.b, bcp.c)
  def apply() = new BCPair()
  def apply(xml: Elem) = new BCPair( b = tDbl(xml \ "base"),
                                     c = tDbl(xml \ "counter"))
  val zero = BCPair(0, 0)
  val error = BCPair(-1, -1)
}

class BCPair (var b: Double = 0, var c: Double = 0) {

  /* data manipulation */
  def set(in: (Double, Double)) {b = in._1; c = in._2}
  def set(bcp: BCPair) {b = bcp.b; c = bcp.c}
  def set(bb: Double, cc: Double) {b = bb; c = cc}


  /* abs, rounding*/
  def abs = BCPair(scala.math.abs(b), scala.math.abs(c))
  def rnd(decs: DecSet) = BCPair( b = decs.rndBase(b),
                                  c = decs.rndCntr(c) )


  /* check conditions */
  def cndAND (f: Double => Boolean) = f(b) && f(c)
  def cndOR (f: Double => Boolean) = f(b) || f(c)


  /* standard operators */
  def + (that: BCPair) = new BCPair(this.b + that.b, this.c + that.c)
  def - (that: BCPair) = new BCPair(this.b - that.b, this.c - that.c)
  def * (d: Double) = new BCPair(this.b * d, this.c * d)
  def / (d: Double) = new BCPair(this.b / d, this.c / d)
  def isEqual (that: BCPair) = this.b == that.b && this.c == that.c

  /* calc the rate: i * r = c  <=> r = c / i */
  def calcRate = if (b != 0) scala.math.abs(c / b) else -1D


  /* delivers min/max values of both entries */
  def mergeMax(that: BCPair) = BCPair( b = tools.max(b, that.b),
                                       c = tools.max(c, that.c) )

  def mergeMinPos(that: BCPair) = {
    def oz(x: Double, y: Double) = (x > 0, y > 0) match {
      case (true, true) => tools.min(x, y)
      case (false, true) => y
      case (true, false) => x
      case (false, false) => 0D }
    BCPair(b = oz(b, that.b), c = oz(c, that.c)) }


  /* formatted output */
  def print = "base:" + b + " cntr:" + c

  def toStr( bcu: BCUnits, decB: Int, decC: Int) =
      fmtAmt(b, bcu.b, decB) + " | " + fmtAmt(c, bcu.c, decC)

  def toStr( bcu: BCUnits, fmtB: Double => String, fmtC: Double => String) =
      fmtAmt(b, bcu.b, fmtB) + " | " + fmtAmt(c, bcu.c, fmtC)

  def toStr(decs: Decimals, units: BCUnits): String =
      toStr(bcu = units, decB = decs.decBase, decC = decs.decCntr)

  def toStr(decs: DecSet, units: BCUnits): String =
      toStr(bcu = units, decB = decs.decBase, decC = decs.decCntr)


  /* XML output */
  def toXML = fXML(b.toString, c.toString)
  def toXML(decs: DecSet) = fXML(decs.fmtBase(b), decs.fmtCntr(c))
  private def fXML(sb: String, sc: String) =
              <bcpair><base>{sb}</base><counter>{sc}</counter></bcpair>


  /* helper functions */
  private def cLen(s: String) = {if (s.indexOf("-") < 0) 1 else 0} + s.length

  private def fmtAmt(v: Double, unit: String, fmt: Double => String) = {
    val s = fmt(v)
    tools.pst( cLen(s), s) + " " + unit }

  private def fmtAmt(v: Double, unit: String, dec: Int) = {
    val s = tools.format(v, dec)
    tools.pst( cLen(s), s) + " " + unit }
}



Auch etwas länglich, aber ich kann jetzt ...

Code:

  // ... hiermit beispielsweise zwei Handelergebnisse aufsummieren.
  val a = BCPair(b = 1, c = 100)
  val b = BCPair(2, -30)
  val c = a + b // wäre hier BCPair(3, 70)

  // und mit der toStr-Methode ins Logfile schreiben
  log.trade("trade result -> " + c.toStr(decs.calc, ...)

  // oder testen, ob beide werte positiv sind
  if (c.cndAND (v => v > 0)) { ... }



Das erspart auch Arbeit bei der Deklaration von Klassen, beispielsweise einer Klasse, die die Handelsresultate aufnimmt:

Code:

/* the IFExTradeData class itself */
case class IFExTradeData ( dbid: Int,
                           typ: TTrdDir.TTrdDir,
                           bcu: BCUnits,
                           timestamp: Long,
                           tradeid: Long,
                           orderid: Long,
                           resultWOF: BCPair,
                           resultWF: BCPair,
                           fees: BCPair,
                           rateWOF: Double,
                           rateWF: Double)  extends IFExDataBase(dbid) {

  /* for error messages */
  override val errorClassName = "IFExTradeData"

  /* check on equality */
  def isEqual(that: IFExTradeData) = dbid == that.dbid &&
                                     typ == that.typ &&
                                     bcu == that.bcu &&
                                     timestamp == that.timestamp &&
                                     tradeid == that.tradeid &&
                                     orderid == that.orderid &&
                                     resultWOF.isEqual(that.resultWOF) &&
                                     resultWF.isEqual(that.resultWF) &&
                                     fees.isEqual(that.fees) &&
                                     rateWOF == that.rateWOF &&
                                     rateWF == that.rateWF

  /* type to string */
  def typStr = TTrdDir.toStr(typ)

  /* delivers a copy with setting of a changed database id */
  def copyWithDBID(id: Int) = copy(dbid = id)

  /* build log string */
  def toLog( indent: String, decs: DecSet) = {

    def strBCP(bcp: BCPair) =
      bcp.toStr( bcu, decs.fmtBase _, decs.fmtCntr _)

    List( "TRADEDATA",
          indent + "typ          :   " + typStr.toUpperCase,
          indent + "orderid      :   " + orderid,
          indent + "tradeid      :   " + tradeid,
          indent + "timestamp    :   " + tools.dateToString(timestamp),
          indent + "res w/o fee  :  " + strBCP(resultWOF),
          indent + "res w fee    :  " + strBCP(resultWF),
          indent + "fees         :  " + strBCP(fees),
          indent + "rate w/o fee : " + fmtValue(rateWOF, decs.fmtRate),
          indent + "rate w fee   : " + fmtValue(rateWF, decs.fmtRate)).mkString("\n") }




  /* creates a name/value map for database storing */
  override def dbValues(tableName: String, secID: Int) =
    Map( ("TableName", tableName),
         ("PrimaryKeyName", pkName),
         ("PrimaryKeyValue", dbid),
         ("secid", secID),
         ("typ", typStr),
         ("base", bcu.b),
         ("cntr", bcu.c),
         ("timestamp", timestamp),
         ("tradeid", tradeid),
         ("orderid", orderid),
         ("ratewof", rateWOF),
         ("ratewf", rateWF)) ++
         mapBCP("resultwof", resultWOF) ++
         mapBCP("resultwf", resultWF) ++
         mapBCP("fees", fees)

  /* stores to database, only if not exists */
  override def store(db: Database, table: String, secID: Int) =

    /* checks if dataset already exists */
    db.selectFromDB( table, "where tradeid=" + tradeid, "") match {

      /* dataset retrieved --> no action */
      case rs: ResultSet if rs.next() => rs.close()

      /* no dataset found --> store */
      case rs: ResultSet => super.store(db, table, secID); rs.close()
      case _ => super.store(db, table, secID) }


}



Wieder alles etwas länglich, aber sehr nützlich für die einheitliche Behandlung der Daten von verschiedenen Exchanges.