# Tradingbot selbst erstellen?



## StrammerMax93 (19. Feb 2016)

Hey Leute,

mir schwebt ein kleines Projekt vor... allerdings weiß ich nicht ob / wie man dieses umsetzen könnte.

Und zwar geht es um eine Tradingseite für Cryptocurrencys (Stichwort Bitcoin).

Ich habe eine Website auf der ich handeln kann.
Sie gibt den aktuellen Kurs aus und bietet die Möglichkeit Kauf-/Verkaufsorders zu setzen.

Ich möchte einen Bot, der bei einem bestimmten Preis automatisch verkauft und wenn der Preis wieder auf ein bestimmtes Minimum fällt kauft.

Der Algorithmus müsste in etwa so aussehen. (Es wird BTC in XMR getauscht und umgekehrt)

1. Prüfe Kontostand BTC und XMR
2. Wenn Kontostand BTC > Kontostand XMR setze Order "Buy XMR" zu Preis 0,00175
3. Ansonsten setze Order "Sell XMR" zu Preis 0,00185


Das ganze soll automatisch ablaufen. Allerdings muss vor dem setzen einer neuen Order natürlich erst die alte Order ausgeführt werden - sprich es muss kontrolliert werden ob die Order ausgeführt wurde.

Ich habe absolut keine Ahnung ob es möglich ist die Werte von der Website irgendwie "abzulesen" bzw. in die Formularfelder der Website automatisiert einzugeben.

Die Website sieht folgendermaßen aus:






"Last price" ist der aktuelle Kurs.
Beim setzen der Orders muss sowohl der Preis als auch der Amount angegeben werden.
Der aktuelle Kontostand steht unter Buy / Sell XMR.

Die Seite aktuallisiert sich dynamisch neu. Sprich änderungen werden automatisch angezeigt.
Weiter unten auf der Seite stehen offene Orders.







Das i-Pünktchen wäre noch, wenn sich der Algorithmus dynamisch dem Preisniveau anpasst.
Sprich wenn der Kurs zwischen 0,0018 und 0,00185 schwankt dass er dann immer bei 0,0018 kauft und bei 0,00185 verkauft.
Wenn der Preis dann aber steigt und zwischen 0,0019 und 0,00195 schwankt sollte mein Bot nachziehen und diese Preisspanne ausnutzen.


----------



## Joose (19. Feb 2016)

Soll das jetzt eine Vorstellung deines Projektes sein, oder willst du von ins Informationen wie man so ein Program realisieren kann?


----------



## StrammerMax93 (19. Feb 2016)

Joose hat gesagt.:


> Soll das jetzt eine Vorstellung deines Projektes sein, oder willst du von ins Informationen wie man so ein Program realisieren kann?


Etwas von beidem - aber mehr vom 2. 

Die reine Verarbeitungslogik bekomme ich soweit selbst hin denke ich.
Das Problem ist das Einlesen der Daten von der Website und das "Eintragen" der Daten in die Forumlarfelder.

Mir ist auch schon eine Option für die Überprüfung des Orderstatus eingefallen.
Wenn sich der Kontostand verändert wurde die Order ausgeführt.
So lässt sich leicht prüfen ob die Order schon ausgeführt wurde oder nicht.


Und einen guten Algorithmus für die dynamische Erkennung und Anpassung des Preisniveaus suche ich noch.


----------



## Joose (19. Feb 2016)

Hier findest du genug Anleitungen um Werte aus einer Webseite auszulesen: https://www.google.at/search?q=java+read+website&ie=utf-8&oe=utf-8&gws_rd=cr&ei=oQnHVvDjNcyra-Xws9AH


----------



## StrammerMax93 (19. Feb 2016)

Was ich bisher gefunden habe:

```
package Default;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class WebsiteReader {
   public static void main(String[] args) {
  try {
  URL poloniex = new URL("https://www.poloniex.com/exchange#btc_xmr");
  BufferedReader in = new BufferedReader(new InputStreamReader(poloniex.openStream()));
  String inputLine;
  while ((inputLine = in.readLine()) != null) {
  // Process each line.
  System.out.println(inputLine);
  }
  in.close();
  } catch (MalformedURLException me) {
  System.out.println(me);
  } catch (IOException ioe) {
  System.out.println(ioe);
  }
  }//end main
}
```

Allerdings liest dieser nur den html Quelltext aus, der mir herzlich wenig bringt.


----------



## Joose (19. Feb 2016)

Er liest das HTML Dokument aus, so wie er es vom Server bekommt.
Wenn da nicht viel drinnen steht dann wird anscheinend vieles per JavaScript oder Ajax oder sonst etwas nachgeladen und dynamisch eingebunden.

Kurz gegoogelt: Poloniex bietet eine API an. Diese kannst du verwenden um die Daten zu laden, dann muss nicht komisch über HTML ausgelesen werden. Auf was für Daten man damit Zugriff hat musst du dir durchlesen.
https://www.google.at/search?q=polo..._rd=cr&ei=9BHHVvamJsPzUO_SjcAB#q=poloniex+api


----------



## StrammerMax93 (19. Feb 2016)

Okay, ich habe mir jetzt den API Key generieren lassen.
Dieser ist wohl extra für meine Zwecke gedacht, da man auswählen kann ob man Trading über den API Key zulassen möchte doer nicht.
Die Frage ist jetzt nur wie ich damit arbeiten kann.
Ich habe noch nie mit einem API gearbeitet. 
Ein Anfang wäre mal einfach alles auszulesen was die Schnittstelle anbietet.


----------



## Joose (19. Feb 2016)

StrammerMax93 hat gesagt.:


> Die Frage ist jetzt nur wie ich damit arbeiten kann.


Hier ein paar Links welche die Grundlagen für diese API erklären können:
http://de.slideshare.net/rmaclean/json-and-rest
http://rest.elkstein.org/
http://stackoverflow.com/questions/671118/what-exactly-is-restful-programming

Grob gesagt du musst dich einfach in das Thema "REST Service/Api" und "JSON" einlesen.



StrammerMax93 hat gesagt.:


> Ein Anfang wäre mal einfach alles auszulesen was die Schnittstelle anbietet.


Brauchst du nicht extra, der Hersteller/Anbieter zeigt dir hier schon alles was möglich ist.
https://poloniex.com/support/api/[/QUOTE]


----------



## StrammerMax93 (19. Feb 2016)

Hm... ist wohl doch etwas zu aufwändig... sind einfach zu viele Themengebiete mit denen ich mich nicht auskenne.
Habe eine "professionelle" Version dafür gefunden. Diese soll jedoch ~ 260€ kosten.


----------



## Joose (19. Feb 2016)

Naja die andere Variante ist eben so wie ichs dir oben gezeigt habe den HTML Code (das beinhaltet auch ausgelieferte Daten) auslesen und parsen. Sollten dynamisch Daten nachgeladen werden per JS oder ähnliches musst du diese eben auch nachladen. Und HTML Parsen usw. macht es komplizierter als das Arbeiten mit der API. 
Aber wenn man bisher noch nie mit diesen Themen zu tun gehabt hat ist es sicherlich viel und schwer für den Anfang.


----------



## StrammerMax93 (19. Feb 2016)

Ich hätte mittleriweile auch eine Idee für die Chartanalyse...
Allerdings fehlt mir wie gesagt das Know-how für die Implementierung.

Welche Idee mir noch gekommen ist wäre folgende....
Da die Nachfrage nach solchen Tradingbots durchaus besteht und existierende Lösungen entweder sehr mangehlhaft oder sehr teuer (>200€) sind hatte ich daran Gedacht die Marktlücke mit einer gut funktionierenden aber auf den nötigen Basics belassenen Lösung zu schließen.

Der "Marktführer" in diesem Bereich kostet ~ 250€ - bietet dafür auch zig hundert Funktionen an (die die meisten User vermutlich überhaupt nicht nutzen). Er hat (schätzungsweise) ca. 200-300 Lizenzen für seine Software verkauft.
https://bitcointalk.org/index.php?topic=507103.0

Daher wäre meine Idee eine basic Variante für ~ 100€ anzubieten.
Außerdem besitzt keine vorhandene Lösung eine Chartbasierte Analyse. Dies wäre also der erste "intelligente" Trader.
Da mir wie gesagt das Wissen zur Umsetzung fehlt möchte ich hier mal nachfragen ob jemand interessiert wäre mit einzusteigen?
Ich würde dafür 60% der Verkaufserlöse anbieten - kann aber natürlich nicht garantieren dass wirklich viele verkauft werden.


----------



## Joose (19. Feb 2016)

Ein Jobangebot bitte im entsprechenden Forum erstellen (dort dann am besten auf diesen Thread verweisen), danke!


----------



## daybyter (14. Apr 2016)

So TradeBots schreib ich. Hab auch mal ne ältere Version einer Lib veröffentlicht, mit der ich auf so APIs zugreife:

https://github.com/aviau/cryptocoin-tradelib

Was Dir wohl vorschwebt, ist technical Trading, also Preisunterschiede über die Zeit. Dazu brauchst Du halt eine Referenz, wann ein Preis 'hoch' und wann 'niedrig' ist. Das übliche Verfahren an dieser Stelle ist das Benutzen zweier Durchschnitte. Also z.B. nimmt man den Durchschnittspreis der letzten 3 Wochen als Referenz und vergleicht den Durchschnittpreis des heutigen Tages. Es gibt zur Durchschnittsbildung verschiedene Verfahren. das einfachste ist SMA (einfacher Durchschnitt), ein Anderes ist EMA (da kommt ein exponentieller Faktor rein). Meist nimmt man EMA, und weil man traded, wenn die beiden Durchschnitte sich kreuzen (in einem Diagramm), nennt man dieses Verfahren dann EMA-Crossing. Goomboo hat da ausführlichst drüber geschrieben:

https://bitcointalk.org/index.php?topic=60501.0

Ein anderes Verfahren, welches mich eigentlich mehr interessiert, ist (triangle) Arbitrage. Hierbei sucht man Preisunterschiede über den Ort. D.h. etwas ist am Handelsplatz a billiger als bei b. Also kauft man am Ort a und verkauft an b.

Wenn Dich das Thema interessiert, kannst Du mir ja mal ne Mail schreiben: 

arueckert67@t-online.de


----------

