Zum Inhalt springen

Wie baue ich einen Tradingbot?


Jokin

Empfohlene Beiträge

  • 1 Monat später...

Der läuft noch, hab's aber etwas zurück gefahren, da ich einerseits das Kapital an anderer Stelle sinnvoller einsetze und da der Algorithmus bei Kurssprüngen nicht so toll funktioniert - in den Fällen macht er Minus, was ich aber noch nicht sauber analysieren kann.

Ich beobachte das auch nicht mehr täglich, der hält nun meinen Umsatz oben damit ich Gebühren spare und grob über den Daumen gepeilt ist das eine Nullnummer. Also was er während der Kurssprünge verliert, das Gewinne ich an anderer Stelle wieder mit geringerem Umsatz aber höherer Marge.

 

  • Thanks 1
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb battlecore:

Siehst du eine Chance das ermit Bärenmarkt bzw fallenden Kursen zum brauchbar richtigen Zeitpunkt kauft?

 

Nö, da ich keine Algorithmus für Tradingstrategien drin habe.

Ich unterstelle einem Kurs, dass er rauf und runter geht und stelle Order auf beiden Seiten ein und gehe davon aus, dass die Bewegung beide Order erfüllt.

Daher ist eine Seitwärtsbewegung optimal, der Rest Glückssache.

Mir ging es ja auch nur um die Erhöhung des Handelsvolumens. Die Gewinne mache ich anderweitig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich wollte mal kurz ein Danke da lassen. Eigentlich hatte ich etwas ganz anderes gesucht, bin aber irgendwie über diesen Thread gestolpert und war erstaunt mit wie wenig Code du deinen Bot umgesetzt hast. Konnte also nicht die große Hexerei sein. Da ich mit Gekko sowieso nicht ganz zufrieden bin (arbeitet mir zeitlich zu ungenau) habe ich mich auch daran gemacht einen eigenen Bot zu schreiben. Danke also für diese Inspiration, @Jokin. Ein spannendes, wenn auch sehr datenlastiges Thema.

Handeln darf meiner allerdings (noch?) nicht. Momentan errechnet er nur aus den Trades der definierten Coins Trade-Empfehlungen gemäß meiner Strategie und sendet bei Handlungsbedarf eine Benachrichtigung. Die Trades führe ich dann manuell aus. Wie unschwer zu erraten sein dürfte handle ich in einer größeren Zeiteinheit als du. Ich habe bloß keine Lust beim Frühstück alle Euro-Paare auf Kraken durchzuklicken :)
Geschrieben ist er ebenfalls in PHP und gehostet wird derzeit auf eigener Infrastruktur – bei meinem Lieblingshoster ist mir für diesen Zweck die Datenbankverbindung zu langsam.

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Stunden schrieb jfuyuv:

Momentan errechnet er nur aus den Trades der definierten Coins Trade-Empfehlungen gemäß meiner Strategie und sendet bei Handlungsbedarf eine Benachrichtigung. Die Trades führe ich dann manuell aus. 

Sehr gut!

Eigene Strategie + manuelle Prüfung vor Ausführung.

Willkommen im Club ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Datenberg wächst... Mittlerweile sitze ich auf über 1,55 Millionen importierten Trades und lasse 11 Paare automatisiert überwachen. Glücklicherweise ist das alles nur Text und die Datenbank daher noch keine 150 MB groß.

Nachdem ich diese Woche noch etwas mehr Fehlerbehandlung eingebaut habe sind meine Skripte mittlerweile sehr robust geworden. Daran sollte man unbedingt denken wenn man selbst einen Bot entwickeln möchte.

Was jetzt noch fehlt wäre ein wenig price action to da moon, damit der Bot auch mal eine Richtungsänderung vorschlagen kann und ich nicht immer nur Short in den Logs lesen muss :wacko:

  • Thanks 1
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Tja, mein Wunsch war offenbar etwas unüberlegt. Wenig später nach meinem Post kam ja die gewünschte price action, die zwar in die richtige Richtung lief, aber leider gleich wieder auf eine kaum erwähnenswerte Kerze zusammen schrumpfte.

Die Menge der Trades in sehr kurzer Zeit zeigte mir allerdings, dass ich noch etwas an der Struktur ändern musste. Zuvor arbeitete ich die definierten Paare nacheinander ab, was dazu führte, dass das hohe Tradevolumen bei Bitcoin und Ethereum auch die anderen Watcher temporär blockierte. Daher laufen die einzelnen Watcher und Advisor jetzt parallel und setzen Lock-Files auf Paar-Ebene, damit der Watcher eines Paares nicht auch alle anderen lahm legt.

Je nachdem was man mit einem Bot machen möchte muss man offenbar so einiges bedenken :)

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

Tjo, und wenn man mit dem ersten selbst gestrickten Bot ausreichend gelernt hat und dann weiß was man eigentlich braucht (und was nicht) schreibt man nochmal einen. Das habe ich gestern Abend getan und heute weiter verfeinert. Das bisherige Ergebnis gefällt mir ganz gut: ist noch näher an meiner manuellen Strategie, benötigt weniger Ressourcen, hat weitere Funktionen bekommen und besteht trotzdem aus nur halb so vielen Codezeilen. Alternativ hätte ich natürlich auch vorher alles ausgiebig und ordentlich durchplanen und dann gleich richtig machen können. Naja. Etwas gelernt zu haben ist auch was wert.

Das Konstrukt beobachte ich jetzt mal 1-2 Wochen. Wenn ich dann das nächste Mal etwas Zeit habe versuche ich mich mal an automatischen buys/sells. Der Einfachheit halber zum probieren mal mit Minibeträgen und per Marketorder. Er muss ja nicht hoch-profitabel sein sondern soll einfach nach und nach besser werden und mir mein Mittagessen verdienen :D

  • Love it 1
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 11 Minuten schrieb jfuyuv:

Er muss ja nicht hoch-profitabel sein sondern soll einfach nach und nach besser werden und mir mein Mittagessen verdienen :D

Genau meine Einstellung ?

... meinen Bot hab ich deaktiviert, da ich mein Kapital nicht länger binden wollte und mir das Umsatzvolumen gerade nicht hilft.

  • Love it 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Guten Tag, hiermit möchte ich sagen, dass es hier nach Spam stinkt ;)
Für Leser aus der Zukunft: über meinem ist/war ein anderer Post, der mit den gleichen Worten begann.

Mein kleines Hobby-Projekt generiert mittlerweile echte Trades auf Kraken und hat bereits die ersten 2 Euro Verlust gemacht :D Verglichen mit buy+hold wäre das seit dem Start durchaus gut gewesen, aber an der einen oder anderen Schraube muss ich wohl noch drehen.

Wer sich selbst einen Bot schreiben will und mit irgendwelchen Linien und Kerzen arbeitet: überlegt ganz genau wie ihr den Chart anseht und wie man das in mathematische Formeln pressen kann. Wert1 minimal und kaum erkennbar > Wert2 ergibt bei einem Computer True, wenn man mit eigenen Augen drauf schaut verwirft man den Trade aber möglicherweise oder wartet auf weitere Bestätigung, weil er nicht sicher genug scheint. Wenn man darauf Wert legt muss man das dem Blechtrottel auch irgendwie beibringen.

Ich lass ihn jetzt erst mal wieder laufen und bewerte den Erfolg (oder Nicht-Erfolg) in ein paar Tagen/Wochen. Entweder macht er bis dahin aus dem kleinen 3-stelligen Betrag ein Vermögen oder ich habe etwas gelernt :lol:

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Vorhin begonnen: ein Bot, der auf Basis einer simplen Strategie BitMEX Lending-Empfehlungen senden soll. Macht im Grunde schon was er soll und wird jetzt mal beobachtet. Support für automatisierte Order fehlt noch und wird ggf. später nachgerüstet. Einstweilen sinds lächerliche 168 Zeilen Code, wovon knapp 60 auf Benachrichtigungen und Logging entfallen. Gefällt mir :)

  • Love it 1
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hat jemand Lust öffentlich oder privat eine sogut es geht perfekte allgemeine Struktur für einen Bot zu entwickeln, auf der jede beliebige Tradingstrategie aufgesetzt werden kann?

Also es geht weder um die eigentliche Tradingstrategie, noch um API Anbindungsskripte selbst, sondern um das was übrig bleibt :D
Also zb habe ich mir aktuell ein APIManager Skript ausgedacht, welches quasi die Schnittstelle zwischen Strategieskript und API Skript bilden soll.
Einmal ist das natürlich da, um die API Antworten von diversen Exchanges zu vereinheitlichen, sodass das Strategieskript immer mit demselben Format arbeiten kann.
Zum anderen ist es auch dafür da, zb die API Call Limits im Auge zu behalten, dass nicht mehr gemacht wird als erlaubt. Und auch wenn mehrere untersch. Strategien auf demselben Exchange laufen, dafür Sorge zu tragen, dass diese sich nicht in die Quere kommen. Und dass nicht jedes Strategie Skript die Balance/Orderbooks selbst vom exchange abfragt, sondern sie eben vom Manager bekommt, welcher nur wenn wirklich nötig die Orderbooks nochmal abruft (je nach dem wie aktuell die jeweilige Strategie die Daten braucht) und evlt auch die Balance selbst berechnet (wobei das 100% exakt sogut wie unmöglich ist, aufgrund diverser undokumentierter Rundungsmechanisem von exchanges).
Das ganze wird dann natürlich noch um einen WSManager (websocket) ergänzt, welcher die ganzen websocketskripte im Auge behält, evtl neustartet, bzw standardisiert,

Man muss sich also ein einheitliches Format für alles überlegen (das meiste hab ich schon), aber auch eine allgemeine Fehlerbehandlung einführen, sei es Fehler die der exchange returned, oder Verbindungsfehler, oder Codefehler. Man muss sich auch überlegen, wie das alles ineinander greift und welches das Hauptskript sein soll, welches die gewünschten weiteren Skripte startet.

Letzlich will ich eine Hintergrundstruktur haben, mit der ich tatsächlich beliebig viele neue Strategien in Minuten zusammenzimmern und laufen lassen kann (so wie ihr es hier im Thread ja suggeriert). Die eigentliche Arbeit ist eben dieses Konstrukt im Hintergrund. Das muss man sich einmal perfekt ausdenken, wie was ineinander greift, und es dann natürlich auch noch programmieren.

An sich habe ich mir grobe Gedanken zu dem Konstrukt gemacht, aber beim Programmieren fällt einem dann immer mal wieder auf, dass das so dann doch nicht funktioniert und man verwirft wieder stundenlange Arbeit. Deswegen hoffe ich, dass wir ein Konzept entwerfen können, was wirklich allem standhält und ich dadurch effizienter mit Zielsetzungen arbeiten kann.

PS:
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.

Bearbeitet von Serpens66
  • Like 3
Link zu diesem Kommentar
Auf anderen Seiten teilen

On 6/27/2018 at 6:37 PM, Jokin said:

Ja, die Idee ist nicht schlecht, jedoch st das der klassische Ansatz anhand von Signalen zu traden. Dabei wird jedoch die eigene Balance vollkommen ignoriert.

Daher verfolge ich einen anderen Ansatz, den ich spaeter beschreiben wollte - aber nun gut, warum nicht jetzt ?

Folgende Tradingpraemissen gelten bei jeder Strategie:

1. Keine Arme keine Kekse.
Das heisst konkret: Wenn ich keine Euros habe, kann ich keine Coins kaufen und wenn ich keine Coins habe, kann ich keine Coins verkaufen.
Dies wiederum fuehrt zu meinem obersten Trading-Grundsatz: "Bleibe handlungsfaehig". Wenn ich nicht mehr handlungsfaehig bin, nuetzen mir die besten Signale nix, mehr als Papertrading geht einfach nicht.

2. Bewegung macht fit.
Vom Zuschauen kann ich nicht fit werden. Also braucht es immer Bewegung. Fuer mich gibt es keinen "besten Einstiegspunkt", da ich erst irgendwann in der Zukunft sehe ob ich nun gut oder schlecht verkauft habe.
Somit muss ich mich permanent bewegen. Mal habe ich Glueck, mal habe ich Pech. Nicht jeder Trade gelingt - nur in Summe sollte das schon positiv sein.

3. Mir doch egal.
Emotionen sind der Tod jedes Trades. Wer versucht mit hoeherem Risiko Verluste auszugleichen, der rennt irgendwann gegen eine Wand. Daher ist es wichtig "loszulassen" und Verluste auch mal einfach "zu akzeptieren". Sie kommen irgendwann einmal zwangslaeufig. (und ja, es gibt Strategien, die fuehren grundsaetzlich zu risikofreien Gewinnen, "Arbitrage" ist eine davon - darum geht es hier jedoch nicht)
Wer gelernt hat sich von Verlusten gedanklich zu trennen, kann sich auch von Gewinnen gedanklich trennen. Damit lassen sich Emotionen komplett ausschalten.
Dazu gehoert auch, dass ich alte Trades vergesse und diese nach einer Weile nicht mehr zur Ermittlung des durchschnittlichen Anschaffungspreises heranziehe, getreu dem Motto "Was interessiert mich der Schnee von gestern?"

4. Keep balanced.
Ich kann nur "handlungsfaehig" bleiben indem ich mein Portfolio permanent ausbalanciere. Und ich kann mein Portfolio nur dann ausbalancieren, wenn ich auch verluste akzeptieren kann, die ich bewusst mache um handlungsfaehig zu bleiben.
Das perfekte Portfio eines Traders ist ausbalanciert. geraet es aus der Balance, dann werden die Bewegungen asymetrisch, also weniger kaufen und mehr verkaufen oder anders herum und dies dann auch mit geringerer Marge in die eine richtung als in die andere Richtung.

 

All diese Praemissen fuehren dazu, dass "die Moeglichkeit" besteht Gewinne zu erwirtschaften. Ich konzentriere mich grundsaetzlich mehr auf das was ich jetzt in diesem Augenblick habe als auf das was die Kurse in der Vergangenheit gemacht haben.

Ich versuche gar nicht erst die Kurse sehr genauc vorher zu sagen. Die einzige Vorhersage, die ich unterstelle ist, dass ein Kurs innerhalb seines 24h-Minimums und 24h-Maximums schwankt und je dichter der Kurs an dem einen oder anderen Extremwert liegt desto wahrscheinlicher ist es, dass der Kurs sich wieder in Richtung des anderen Extremwertes bewegt. Dafuer benoetige ich naemlich noch keine komplizierten Berechnungen, da diese 3 Werte direkt von Kraken uebermittelt werden.

Bitte nicht falsch verstehen - ich bin kein Hardcore-Trader sondern eine faule Sau und will auch nicht das Maximum rausholen, sondern arbeite mehr nach "Masse statt Klasse" - und dafuer ist es dann leider zu muessig permanent von Hand die Parameter fuer die Order zu berechnen.

Aktuell tippe ich wie ein bekloppter auf dem taschenrechner rum um meien Order-Parameter zu erhalten, die ich dann haendisch bei Kraken eingebe. Der naechste Schritt ist also, dass mein Bot die Orderparameter selber errechnen soll und mir einen Vorschlag macht.

Danach ist der naechste Schritt, dass ich diesen Vorschlag editieren kann und dann ueber meinen Bot an kraken sende.

Und dann ist der Weg nicht mehr weit, dass der Bot von Zeit zu Zeit selber mal die Situation checkt und die Order selber berechnet und an kraken sendet.

Fertig ist mein neuer Trading-Bot 🙂

(ok, ganz so einfach ist das dann auch nicht ...)

 

das beste, was ich hier im Forum bisher lesen konnte! Gerade der 4. Punkt. keep going 

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

4 hours ago, wilson76 said:

@Serpens66 du würdest es sicher in python coden oder ?!  

Hast du Erfahrung damit? Ich würde gerne mal an einem Tradingbot versuchen.

Ich bin mir aber nicht sicher, wie komplex die ganze Sache ist.

Ist Machine Learning dafür gut? Ich würde gerne mal versuchen, was diese Typen hier gemacht haben: https://enroyd.com/ETH_Predictions/

Ist das schwierig?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Stunden schrieb wilson76:

@Serpens66 du würdest es sicher in python coden oder ?!  

ja in python. Allerdings denke ich gerade noch garnicht so weit. Ich dachte fürs erste an einen Strukturplan. Nen Freund hatte mir dafür "pap-diagramme" empfohlen (google bilder:  https://www.google.com/search?q=pap+diagramme&client=firefox-b&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiFuf-fo6rfAhWBFCwKHUEAA7MQ_AUIDigB&biw=1472&bih=665#imgrc=751q0FMSj8hYlM: )

Sowas in der Art könnte man erstmal veruschen und dabei möglichst alle Fälle abdecken. Erfahrung mit exchanges, was es alles für sonderbare Spezielfälle geben kann, habe ich schon viel gesammelt. Nur elegante Lösungsansatze fehlen oft, meist endet das dann darin, dass ich ein allgemeines Konzept entwerfe, es dann aber für exchange x doch wieder anders funktioniert und y hat diese extraregelung, weshalb es ein einziges rumgeflicke ist.  Ich hätte gern möglichst elegant alles abgedeckt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...
On 12/17/2018 at 2:20 AM, Serpens66 said:

Also zb habe ich mir aktuell ein APIManager Skript ausgedacht, welches quasi die Schnittstelle zwischen Strategieskript und API Skript bilden soll.
Einmal ist das natürlich da, um die API Antworten von diversen Exchanges zu vereinheitlichen, sodass das Strategieskript immer mit demselben Format arbeiten kann.

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.)

On 12/17/2018 at 2:20 AM, Serpens66 said:

Zum anderen ist es auch dafür da, zb die API Call Limits im Auge zu behalten, dass nicht mehr gemacht wird als erlaubt. Und auch wenn mehrere untersch. Strategien auf demselben Exchange laufen, dafür Sorge zu tragen, dass diese sich nicht in die Quere kommen. Und dass nicht jedes Strategie Skript die Balance/Orderbooks selbst vom exchange abfragt, sondern sie eben vom Manager bekommt, welcher nur wenn wirklich nötig die Orderbooks nochmal abruft (je nach dem wie aktuell die jeweilige Strategie die Daten braucht) und evlt auch die Balance selbst berechnet (wobei das 100% exakt sogut wie unmöglich ist, aufgrund diverser undokumentierter Rundungsmechanisem von exchanges).
Das ganze wird dann natürlich noch um einen WSManager (websocket) ergänzt, welcher die ganzen websocketskripte im Auge behält, evtl neustartet, bzw standardisiert,

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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..

Link zu diesem Kommentar
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
Link zu diesem Kommentar
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?

Link zu diesem Kommentar
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
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...
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&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!

Link zu diesem Kommentar
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
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.