Zum Inhalt springen

24unix

Mitglied
  • Gesamte Inhalte

    40
  • Benutzer seit

  • Letzter Besuch

Beiträge von 24unix

  1. Ein wenig habe ich diese Woche geschafft, aber nicht so viel. Ich habe die Trennung zwischen Frontend und Backend weiter ausgebaut, per Timer (das, was man vor systemd mit cron gemacht hat) werden nun alle 10 Minuten die relevanten Daten zu den Coins geholt und in die DB geschrieben, ich schaue morgen mal, wie viel das ist, sind ja nur ein paar Bytes pro Zeile, ich denke, auf eine 20GB Partition kann ich Jahre mitplotten.

  2. Am 10.1.2019 um 21:08 schrieb Jokin:

    Nun könnt Ihr  bei Binance eine neue Order anlegen - bitte darauf achten, dass die Order nicht gleich ausgeführt wird, also eine BUY-Order mit unglaublich niedrigem Preis anlegen oder eine SELL-Order mit unglaublich hohem Preis.

    Jetzt häng eich hier gerade fest. Kann mir einer de alten Hasen erklären, was für eine Order ich da setzen soll?

    Ich habe links P2p Order, Margin Orders etc …

  3. Habe Lektion 3 jetzt komplett durch, konnte die Schleifen deutlich reduzieren, ob es lesbarer ist liegt im Auge des Betrachters …

    	function updateAccountInfo($botID)
    	{
    		try {
    			$this->binanceAccount = $this->binanceAPI->account();
    		} catch (Exception $e) {
    			echo 'Error: ' . $e->getMessage();
    		}
    		
    		$exchangeInfo = [];
    		try {
    			$exchangeInfo = $this->binanceAPI->exchangeInfo();
    		} catch (Exception $e) {
    			echo $e->getMessage();
    		}
    		
    		$botBaseCurrency = $this->bot->getBaseCurrency($botID);
    
    		$base = array_search($botBaseCurrency, array_column($this->binanceAccount['balances'], 'asset'));
    		$baseCurrency = $this->binanceAccount['balances'][$base];
    		
    		$coins = $this->bot->getCoins($botID);
    		
    		$coinValues = [];
    		foreach ($coins as $coin) {
    			$coinID = array_search($coin->name, array_column($this->binanceAccount['balances'], 'asset'));
    			// get rates
    			$prevDay = [];
    			try {
    				echo("search: $coin->name");
    				// get base currency from Bot class
    				if ($prevDayRaw = $this->binanceAPI->prevDay($coin->name . $botBaseCurrency)) {
    					//print_r($prevDay);
    					$prevDay['price'] = $prevDayRaw['lastPrice'];
    					$prevDay['price24High'] = $prevDayRaw['highPrice'];
    					$prevDay['price24Low'] = $prevDayRaw['lowPrice'];
    					$this->storeMessage("fetched: " . $coin->name . $botBaseCurrency);
    				} else {
    					$this->storeMessage("error fetching: " . $coin->name . $botBaseCurrency);
    				}
    				
    			} catch (Exception $e) {
    				echo $e->getMessage();
    			}
    			
    			$rules = [];
    			
    			$filters = $exchangeInfo['symbols'][$coin->name . 'USDT']['filters'];
    
    			$lotSizeID = array_search('LOT_SIZE', array_column($filters, 'filterType'));
    			$rules['minQty'] = $exchangeInfo['symbols'][$coin->name . 'USDT']['filters'][$lotSizeID]['minQty'];
    			$rules['minQtyPrecision'] = abs(floor(log10($rules['minQty'])));
    			
    			$minNotionalID = array_search('MIN_NOTIONAL', array_column($filters, 'filterType'));
    			$rules['minNotional'] = $exchangeInfo['symbols'][$coin->name . 'USDT']['filters'][$minNotionalID]['minNotional'];
    			
    			$priceFilterID = array_search('PRICE_FILTER', array_column($filters, 'filterType'));
    			$rules['tickSize'] = $exchangeInfo['symbols'][$coin->name . 'USDT']['filters'][$priceFilterID]['tickSize'];
    			$rules['tickSizePrecision'] = abs(floor(log10($rules['tickSize'])));
    			
    			$balance = $this->binanceAccount['balances'][$coinID];
    
    			$coinValues[] = array_merge($prevDay, $balance, $rules);
    			
    			try {
    				$binanceOpenOrder[$coin->name] = $this->binanceAPI->openOrders($coin->name . $botBaseCurrency);
    			} catch(Exception $e) {
    				echo $e->getMessage();
    			}
    		}
    		print_r($coinValues);
    		
    		// get all open orders
    	}
    	

    Edit: Etwas die Optik angepasst.

    https://y.24unix.net/v5e93

  4. Gerade eben schrieb o0dy:

    Naja der unterschied zwischen dir und mir ist, du gehst nach Hörensagen, und ich teste es und erzähle Fakten.

    Ich werde mir jetzt keine Google Konto anlegen und den GA installieren, um das direkt zu belegen. Fakt ist, Google speichert alles was sie kriegen können, sonst stellen die den Dienst ein.

    vor 2 Minuten schrieb o0dy:

    Wenn du schon programmieren lernst, solltest du das wohl einfach selbst testen können, aber wie es scheint fehlt dir da noch viel Wissen.

    Programmieren tue ich seit Mitte der 80er … Beruflich seit den 90ern.

    vor 2 Minuten schrieb o0dy:

    Viel glück beim Bot 

    Danke.

  5. vor 22 Minuten schrieb o0dy:

    In deinem Märchenland oder wie? DAS IST zu 100% falsch was du behauptest. Du machst dich mittlerweile lächerlich mit deinem Starrsinn.😉

    Was meinst Du, warum die aktuelle Version kein Open Source mehr ist. TANSTAAFL. Alles, womit Google keinen Profit macht landet da:

    https://killedbygoogle.com/

    Aber benutze es ruhig weiter, ist nicht mein Problem. Ich will hier über BitCoins lernen und einen Bot bauen.

  6. vor 1 Minute schrieb o0dy:

    So das war es auch von meiner Seite, mit geht es darum dass man nicht unwahrheiten und Halbwissen verbreitet. Danke!

    Warum tust Du es dann?

    Ich will hier eigentlich nicht über Google diskutieren.

    vor 1 Minute schrieb o0dy:

    Nochmal(1), die APP empfängt mit dem QR Code den Code den man auch händisch eintragen kann

    Öffne den QR Code mit einem QR-Code Scanner, dann geht die Binance-Seite auf. In dem Moment weiß die Google App, wo Du sie verwendest.

     

  7. vor 1 Minute schrieb ¯\_(ツ)_/¯:

    Wenn die verwendete PHP Binance API das nicht abdeckt ist halt doof...

    Ah … Jetzt habe ich es glaube ich.

    Die API kann das nicht (habe vorhin den Code überflogen, nicht gefunden). Immerhin kann man sie jetzt direkt per Composer installieren …

    OK, ich kann selber per curl eine connection machen, auf den Result Code testen und ab dafür. Brauche ich ja nur, wenn die Basis-Config oder eine botspezifische geändert wird.

     

  8. Ich habe oben den Code eingefügt.

    Das geht, ohne Fehler, egal ob der Key valid ist oder nicht.

    Knallen tut es bei einem falschen Key dann hier:

    ( ! ) Fatal error: Uncaught Error: Typed property BalanceBot::$binanceAccount must not be accessed before initialization in /var/www/virtual/24unix.net/bitcoin/htdocs/balancebot/Controller/BalanceBot.php on line 180

     

    Oh, man kann doch Grafiken einfügen, lag dann wohl bisher an der Größe …

    Hmm, aber nur eine? Oder wieder zu groß?

    Das ist Zeile 180:

    $usdt = array_search('USDT', array_column($this->binanceAccount['balances'], 'asset'));
    

     

  9. vor 5 Minuten schrieb ¯\_(ツ)_/¯:

    Viell. hast du dich nur unglücklich hausgedrückt, aber es gibt bei der API kein "angemeldet" sein.

    Ja, wahrscheinlich 😞

    vor 5 Minuten schrieb ¯\_(ツ)_/¯:

    Wenn dein Key nicht valide ist bzw. deine Signatur nicht passt, dann bekommst du eigentlich nen http 401 status bei den entsprechenden Endpunkten.

    Das kommt, als Textausgabe im Browser: Error: signedRequest error: {"code":-2014,"msg":"API-key format invalid."}

    Edit: Das ist mein Code

    // connect Binance API
    		$this->binanceAPI = new API($this->config['default_api_key'], $this->config['default_api_secret']);

    Und ich suche einen Weg, programmatisch drauf zu reagieren, ob der Key richtig oder falsch war.

  10. vor 1 Minute schrieb bjew:

    es gibt eine ganze Reihe von Diensten, die die Google-Suche anonymisieren - und die funktionieren ganz gut und blenden sogar die Werbung aus

    Werbung stört mich nicht, das mit dem anonymisieren (startpage.com) hat halt auch Nachteile, wenn man gezielt personalisierte Ergebnisse will.

     

    Es ist nicht einfach 🙂

     

    Aber ich wollte hier wirklich keinen Glaubenskrieg für oder wider Google anfangen. Ich finde es halt nur praktisch, dass ich mein Menüleistentool statt dem Handy für das OTP nehmen kann. Ach ja, hatte auf der letzen Seite noch einen Screenshot verlinkt, viel sieht man noch nicht, aber mir gefällt es :)

  11. vor 2 Minuten schrieb verado:

    Zur Abfrage von Kursen braucht man gar keinen Key, falls du doch einen schickst wird er ignoriert. 

    Ah OK. Ich wollte eigentlich testen, wie ich sauber herausfinden kann, ob ich angemeldet bin. Wenn ich einen ungültigen Key nehme schmeisst die API eine Fehlermeldung, aber direkt als Text, keine Exception oder so. Würde das irgendwie gerne sauberer lösen.

     

  12. vor 23 Minuten schrieb o0dy:

    Das tut der Google Authentikator auch nicht. Der braucht nicht mal ne Internet Verbindung. 

     

    Der weiß aber, für welche Seite Du ihn benutzt. Das ist schon zu viel.

     

    vor 23 Minuten schrieb o0dy:

    Verwendest du Android oder Apple Smartphones? 

    Apple.

     

    Zurück zum Thema: Nachdem ich nun Guthaben  in der Wallet habe bekomme ich auch die balance angezeigt.

    Edit: Coins habe ich noch keine, aber sobald EUR da waren wurde das array befüllt.

    Lustigerweise kann man auch mit ungültigem API key Kurse abfragen 🙂 

     

    Das doch recht komplizierte Konstrukt mit dem foreach über das array kann man kürzer lösen.

    $usdt = array_search('USDT', array_column($this->binanceAccount['balances'], 'asset'));
    		$value = $this->binanceAccount['balances'][$usdt];
    		print_r($value);

    https://y.24unix.net/92z8z

    Noch ein Edit: Habe einen Screenshot vom Bot-Dialog gemacht, KEY und Secret sind optional, wenn nicht eingegeben wird, wird der aus der Config genommen (Menü Setup).

  13. vor 8 Stunden schrieb o0dy:

    Warum hast du Bauchschmerzen mit Google? 

     

    Weil es eine Datenkrake ist. Ich nutze nicht von denen ausser der Suche, da gibt es leider keine brauchbaren Alternativen.

    Es geht Google aber ganz und gar nichts an, auf welchen Seiten ich mich anmelde, welche Dienste ich nutze.

    Ist aber nicht der entscheidende Punkt, sondern, dass man jedes OTP Tool verwenden kann, man muss also nicht jedesmal das Handy rauskramen wenn man ein PW braucht.

  14. vor 13 Stunden schrieb bjew:

    schon mal was von Link (ln bei linux) gelesen? reicht , die config zu kopieren und anzupassen.

     

    Ich wollte es aber komfortabler haben.

    vor 13 Stunden schrieb bjew:

    In der DB für jeden Bot ein eigenes Tabellenset

    Ich habe schon Tabellen für die Bots, sobald ich mit dem Code weiter machen kann (warte auf meine Einzahlung, die balances sind immer noch leer), werde ich die gemäß der Lektionen erweitern.

  15. Ich komme ganz gut voran 🙂

    Macht Spaß, muss jetzt nur warten, bis meine Einzahlung bei Binance eingegangen ist. Ich werde das ganze etwa "bottiger" machen, mehr Trennung von Darstellung und Cron-Aktionen. Und ich habe für die Bots eine extra Tabelle, man kann also mehr als einen Bots laufen lassen, ohne das Programm replizieren zu müssen. Es wird ein Default Paar Key/Secret gespeichert um die Abfragen zu machen, man kann aber für jeden Bot ein eigenes Paar angeben wenn man mehrere Accounts bei Binance hat, muss dann, wenn ich weitr im Code bin gucken ob das Problem egibt.

    Bilder kann man hier nicht hochladen, oder? 😞

    Ich habe es mal ins Pastebin: https://y.24unix.net/4ga9a

    Ein Repo habe ich auch angelegt: https://git.24unix.net/tracer/BalancingBot

     

     

  16. So, ich bin jetzt auch bei Lektion 3 angekommen.

     

    Wer genauso wie ich mit Google Bauchschmerzen hat, und der Firma ganz besonders bei Geldgeschäften nicht traut:

    Das Ding bei Binance heisst zwar Google Authenticator, aber es ist de facto ein ganz normales OTP, ich nutze OTP Manager, eine kleine App die oben in der Menüleiste sitzt und den 2FA einfach bei Bedarf in die Zwischenablage kopiert.

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