Jump to content
Jokin

Interessensabfrage: Wer möchte selber einen Tradingbot erstellen?

Empfohlene Beiträge

vor 8 Stunden schrieb Herr Coiner:

Da kommt zuerst MySql und dann MariaDB, nicht direkt "MariaDB anstatt MySQL".

Das ist nicht korrekt.

https://en.wikipedia.org/wiki/MariaDB

Die MariaDB ersetzt MySQL ... das ist aber nicht schlimm, da für den Enduser dies nicht erkennbar ist.

vor 8 Stunden schrieb Herr Coiner:

Beispiel gefällig

Au weia - mit Zeigern arbeiten? Das hab ich im Studium gehasst - das war schon enorm fehleranfällig seinerzeit.

vor 8 Stunden schrieb Herr Coiner:

Was mich sehr verwundert ist, das Free und Locked als Zeichenketten reinkommen statt als Zahlen. Das liegt an Binance, nicht an unserem API-Client. Was haben die sich wohl dabei gedacht? So kann man ja nicht vernünftig damit rechnen ohne vorher zu konvertieren.

Das ist aber bei sehr vielen Anwendungsfällen so, dass Gleitkommazahlen in Anführungszeichen übermittelt werden.

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
8 hours ago, Herr Coiner said:

Was mich sehr verwundert ist, das Free und Locked als Zeichenketten reinkommen statt als Zahlen. Das liegt an der Binance-API, nicht an unserem API-Client. Was haben die sich wohl dabei gedacht? So kann man ja nicht vernünftig damit rechnen ohne vorher zu konvertieren.

Man kann Zahlen als Binärdaten oder als Zeichenketten übertragen. Binärdaten sind immer heikel, weil verschiedene Prozessorarchitekturen und/oder verschiedene Fließkommaformate unterschiedliche Binärformate haben.

Folglich überträgt man alles als Zeichenketten und geht diesen ganzen Problemen aus dem Weg.

Man könnte jetzt noch darüber diskutieren, ob die JSON-Funktionen der jeweiligen Programmiersprache diese Zeichenketten wieder ins passende Binärformat zurückkonvertieren sollten.

Dann müsste die JSON-Datei aber für jede Zeichenkette auch die Typinformation enthalten. Da JSON als ein universales Austauschformat fungieren soll, hat man sich halt auf den kleinsten Nenner geeinigt - die verarbeitende Applikation als letzter Empfänger der Daten weiß, welche Variable was sein soll,  und kann deswegen die Konvertierung aufgebrummt bekommen.

  • Love it 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
17 minutes ago, Jokin said:

Au weia - mit Zeigern arbeiten? Das hab ich im Studium gehasst - das war schon enorm fehleranfällig seinerzeit.

Das ist Übungssache. Wenn man sich erst einmal daran gewöhnt hat, nervt es einen bei Sprachen ohne Zeigern, dass man es nicht sehen kann, ob ein Objekt jetzt als unveränderbarer Wert oder als Objekt, dessen Inhalte man ändern kann, übergeben wird.

Unter der Oberfläche arbeiten PHP, Python etc ja auch alle mit Zeigern, sie verstecken es nur vor dem Programmierer. Das ist einerseits unbestreitbar bequem(er), andererseits IMHO immer wieder auch "undeutlicher".

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 9 Stunden schrieb PeWi:

Man könnte jetzt noch darüber diskutieren, ob die JSON-Funktionen der jeweiligen Programmiersprache diese Zeichenketten wieder ins passende Binärformat zurückkonvertieren sollten.

Bekommt man denn in PHP auch nur Zeichenketten?

JSON kommt ja von Javascript, wo nicht viel Heckmeck um Datentypen gemacht wird. Wenn auch Binance die Zahlen als Zeichenketten liefert, dann sollte der Empfänger doch so früh wie möglich wieder Zahlen daraus machen. Ich überlege also, ob ich nicht vielleicht den API-Client entsprechend ändere, so dass er mir immer gleich Zahlen gibt. Das wäre wirklich einfacher.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
1 hour ago, Herr Coiner said:

 Ich überlege also, ob ich nicht vielleicht den API-Client entsprechend ändere, so dass er mir immer gleich Zahlen gibt.

Sei mir nicht böse, aber das ist keine gute Idee. Jedesmal, wenn der API-Client auf Github verändert wird - seien es Bugfixes, Erweiterungen oder EInpflegen von API-Änderungen bei Binance - musst du deine Änderungen per Hand wieder nachziehen oder auf die neue Version verzichten.

Behalte alle Konvertierungen in deinem Source, damit du beim API-Client jederzeit problemlos Updates verwenden kannst.

JSON ist absichtlich ein Austauschformat des kleinsten Nenners, weil es dann auf jedem System und mit jeder Sprache funktioniert - um den Preis einer gewissen Unbequemlichkeit.

  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 2 Stunden schrieb Herr Coiner:

Bekommt man denn in PHP auch nur Zeichenketten?

JSON kommt ja von Javascript, wo nicht viel Heckmeck um Datentypen gemacht wird. Wenn auch Binance die Zahlen als Zeichenketten liefert, dann sollte der Empfänger doch so früh wie möglich wieder Zahlen daraus machen. Ich überlege also, ob ich nicht vielleicht den API-Client entsprechend ändere, so dass er mir immer gleich Zahlen gibt. Das wäre wirklich einfacher.

PHP ist da total unkompliziert:

<?php
$foo = "3nix";
$bar = 4;
echo $foo + $bar;
?>

Die Ausgabe ist "7"

Wenn der Programmierer zu einem String etwas hinzuaddiert, dann konvertiert PHP von allein den String in eine Zahl so gut es geht.

 

bearbeitet von Jokin

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
16 minutes ago, Jokin said:

PHP ist da total unkompliziert

Mit anderen Worten:

Es schaut dir nicht auf die Finger, du musst selber aufpassen. :ph34r:

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 21 Minuten schrieb Jokin:

PHP ist da total unkompliziert: [...]

Wenn der Programmierer zu einem String etwas hinzuaddiert, dann konvertiert PHP von allein den String in eine Zahl so gut es geht.

Boah, noch frecher als Javascript, was immer noch meine Lieblingssprache ist :wub:.

Dieses Go geht mir schon langsam auf den Keks... nicht mal etwas wie

a = test ? 1 : 2;

gibt es da. Man muss es umständlich notieren:

if test {
  a = 1
} else {
  a = 2
}

Mittelalter oder was? Dachte erst Go ist eine coole, moderne Sprache.

bearbeitet von Herr Coiner
  • Thanks 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
1 hour ago, Herr Coiner said:

Man muss es umständlich notieren

Eben im Go-Playground ausprobiert - man darf's wenigstens einzeilig schreiben:

if test { a = 1 } else { a = 2 }

bearbeitet von PeWi

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich würde da gern einen kleinen Unterschied anmerken:

Für Anfänger ist die Langform deutlich einfacher nachvollziehbar und erlernbar.

Ich benutze nie die Kurzform.

Da ich eh meist mit Copy-Paste programmiere stört der längere Code auch nicht. Zumal auch in meinen anderen Projekten die meiste Tipperei für Kommentierungen drauf geht.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
2 hours ago, Jokin said:

Für Anfänger ist die Langform deutlich einfacher nachvollziehbar und erlernbar.

Das stimmt natürlich.

2 hours ago, Jokin said:

Ich benutze nie die Kurzform.

Das kommt bei mir auf die Situation an. Wenn das eine für den Programmfluss wichtige Verzweigung ist, dann auf jeden Fall ausführlich. Wenn es eine unbedeutende Verzweigung in einer sowieso schon längeren Funktion ist, dann nehme ich gerne die Kurzform, weil mir dann die Übersicht über das  ganze wichtiger ist.

bearbeitet von PeWi
  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Am 16.1.2019 um 22:33 schrieb Jokin:

Dennoch starte ich meinen Versuch nun bei Bruchteilen von BNB und eben jenen 10 ETH. Ich bin gespannt wie der Verlauf sein wird und wann sich das dann eingependelt hat.

Da lediglich Limit-Order gesetzt werden und keine Market-Order dürfte sich das noch recht lange hinziehen. Grob überschlagen wird es wohl ca. zwei Wochen dauern.
Zur Dokumentation nehme ich mal die aktuellen Kurse hier auf:
ETH: 123,33 USD
NEO: 7,76 USD

XLM: 0,107185  USD
IOTA: 0,304484  USD
BNB: 6,12 USD
XRP: 0,327879 USD 
ADA: 0,044706 USD

Aktueller Portfoliowert somit: ca. 1233 USD.

Minimal-Ziel muss es sein am Jahresende doppelt so viel Gewinn zu machen wie durch das reine HODL der 10 ETH entstanden wäre damit die Spekulationssteuer bezahlt werden kann.
(natürlich hängt das auch vom Kursverlauf des ETH ab ...)

Nun läuft dieser "Workshop"-Bot ca. 3 Tage und einfach mal ein erster Wasserstand was aus dem Bot für diejenigen wurde, die die Lektionen mit durchgearbeitet hatten und den Bot mit 10 ETH an die Arbeit schickten:

16.01.2019 - Start des BalanceBots:
10 ETH @ 123,33 USD (IST: unendlich % des Gesamt-Coinwertes, SOLL: 25%)
0 NEO @ 7,76 USD (IST: 0%, SOLL: 19%)
0 XLM @ 0,107185  USD (IST: 0%, SOLL: 18%)
0 IOTA @ 0,304484  USD (IST: 0%, SOLL: 17%)
0 BNB @ 6,12 USD (IST: 0%, SOLL: 16%)
0 XRP @ 0,327879 USD  (IST: 0%, SOLL: 15%)
0 ADA @ 0,044706 USD (IST: 0%, SOLL: 14%)
Gesamt-Portfoliowert: 10 ETH, also ca. 1233 USD (Kurse aus Coinmarketcap)

Minimal-Ziel muss es sein am Jahresende doppelt so viel Gewinn zu machen wie durch das reine HODL der 10 ETH entstanden wäre damit die Spekulationssteuer bezahlt werden kann.

Zwischenzeitlich arbeitet er an der Ausbalancierung, am Code habe ich nichts geändert und auch an den Einstellungen nichts.

20.01.2019 - 4 Tage nach Start des BalanceBots:
7,21 ETH @ 121,13 USD (IST inkl. openOrder: 211% des Gesamt-Coinwertes, SOLL: 25%)
8,32 NEO @ 7,68 USD (IST inkl. openOrder: 16,7%, SOLL: 19%)
401 XLM @ 0,1056  USD (IST inkl. openOrder: 15,1%, SOLL: 18%)
170 IOTA @ 0,3056  USD (IST inkl. openOrder: 13,7%, SOLL: 17%)
3,2 BNB @ 6,53 USD (IST inkl. openOrder: 10,0%, SOLL: 16%)
270 XRP @ 0,3248 USD  (IST inkl. openOrder: 25,4%, SOLL: 15%)
1,65 tsd. ADA @ 0,043 USD (IST inkl. openOrder: 19,1%, SOLL: 14%)
Gesamt-Portfoliowert: 10,02 ETH, also ca. 1213 USD (Kurse aus Coinmarketcap)

... nur leichte Kursveränderungen - während des Aufbaus ganz gut.
Schön zu sehen, dass ADA und XRP deutlich übergewichtet sind und weit über das SOLL hinausgeschossen sind. Das liegt daran, dass die Basiswährung ETH noch wesentlich weiter weg vom SOLL-Wert ist und der Bot versucht auch ETH möglichst schnell ins Ziel zu bringen. Im Idealfall ist jeder Coin und die Basiswährung gleich weit entfernt vom SOLL-Wert.

Pro Tag schafft der Bot also ca. 1 ETH auf die anderen Coins zu verteilen. Bei den gesetzten "25%" müsste es darauf hinauslaufen, dass 2 ETH an der Seitenlinie bleiben während 8 ETH auf die Coins verteilt sind.
Also vermutlich noch ca. 5 weitere Tage bis sich ein erstes Gleichgewicht eingestellt hat.

Ich poste dann auch mal das Diagramm auf dem man gut sehen kann wie sich die Bestände entwickelt haben. Ab dem ausbalancierten Zustand würde ich alle paar Tage mal einen Trade erwarten falls mal ein Coin gegenüber den anderen im Kurs stark abweicht.

  • Like 1

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.