Jump to content
Jokin

Wie baue ich einen Tradingbot?

Empfohlene Beiträge

vor 14 Minuten schrieb PeWi:

Einen Teil deiner Forderungen würde die Library ccxt abdecken, nämlich die Vereinheitlichung des Umgangs mit verschiedenen Börsen.
(Allerdings haben sie IIRC das Thema WebSockets erst auf der Roadmap, aber noch nicht implementiert.)

Das ist schon sehr umfassend und entsprechend anspruchsvoll zu verwirklichen.

Sollte das konkreter werden, und du dann Mitstreiter suchen, wäre ich interessiert. Mein Python-Werdegang ist ähnlich deinem; angefangen letzten Sommer, weil ich wissen wollte, wie so ein Bot funktioniert, und eigene Ideen ausprobieren wollte.

Ja die library hab ich mir vor langer Zeit auch schonmal angeguckt, damals waren sie natürlich noch weniger weit und ich habs dann alles selbst geschrieben.
Ich bin damals einen anderen Weg gegangen, also nicht alles in einheitliches Format zu packen, sondern für jeden API Call eine Übersetzer Funktion. Denn man merkt leider schnell, dass nicht alle API Calls vereinheitlichbar sind, da exchange a einen parameter oder eine info in der Antwort nicht unterstützt usw. So eine Übersetzer Fkt, bei der ich dann also garnicht versuche es einheitlich zu haben, hat den Nachteil, dass ich für jeden einzelnen exchange quasi "dasselbe" mehrfach schreiben muss, eben entsprechend angepasst. Und dies floss dann auch in die Strategie selbst mit ein. Mit dem was ich aktuell habe, kann ich nicht einfach so eine neue Strategie schreiben, weil alles viel zu spezifisch abgestimmt und verworren ist.

Deswegen nun die Entscheidung es doch so allgemein bzw so standardisiert wie möglich zu schreiben, damit ich mein Strategie-Portfolie ausbauen kann. Bei den meisten Calls wie Orderbook oder Placeorder ist das kein Problem. Probleme machen eher calls wie get_orders oder get_trades, die je nach exchange schon arg unterschiedlich sind.

Kennst du sowas wie Github wo man Code teilen und gemeinsam dran coden kann, ohne dass es öffentlich einsehbar ist? Ich glaub mit Github geht das auch, allerdings kostenpflichtig.
Ich habe eine ellenlange TODO Liste, von der ich aktuell täglich 1-2 Punkte abhacke, aber oftmals 3-4 Punkte länger wird. :D Bisher habe ich mir keine Unterstützung gesucht, weil alles zu sehr mit meiner Strategie verworren war, die ich nicht presigeben wollte. Aber aktuell versuche ich ja gerade es vollkommen unabhängig von der Strategie zu entwickeln, weshalb ich mir schon vorstellen könnte, meine Skripte und Todo liste hochzuladen und ausgewählte Personen helfen mir dann bei der Umsetzung (und können als Belohnung dann selbst das Konstrukt verwenden)

Wobei ich ehrlicherweise wieder mit mir hadere :D Ich bin schon recht weit was das Konstrukt angeht (ca. 50% bei zig Monaten Arbeit). Zwar könnte durch die Zusammenarbeit die Fertigstellung verschnellert werden, aber ich teile dennoch ein potentiell sehr gutes Konstrukt mit potentieller Konkurrenz. Vllt würde ich also nicht gleich alles hochladen, sondern nur Teile bei denen ich Hilfe brauche... hmm..

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Am 17.12.2018 um 02:20 schrieb Serpens66:

ich hab mir programmieren 2014 grob selbst beigebracht, wobei ich nur das nehme, was ich akut brauche. Deswegen hat mein aktueller Bot auch sogut wie keine Struktur und ich habe auf irgendwelche Regeln zum programmieren gepfiffen, bzw nicht verstanden, warum man zb überhaupt mehrere Skripte kombiniert, anstatt einfach alles in ein Skript zu klatschen (mein Bot hat 30k codezeilen). Akuell bin ich dabei es zu verstehen und versuche nun Struktur reinzubringen.

Wow, 30K Codezeilen... womöglich in einem einzigen langen Script mit unzähligen verschachtelten if-else... mir schwant Übles. Das ist der Horror für jeden geübten Programmierer. Solcher Code ist praktisch nicht zu warten und nach kurzer Zeit versteht selbst der, der ihn geschrieben hat nicht mehr, was das Programm eigentlich macht. Stuktur ist das A & O beim Programmieren: Man sollte alles in kleinen, überschaubaren und mehrfach verwendbaren Häppchen halten.

vor 9 Minuten schrieb Serpens66:

Denn man merkt leider schnell, dass nicht alle API Calls vereinheitlichbar sind, da exchange a einen parameter oder eine info in der Antwort nicht unterstützt usw. So eine Übersetzer Fkt, bei der ich dann also garnicht versuche es einheitlich zu haben, hat den Nachteil, dass ich für jeden einzelnen exchange quasi "dasselbe" mehrfach schreiben muss, eben entsprechend angepasst. Und dies floss dann auch in die Strategie selbst mit ein. Mit dem was ich aktuell habe, kann ich nicht einfach so eine neue Strategie schreiben, weil alles viel zu spezifisch abgestimmt und verworren ist.

Ja, Verwirrung und mehrfach gleicher Code entsteht, wenn man überall irgendwelche Sonderfälle mit if-else oder so abdecken will. In einer objektorientierten Sprache erstellt man z.B. eine Basisklasse, die alles beinhaltet, was für die versch. Exchanges gleich ist. Für jeden Sonderfall erstellt man dann jeweils eine neue Klasse, die einfach von der Basisklasse erbt und die speziellen Variablen/Methoden noch zusätzlich hat. Diese können bei Bedarf wieder voneinander abgeleitet sein.

  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 1 Stunde schrieb Serpens66:

Kennst du sowas wie Github wo man Code teilen und gemeinsam dran coden kann, ohne dass es öffentlich einsehbar ist? Ich glaub mit Github geht das auch, allerdings kostenpflichtig.

Schau mal bei GitLab.com 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
On 12/19/2018 at 12:09 PM, wilson76 said:

Schau dir die YouTube Videos von Sentdex zum Thema Python und Tensorflow an :)

https://pythonprogramming.net/tensorflow-neural-network-session-machine-learning-tutorial/

Der hat unzählige Videos zu dem Thema und erklärt das hervorragend.

Wow, ok.... das ist ganz schön heftig. Ich dachte eher an einen bot, der so Seiten wie https://enroyd.com/Sentiment  scannt. Gibt es in Python entsprechende Module, die Websiten scannen können? Weisst du das zufällig?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor einer Stunde schrieb theo_crypto:

Wow, ok.... das ist ganz schön heftig. Ich dachte eher an einen bot, der so Seiten wie https://enroyd.com/Sentiment  scannt. Gibt es in Python entsprechende Module, die Websiten scannen können? Weisst du das zufällig?

ah, dann hatte ich dich falsch verstanden gehabt.

Die Webseite brauchst du gar nicht scannen. Die Informationen bekommst du auch per JSON direkt über die URL https://enroyd.com/wp-admin/admin-ajax.php?action=get_wdtable&table_id=85. Schau dir einfach mal im Browser die Ajax XHR requests mit den Dev-Tools an ;)

für BTC sieht das dann so aus:
 

       [
            "1",
            "BTC",
            "<img src=\"https://enroyd.com/wp-content/uploads/2018/02/btc-e1517957118573.png\"><br>BTC",
            "<a data-content='Bitcoin' href='https://enroyd.com/BTC_Sentiment' target='_self'>Bitcoin</a>",
            "very<br>negative",
            "123",
            "4",
            "11",
            "3",
            "226",
            "367",
            "very<br>negative",
            "1,108",
            "80",
            "58",
            "20",
            "1,771",
            "3,037",
            "very<br>negative",
            "12,218",
            "836",
            "648",
            "230",
            "20,620",
            "34,552"
        ],

 

  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Oops, gerade erst gemerkt, dass es schon längst eine neue Seite gibt ...

On 12/31/2018 at 1:49 PM, Serpens66 said:

Bisher habe ich mir keine Unterstützung gesucht, weil alles zu sehr mit meiner Strategie verworren war, die ich nicht presigeben wollte.

Das Rebalancing aus dem Thread, den du neulich verlinkt hast? 😉

On 12/31/2018 at 1:49 PM, Serpens66 said:

Bisher habe ich mir keine Unterstützung gesucht, weil alles zu sehr mit meiner Strategie verworren war, die ich nicht presigeben wollte. Aber aktuell versuche ich ja gerade es vollkommen unabhängig von der Strategie zu entwickeln, weshalb ich mir schon vorstellen könnte, meine Skripte und Todo liste hochzuladen und ausgewählte Personen helfen mir dann bei der Umsetzung (und können als Belohnung dann selbst das Konstrukt verwenden)

Wobei ich ehrlicherweise wieder mit mir hadere :D Ich bin schon recht weit was das Konstrukt angeht (ca. 50% bei zig Monaten Arbeit). Zwar könnte durch die Zusammenarbeit die Fertigstellung verschnellert werden, aber ich teile dennoch ein potentiell sehr gutes Konstrukt mit potentieller Konkurrenz. Vllt würde ich also nicht gleich alles hochladen, sondern nur Teile bei denen ich Hilfe brauche... hmm..

Sowas ist zugegebenermaßen eine schwierige Entscheidung.

 

Bitte das nachfolgende nicht als Werbung verstehen - so ist es nicht gemeint -  sondern als Grundlage, auf der man sich fundierter austauschen kann.


Ich bin irgendwann im Frühjar 2018 über ein paar interessante Artikel aus dem Aktien-Trading gestolpert und habe dann bald beschlossen, die Ideen im Crypto-Umfeld auszuprobieren.

Da ich bot-technisch mit Gunbot und ProfitTrailer "aufgewachsen" bin, die ihren Entwicklern ein hübsches Sümmchen eingebracht haben,  und mir im Herbst 2016 mehrere einfache Python-Bots für Poloniex gebaut hatte, hatte ich von vorneherein den Gedanken, meinen neuen Prototypen mit einem Auge auf eine spätere Kommerzialisierung zu entwickeln.

Deswegen ist er halbwegs modular aufgebaut. 😉

Er hat einen steuernden Rahmen, der die Hauptschleife beinhaltet und alle anderen Module aufruft.

Es gibt ein Exchange-Modul, das dank der ccxt-Library theoretisch gegen viele Börsen funktionieren sollte. Gegen Binance habe ich alles entwickelt, da läuft es. Poloniex ging mit einer kleinen Anpassung. Mit Bittrex habe ich noch unüberbrückbar viele Schwierigkeiten - soviel zum Unterschied zwischen Theorie und Praxis. 😉

Die Strategie ist ebenfalls in einem Modul gekapselt und dank festgelegter Schnittstellen austauschbar. Derzeit entwickle ich am dritten Strategiemodul, ein viertes ist in Planung.

Noch ist die Benutzung des Bots ziemlich spartanisch - Konfiguration über Text-Configs, Meldungen über Telegram, keine Weboberfläche, keine Apps. Trotzdem haben sich schon 8 mutige gefunden, die mit dem bisherigen Stand zufrieden sind, Lizenzen erworben haben und den Bot ebenfalls laufen lassen (mit dem Strategie-Modul 2).


Würde insofern vermutlich gut zu deiner vorgestellten Richtung passen, wenn nicht das Handicap mit der Kommerzialisierung wäre. In der Schiene möchte ich auch weiterfahren, weswegen ich meine Quelltexte auch nicht weitergeben würde.
So wie du auch deine bisherige Strategie verständlicherweise für dich behalten möchtest.


Trotzdem spricht natürlich nichts dagegen, das bisher erworbene Knowhow und diverse dortige Ideen in ein neues, gemeinsames Projekt einfließen zu lassen, soweit es meine Zeit hergibt.


Inwieweit das funktionieren würde, müsste man halt austüfteln. Wenn du nur Teile hochlädst, bei denen du Unterstützung möchtest, ist das für andere ungleich weniger befriedigend mitzuhelfen, als wenn man am Ganzen mitarbeiten kann. Insofern wäre ein zumindest rudimentär lauffähiges ganzes schon schöner. Kann ja auch ein Dummy-Strategiemodul sein, das ein simples Patent ala kreuzende EMAs oder zufälliges Kaufen und Verkaufen enthält. 😉

bearbeitet von PeWi
  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
On 1/1/2019 at 1:47 PM, wilson76 said:

ah, dann hatte ich dich falsch verstanden gehabt.

Die Webseite brauchst du gar nicht scannen. Die Informationen bekommst du auch per JSON direkt über die URL https://enroyd.com/wp-admin/admin-ajax.php?action=get_wdtable&amp;table_id=85. Schau dir einfach mal im Browser die Ajax XHR requests mit den Dev-Tools an ;)

für BTC sieht das dann so aus:
 


       [
            "1",
            "BTC",
            "<img src=\"https://enroyd.com/wp-content/uploads/2018/02/btc-e1517957118573.png\"><br>BTC",
            "<a data-content='Bitcoin' href='https://enroyd.com/BTC_Sentiment' target='_self'>Bitcoin</a>",
            "very<br>negative",
            "123",
            "4",
            "11",
            "3",
            "226",
            "367",
            "very<br>negative",
            "1,108",
            "80",
            "58",
            "20",
            "1,771",
            "3,037",
            "very<br>negative",
            "12,218",
            "836",
            "648",
            "230",
            "20,620",
            "34,552"
        ],

 

Cool, danke!

Aber irgendwie funktioniert das jetzt nicht mehr.... kannst du noch mal nachschauen?

danke!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×

Wichtige Information

Wir speichern Cookies auf Ihrem Gerät, um diese Seite besser zu machen. Sie können Ihre Cookie-Einstellungen anpassen, ansonsten gehen wir davon aus, dass Sie damit einverstanden sind. In unseren Datenschutzerklärungen finden sie weitere Informationen.