Zum Inhalt springen

Herr Coiner

Mitglied
  • Gesamte Inhalte

    104
  • Benutzer seit

  • Letzter Besuch

Beiträge von Herr Coiner

  1. Da unterscheiden wir uns. Ich bin Perfektionist. Das hat den Nachteil, dass es immer etwas länger dauert, dafür ist es dann in der Regel auch perfekt. In meinem Job ist das wichtig: Wenn ich fehlerhafte Arbeit liefere, und seien es auch nur Kleinigkeiten kosmetischer Art oder so, dann gibt's früher oder später Mecker von den Kunden, und das macht natürlich keinen guten Eindruck.

    Erfahrungsgemäß gehen die ersten 80% immer ziemlich schnell, dann wird's zunehmend mühsamer und für die letzten paar Prozent bis zur Perfektion verdoppelt sich direkt der Aufwand, den man bis dahin schon hatte :(

    Den Zufall sollte übrigens man nicht unterschätzen... der bringt so einiges zustande, was man erst mal für total unwahrscheinlich hält, und das dann auch noch geballt. Ein schönes Beispiel ist das sog. Geburtstagsparadoxon: „Befinden sich in einem Raum mindestens 23 Personen, dann ist die Chance, dass zwei oder mehr dieser Personen am gleichen Tag (ohne Beachtung des Jahrganges) Geburtstag haben, größer als 50 %.“ Das kommt einem irgendwie falsch vor, aber es stimmt.

    Zurück zum Bot:
    Man könnte doch auch einfach alle freien Coins verkaufen, wenn die gewünschte Menge nicht verfügbar ist, etwa so:

    $amount = min($amont, $__balanceBot_basecurrency['free'])

     

  2. @Jokin 

    Noch was...

                // Abschnitt index.php 12.2.1.2.1:
                // prüfen ob ich überhaupt genug Coins zur Verfügung habe
                if ($__balanceBot_coins[$key]['free'] > $amount)
    

    Müssen wir wirklich mehr freie Coins haben als wir verkaufen wollen?
    Es sollte doch auch klappen, wenn wir gerade genügend haben:

    if ($__balanceBot_coins[$key]['free'] >= $amount)

     

  3. vor 13 Minuten schrieb Jokin:

    Oh, da ist mir echt noch was durchgerutscht ... 😞

    Mach "$symbol" draus, wie im Abschnitt darüber: [...]

    Sorry, diese Nachlässigkeit geht auf meine Kappe - Auswirkungen auf den Programmcode hat das nicht, dadurch fehlt lediglich ein Teil in der Ausgabe.

    Danke, kein Problem. Das ist der Vorteil von Open Source: Mehr Augen sehen auch mehr. So geht die W'keit für Fehler zielstrebig gegen 0 :).

  4. Am 12.1.2019 um 21:36 schrieb Jokin:

    // Abschnitt index.php 12.2.2.2.:  
    [...]
    $message
    = " ... Erstelle Order: $side ".number_format($amount, $__balanceBot_coins[$key]['minQtyPrecision'], '.', '')." @ $price $market (aktueller Kurs: ".$__balanceBot_coins[$key]['price'].") ";

    @Jokin Frage: Woher kommt hier  $market?

    Im ganzen Code wird diese Variable anscheinend nirgends angelegt  bzw. befüllt.

    Ich nehme mal an, dass PHP automatisch Variablennamen wie $side etc. in der Zeichenkette durch die entsprechenden Werte ersetzt. Gibt es dann keine Fehlermeldung, wenn z.B. $market nicht existiert? 

  5. vor 9 Minuten schrieb Mr. Risiko:

    das ist mir schon klar. am sichersten ist immer der offlinewallet auf der festplatte.
    es geht mir um den paperwallet, welches durch bitadress.org bezogen werden kann.

    Das war mir nicht klar. Es ging mir darum deine Fragen zu beantworten, nicht in der Kristallkugel deine Gedanken zu lesen, sorry.

    • Like 1
  6. vor 29 Minuten schrieb Mr. Risiko:

    bitaddress.org kenn ich schon extrem lange, jedoch habe ich da einige fragen.

    wie ich sehe werden die adressen durch zufall generiert. wie kann ich denn sicher sein, dass dies sicher passiert und keiner ebenfalls die private key lesen kann.
    [...]
    und in der fußzeile steht außerdem, dass die ganze sache ohne gewähr behandelt wird.

    Das Programm sollte man runterladen und auf einem Rechner ausführen, der nicht mit dem Internet verbunden ist, d.h. offline. Das wurde hier schon mehrfach erwähnt und es steht auch auf der Website. Dann kann jedenfalls niemand mitlesen welche Schlüssel erzeugt werden. Logisch, oder?

    Nach dem Runterladen kann man überprüfen, ob in der empfangenen Datei wirklich genau das steht, was drin stehen soll. Die Prozedur ist dort relativ knapp auf englisch beschrieben. Technisch weniger versierte dürften wohl Probleme damit haben. Selber habe ich das noch nicht ausprobiert.

    Wirklich sicher sein kannst du aber nur, wenn du den Quellcode verstehst und nachvollziehst. Das dürfte leider nur wenigen Spezialisten gelingen. Hier ist halt Vertrauen nötig in die bis anhin 17 Entwickler, die das Ding programmiert haben. Denkbar wäre wirklich, dass die erzeugten Schlüssel einen geheimen Code enthalten, mit dem die Entwickler sich irgendwie Zugang zur jeder von ihrer Software generierten Wallet verschaffen können.

    Und "Ohne Gewähr" ist ja eine Standard-Floskel, die man überall findet, sogar bei der Bekanntgabe der Lottozahlen. Nicht dass jemand auf die Idee kommt, die Software-Entwickler verantwortlich zu machen für seinen eigenen, unvorsichtigen Umgang mit BitCoins und seinem Walltet.

  7. vor 9 Minuten schrieb Jokin:

    Der "Seed" ist eine Kombination von 12 Wörtern (oder andere Anzahl). Diese Wörter sind nicht frei wählbar sondern aus einem Pool von 2048 Wörtern auszuwählen. Das letzte Wort enthält die Prüfsumme ob der Seed auch korrekt ist.

    Der Seed kann zusätzlich mit einem Passwort kombiniert werden um daraus die Privatekeys der Wallet auszurechnen.

    Hmm... vielleicht habe ich da auch was verwechselt ^^.

    Ich bezog mich auf den Vorschlag ganz unten auf der Seite "Wallet Details" bei bitaddress.org zum privaten Schlüssel im B6-Format (auf das grüne Plus-Zeichen klicken).
    Dort wird beschrieben, wie man einen wirklich zufälligen B6-Schlüssel mit dem Würfel erzeugt und sie schreiben auch, dass echter (physikalischer) Zufall besser ist als einer aus dem Zufallsgenerator vom PC.

    Zitat

    Warum sollte jemand annehmen, dass eine Wallet mit 99 gleichen Würfelzahlen erstellt wurde? Das ist eine Information, die man nicht preisgeben sollte.

    Dann hast du oben aber einen Fehler gemacht und die Information hier doch preisgegeben :P;) .

  8. vor 11 Stunden schrieb Master_of_Coindesaster:

    Ja, aber weiß ich wirklich, was passiert, wenn ich wieder online bin? Oder ob die generierten Wallets nicht schon vorher feststehen und gar nicht per Zufall erstellt werden?

    Naja, im Fall von bitaddress.org ist es Open-Source-Software, die man auch direkt von GitHub runterladen kann, wenn man meint, dass bitaddress.org das Zeug verfälscht haben könnte.

    Open-Source heißt, dass der Code von jedem eingesehen werden kann, und in konkreten Fall  arbeite(te)n über 170 19 Entwickler daran. Dass die alle unter einer kriminellen Decke stecken, ist eher unwahrscheinlich. Aber klar, sicher ist nur das Risiko. Das weiß man allerdings von vorneherein, wenn man anfängt mit Kryptowährung zu hantieren.

    Spätestens wenn die USA Krieg gegen die EU führen, funktioniert eh kein Computer mehr richtig und alle Coins sind verloren ;) Aber ist das wahrscheinlich?

  9. vor 8 Stunden schrieb Jokin:

    Und von wegen Zufallszahl: 99 x die 1 ist genauso zufällig wie jede andere gewürfelte Zahl.

    Und ob Computerzahlen zufällig sind oder nicht, ist beim Seed recht egal, da innerhalb derselben Sekunde wohl kaum mehrere Menschen Paperwallets anlegen werden. Selbst dann ist das Risiko verschwindend gering. Um sicher zu gehen einfach bei der Zufallszahl noch ein paar Zeichen selber austauschen und fertig.

    Dachte, diese Seed Phrase ist das Passwort, mit dem eine Wallet-Software den privaten und öffentlichen Schlüssel erzeugt bzw. wieder herstellt? Da kann es doch nicht egal sein, ob zufällig oder nicht. Nicht umsonst soll man eine Seed wählen, die nicht jeder gleich errät, und diese dann sicher aufbewahren.

    Natürlich kann man auch zufällig 99x in Folge die 1 würfeln, aber dann ist es viel wahrscheinlicher, dass gar keine anderen Zahlen auf dem Würfel sind. Und erraten bzw. ausprobieren ist in dem Fall einfach: Man braucht nur 6 Versuche, wenn man annimmt, dass ein Wallet mit 99 gleichen Würfelzahlen erstellt wurde.

  10. vor 9 Minuten schrieb fox912:

    Aber ernsthaft -> in der Praxis: mehrere örtlich getrennte, mit LUKS (= container 😉 verschlüsselte USB-Sticks auf denen die Passwort-Datei gespeichert ist ... finde ich sehr "safe". Da lässt mich auch Diebstahl, Feuer, Wasser oder Defekt eines einzelnen USB-Sticks kalt!

    Ja stimmt schon. Man kann die dann problemlos an gute Freunde und Familienmitglieder verteilen, um einen Komplettverlust im Katstrophenfall (Haus oder ganzer Kiez abgebrannt) zu vermeiden. Bankschließfächer gehen wohl auch. Der beste Passwortschutz im eigenen Haus nützt ja nichts, wenn die Hütte bis auf die Grundmauern abbrennt, vom Erdboden verschluckt oder ins Meer gespült wird oder was immer. Es gibt nunmal auch höhere Gewalt, nicht nur Datenklau.

  11. vor 3 Stunden schrieb fox912:

    Ein entsprechend starkes Master-Passwort sollte es natürlich sein, wer den Level noch etwas heben möchte nimmt noch eine Schlüsseldatei dazu.
    Die Passwort-Datenbank selbst sollte dann entsprechend mehrmals gesichert werden (auch örtlich getrennt), bevorzugt in einem verschlüsselten Container!

    Ja, und natürlich feuer- und wasserfest müssen die Container sein.

    Noch was: Wer gaaanz sicher gehen will, sollte die Container unbeobachtet irgendwo mitten im Pazifik versenken. Die genauen Geo-Koordinaten sollte man natürlich ebenso geschützt wieder woanders versenken usw. *SCNR*

    • Haha 1
  12. Am 21.1.2019 um 01:16 schrieb Jokin:

    1. https://www.bitaddress.org/ HTML-Seite offline speichern.

    2. Internetverbindung trennen.

    3. HTML-Seite gemäß Anweisungen benutzen und drucken.

    Die Adresse kannte ich auch nicht. Sieht gut aus, einfach und übersichtlich :)

    Übrigens: Wer seinen Key lieber auswürfeln würde aber die Mühe scheut, die 99 Würfe wirklich auszuführen, kann sie auch gratis hier holen.

    Das sind echte Zufallszahlen, die aus atmosphärischem Rauschen erzeugt werden, im Unterschied zu sog. Pseudo-Zufallszahlen vom PC, die nicht wirklich zufällig sind.

  13. vor 35 Minuten schrieb Jokin:

    Der Gesamt-Portfoliowert setzt sich aus Basiswährungwert und Gesamt-Coinwert zusammen.

    In der Config wird definiert welchen Anteil jeder Coin innerhalb des Gesamt-Coinwerts haben.
    => In Deinem Beispiel beträgt der Gesamt-Coinwert "0,1"

    Die Basiswährung ist dabei außen vor, denn das ist die "Seitenlinie" und die wird separat betrachtet.
    => In Deinem Beispiel beträgt der Basiswährungswert "0,9"

    Dein Basiswährungswert beträgt 900% des Gesamt-Coinwertes. Das passt also schon mit der Berechnung.

    Schöne Zahl eigentlich, die 900%, nur etwas deplatziert. Man müsste es so hinbiegen können, dass sie schließlich als Reingewinn dasteht. :lol:

    An diese Logik mit mit Gesamt-Portfoliowert und Gesamt-Coinwert muss ich mich aber erst gewöhnen. Bin jedenfalls froh, dass die Berechnung soweit stimmt, vielen Dank für die Erklärung.

  14. Am 10.1.2019 um 21:08 schrieb Jokin:

    5. Den prozentualen IST-Anteil ermitteln

    Prozentuale Anteile der Coins und der Basiswährung werden als „current_percentage“ gespeichert:

    
    	// Nun möchten wir den Gesamtwert aller Coins ermitteln - auch das machen wir schon wieder in einer foreach-Schleife (Teil 4)
    	foreach ($__balanceBot_coins as $key => $array_coin){
    		$sum_coin_value += $__balanceBot_coins[$key]['virtual_value'];
    	}
    [...]
    	// Abschnitt index.php 6.3:
    	// Zur Bestandsaufnahme gehört es nun, dass wir sowohl für Basis-Währung als auch für jeden Coin den prozentualen Anteil am Gesamt-Coinwert ermitteln 
    	foreach ($__balanceBot_coins as $key => $array_coin){
    		$__balanceBot_coins[$key]['current_percentage'] = $__balanceBot_coins[$key]['virtual_value'] / $sum_coin_value * 100;
    	}
    	// bei der Basiswährung entspricht die Balance auch dem virtual_value - logisch ...
    	$__balanceBot_basecurrency['current_percentage'] = $__balanceBot_basecurrency['virtual_balance'] / $sum_coin_value * 100;

     

    @Jokin: Irgendwas scheint da nicht zu stimmen in meinem Programm... Ich habe z.B. ohne offene Order:

    Basis: 0,9 ETH
    NEO: 0,0 ETH
    BNB: 0,1 ETH
    ADA: 0,0 ETH

    Damit ergibt sich $sum_coin_value zu NEO + BNB + ADA = 0 + 0,1 + 0 = 0,1 ETH.

    Für den prozentualen Anteil bekomme ich dann

    NEO: 0 / 0,1 * 100 = 0%
    BNB: 0,1 / 0,1 * 100 = 100%
    ADA: 0 / 0,1 * 100 = 0%
    Und für die Basiswährung (letzte Zeile im Zitat) dann der Hammer:
    0,9 / 0,1 * 100 = 900%

    Wahrscheinlich hab' ich das falsch verstanden irgendwie falsch programmiert, den die 900% stimmen ja wohl sicher nicht.

    Das mit der Seitenlinie verstehe ich jedenfalls so:  Konfiguriert sind 40% vom Gesamtkapital in Basiswährung, und die restlichen 60% soll der Bot dann möglichst ins Verhältnis 40% + 30% + 30% balancieren, richtig?
     

  15. Am 19.1.2019 um 15:17 schrieb Jokin:

    Denk da nochmal drüber nach 😉

     

    Hab' ich gemacht und jetzt ist es vollbracht... zumal sich gerade auf meinem Abreißkalender ein gewisser Buddha aus dem 6. Jh. v. Chr. zu Wort meldete mit dem Spruch "Wer über jeden Schritt lange nachdenkt, der steht sein Leben lang auf einem Bein." 

    Und ja, es debuggt sich besser mit den echten Zahlen von der API. 

    • Love it 1
    • Like 1
  16. vor 2 Minuten schrieb Jokin:

    Ja, da hast Du absolut recht - das ist ein Copy-Paste-Fehler im Kommentar 😞

    Hab mir den Code nochmal angeschaut - der passt jedoch. Auch, dass lediglich addiert wird. Das Abziehen macht Binance für uns über den Split "free" und "locked".

    ... diese Eigenart von Binance hat natürlich zur Folge, dass das auf andere Exchanges nicht einfach übertragbar ist, sondern da muss man jede offene Order durchlaufen und beim verkauften UND beim gekauften Teil hinzuaddieren oder abziehen.

    Ah, interessant, danke für die Info. Mir ist das im Code nämlich auch aufgefallen und ich hatte insgeheim gehofft, dass du dir den Code an Stelle auch nochmal anschaust. Hat also geklappt und ist absichtlich so, alles klar :)

    Übrigens habe ich auch noch keinen Binance-Account angelegt... will erst mit dem Code soweit durch sein dass ich denke, er könnte laufen. Es kann ja noch ne ganze Weile dauern, bis es soweit ist, und will vermeiden dass die Coins inzwischen nur untätig rumliegen.

  17. vor 35 Minuten schrieb Jokin:

    PeWi antwortete schon ... nur als Ergänzung:

    Lass Dir mit

    echo $key;

    einfach den Inhalt der Variable ausgeben 🙂

    Ja, Dank PeWi ist es jetzt klar. Ausgeben lassen geht aber nicht, ich hab' kein PHP auf dem Rechner, bin nur in Go unterwegs und muss halt den PHP-Code soweit verstehen, dass ich ihn in nachprogrammieren kann.

    Gut, das du alles so ausführlich notiert hast :). Da kommen wenig Zweifel auf, nur das mit dem $key hatte mich etwas verwirrt.

    • Thanks 1
  18. 		update_messages($message); // Message in DB schreiben und ausgeben.
    		exit; // Skript beenden ... macht ja nu echt keinen Sinn.

    Oha, jetzt sind wir pleite ;).

    Meine Standfunktion für fatales Fehlerhandling ist "ShitHappend(reason){...}" :lol:

     

    @Jokin: Es gibt noch einen kleinen Copy/Paste-Fehler: Im Kommentar dürfte es wohl nicht "Basis-Währung" heißen. Es wird ja die 'virtual_balance' vom Coin erhöht:

    Am 10.1.2019 um 21:08 schrieb Jokin:

     

     

    
    		// Abschnitt index.php 6.1:
    		
    			if ($array_openOrder['side'] == "BUY"){
    				// wenn BUY, dann Basis-Währung um den Wert der dann verkauften Coins erhöhen [...]
    				$__balanceBot_coins[$key]['virtual_balance'] += ($array_openOrder['origQty'] - $array_openOrder['executedQty']);	
    			}

     

     

  19. Am 10.1.2019 um 21:08 schrieb Jokin:
    
    foreach ($__balanceBot_coins as $key => $array_coin){ /* ... */ }

     

    Bin noch nicht dahinter gekommen, was es genau mit dem $key und $array_coin auf sich hat.

    Ist $key vielleicht der Index 0 bis Anzahl Coins (als Zahl)?
    Und $array_coin ist dann das konkrete Coin-Array bei $__balanceBot_coins[$key], also z.B. bei $__balanceBot_coins[0] der erste Coin?

    Aber das scheint mir nicht logisch, denn manchmal erscheint $array_coin auch nur im Schleifenkopf und wird in der Schleife nicht mehr verwendet.
    Aber wozu dient es dann?

  20. Am 9.1.2019 um 01:39 schrieb Jokin:
    
    // Und je Coin muss ich den Kram durchwühlen, den ich von Binance bekommen habe 
    foreach ($array_binance_exchangeInfo['symbols'] as $entry){ 
    	if ($entry['symbol'] == $array_coin['name'].$__balanceBot_basecurrency['name']){
    [...]

     

    Also sowas geht viel eleganter. Such' mal nach Linq für PHP, z.B. hier.

    Linq kommt aus der MS .Net Welt und ich möchte es nicht mehr missen. Es ist eine Art Abfragesprache ähnlich wie für Datenbanken, z.B. wenn man aus eine langen Liste etwas bestimmtes raussuchen möchte.

    Das passende "symbol" aus der Liste bekommt man etwa so (C# Syntax):

    var mySymbol = array_binance_exchangeInfo["symbols"].FirstOrDefault(entry => entry["symbol"] == balanceBot_basecurrency['name']);

    Danach hat man schon das "symbol", wenn es existiert, sonst null.

    Und das ist längst nicht alles. Linq ist ziemlich mächtig. Für PHP gibt's das anscheinend auch. Man erspart sich viele verschachtelte Schleifen.
    Hab's für Go auch importiert.

    EDIT: Sorry, falscher Thread. Wollte das hier nicht zumüllen mit Programmiervorschlägen :blink:

    • Thanks 1
  21. 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.

    • Thanks 1
  22. 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.

  23. Am 17.1.2019 um 06:56 schrieb Jokin:

    @Herr Coiner Raspbian kommt im Gegensatz zu Ubuntu mit einer älteren PHP-Version (7.0 anstatt 7.2) und mit einer anderen Datenbank (MariaDB anstatt MySQL), aber das ist kein Problem - MariaDB hat die Konfigdateien etwas anders liegen. Das Verschieben der Datenbank von der SD-Karte auf eine externe Festplatte ist dadurch anders. 

    Hmmm, MariaDB kenne ich nicht. dachte eigentlich, dass sie das im Beispiel nur draufspielen, weil es vllt. später für WordPress gebraucht wird. Kann man die MySql-DB nicht direkt ansprechen ohne diese Maria? Hast du dir das verlinkte Beispiel angesehen, wo alles der Reihe nach installiert wird? Da kommt zuerst MySql und dann MariaDB, nicht direkt "MariaDB anstatt MySQL". Das Weib würde ich einfach weglassen :lol:. Und dass es nicht das allerneueste MySQL PHP ist, ist für den Bot wohl auch nicht tragisch. 

    Wie auch immer... ich komme leider nur langsam voran mit meiner Go-Version :kopfkratz:. Jede Kleinigkeit muss ich nachlesen...mal eben ne Schleife ein Array bauen - Pustekuchen. Die Syntax ist sehr außergewöhnlich, und überhaupt auch das ganze Konzept von Go. Auf was hab' ich mich da nur eingelassen... aber egal, bin ja selber schuld, ich zieh das jetzt halt durch. Bin halt immer noch bei Lektion 3, Beispiel gefällig?

    // Wir erstellen ein Array von Zeigern auf alle vom Bot verwalteten Coins, incl. Basis-Coin:
    var botAllCoins = (func() []*coin {
    
    	allCoins := make([]*coin, 0, len(botCoins)+1) // Leeres Array mit der nötigen Kapazität
    	allCoins = append(allCoins, &botBaseCoin)     // Wir fügen den Basis-Coin ein
    	for i := 0; i < len(botCoins); i++ {          // Wir fügen die restlichen Coins ein
    
    		allCoins = append(allCoins, &botCoins[i])
    	}
    	return allCoins
    })()
    
    // Nun wollen wir wissen wieviele Coins wir insgesamt in unserem Portfolio haben (Teil 4)
    func getAccountinfo() (*binance.Account) {
    
    	// Wir senden eine entsprechende Anfrage an Binance und schauen uns an was da zurück kommt.
    	var binanceAccount, err = binanceClient.NewGetAccountService().Do(context.Background())
    	checkErr(err, "Error getting binance account data.")
    
    	// Im Array binanceAccount.Balances steht unser ganzer Bestand.
    	// Wir interessieren uns nur für die vom Bot verwalteten Coins:
    	for _, botCoin := range botAllCoins {
    
    		// Wir suchen das Asset mit dem Namen unseres Coins raus
    		botCoinBalance := linq.From(binanceAccount.Balances).FirstWith(func(item interface{}) bool { return item.(binance.Balance).Asset == botCoin.Balance.Asset })
    		if botCoinBalance != nil {
    
    			// Das gefundene Asset ist vom Typ binance.Balance
    			found := botCoinBalance.(binance.Balance)
    			// "locked" ist die Anzahl, für die gerade offene Order angelegt sind,
    			locked, _ := strconv.ParseFloat(found.Locked, 64)
    			// "free" ist die noch verfügbare Anzahl für neue Order
    			free, _ := strconv.ParseFloat(found.Free, 64)
    
    			message := fmt.Sprintf("Bestand: %v %s", free+locked, found.Asset)
    			insertMessage(message) // Message in DB schreiben und ausgeben.
    
    			// Wir aktualisieren entsprechend unseren Bot-Coin:
    			botCoin.Balance.Free = found.Free
    			botCoin.Balance.Locked = found.Locked
    		}
    	}
    }

    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.

  24. Ah gut :) Dann lass' ich die Ausgabe hier mal weg.

    vor 8 Stunden schrieb Jokin:

    ... und einen wirklich einfachen Debug-Mode kenne ich bei PHP nicht, wenn das bei Go einfacher ist - nur zu 🙂

    Vielleicht ist ja das ja was brauchbaresPHP Debugging mit Visual Studio Code und Xampp - YouTube

    Du müsstest dazu auf den Open Source Editor Visual Studio Code umsteigen. Den kann ich sehr empfehlen. Man kann mit GitHub kommunizieren, Betriebssystem-Befehle absetzen, Code-Highlighting, Syntaxprüfung, Debugging uvm. sind dabei... Und er kommt mit allen möglichen Sprachen klar: Python, JavaScript, PHP, Go, C# und und und. Einfach die gewünschten Plugins  runterladen (werden zur Auswahl angeboten) und schon kann man loslegen.

    Anfangs etwas gewöhnungsbedürftig, z.B. weil man immer erst ein Verzeichnis auswählen muss, in dem man dann den Quellcode für's Projekt erstellt bzw. lädt. Am besten zuerst ins Verzeichnis wechseln und einfach den Editor mit dem Befehl "Code" von der OS-Kommandozeile starten. Will man ein anderes Verzeichnis haben, dann muss man den Editor erst schliessen. Es gibt auch ein Erklär-Video irgendwo, nur finde ich es gerade nicht. Für den Anfang ist sowas aber gut für den ersten Überblick, dann muss man nicht alles selber rausfinden durch Versuch und Irrtum. Man kommt aber schnell rein.

     

    • Thanks 2
×
×
  • 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.