PROBLEMA Aiuto nella creazione di piccolo bot python - API

Sile12

Nuovo Utente
Salve a tutti! Sono un programmatore alle prime armi e sto cercando di creare un bot nato da una mia idea. Essendo un trader di cryptovalute ho scoperto da un po' di tempo le API degli exchange che possono servire per prendere informazioni dagli exchange e processarle per farne uso con bot programmati in python e altri linguaggi. Ho cominciato a scrivere quindi un mio bot, per adesso si limita a stampare gli ultimi ordini di buy o sell, solo che sto avendo dei problemi:
1) inizialmente si limitava a stampare gli ultimi ordini per poi fermarsi, senza invece stampare in tempo reale, ho risolto inserendo un ciclo while e un if statement che impone di stampare solo se un timestamp messo da me è minore della variabile tempo
2) Il primo problema è che va in loop e invece di stampare una sola volta l'ordine lo stampa all'infinito. So che a dare problemi è il ciclo while ma non so come poterne fare a meno! Sto pensando di aggirare il problema inserendo un ciclo che dice di non stampare se il primo ordine è uguale al precedente, il punto è che non so come costruirlo, qualcuno potrebbe darmi una dritta?
3) Quest'ultimo problema si collega al secondo: vorrei che il mio bot facesse la differenza tra comprato e venduto, quindi se io ho un ordine di comprato da 3 e poi uno di venduta da 1, poi uno di comprato da 2, lui deve tenere il conto (in questo caso 4 e così via: 3-1+2), ma il problema che ho riscontrato è che non è possibile convertire l'unicode, da quello che ho capito. Praticamente, è difficile farlo dato che l'api trasmette in json.

In caso qualcuno volesse darmi qualche piccolo aiuto, questo è il codice scritto fino ad ora: https://pastebin.com/ZzMySTGk
 

Andretti60

Utente Èlite
3,218
2,089
Hardware Utente
Il codice da te pubblicato è diverso da quello che descrivi visto che manca il test del timestamp.
PS puoi postare il codice direttamente qui usando il tag "code"
 

Sile12

Nuovo Utente
Il codice da te pubblicato è diverso da quello che descrivi visto che manca il test del timestamp.
PS puoi postare il codice direttamente qui usando il tag "code"
Avevo sbagliato script! Ecco quello giusto messo qui

Codice:
import time, requests, json

try:
    BU = requests.session()
    URL = 'https://bittrex.com/api/v1.1/public/getmarkethistory?market=BTC-DOGE'
    r = BU.get(URL, timeout=(15, 10))
    time.sleep(1)
    MarketPairs = json.loads(r.content)
    for element in MarketPairs['result']:
        indirizzo = element['Id']
        prezzo = element['Price']
        tot = element['Total']
        tempo = element['TimeStamp']
        tipo = element['OrderType']

        if tempo > '2017-12-08T18:28:48.887':
            print tipo, " ", indirizzo, " ", tot, " ", prezzo, " ", tempo
            time.sleep(1)

except Exception as e:
        print e
        print 'Error... possible timeout'
 

Andretti60

Utente Èlite
3,218
2,089
Hardware Utente
Ma scusa, se confronti sempre con lo stesso valore del tempo logico che ti darà sempre gli stessi risultati. Secondo, in ogni loop devi rileggere il database, leggendo solo i record più recenti della volta precedente.
 

Sile12

Nuovo Utente
Ecco, il punto è che non so come fargli confrontare un ordine dall'altro, li so far stampare ma non confrontare. Non voglio assolutamente che mi si venga scritto il codice, ma potresti darmi una dritta su come dovrei impostarlo?
 

Andretti60

Utente Èlite
3,218
2,089
Hardware Utente
Ogni volta che leggi il database, memorizza il timestamp più recente. Le volte successive, stampa solo i risultati con un timestamp più recente, e memorizzalo. Nn conosco json per Python, ma sono sicuro ci sia un metodo per farlo automaticamente mediante una query (che poi è il modo di usare un database, fargli fare il lavoro per cui è stato progettato)
 

Sile12

Nuovo Utente
Ogni volta che leggi il database, memorizza il timestamp più recente. Le volte successive, stampa solo i risultati con un timestamp più recente, e memorizzalo. Nn conosco json per Python, ma sono sicuro ci sia un metodo per farlo automaticamente mediante una query (che poi è il modo di usare un database, fargli fare il lavoro per cui è stato progettato)
Ok, adesso provo a rileggermi bene la documentazione di Json per python, grazie!
 

Entra

oppure Accedi utilizzando