I am trying to retrieve all Trade History data from Binance using the API. I understand that Binance only allows you to get the data by specifying the ticker, which is unfortunate, but assuming I have all the tickers in a list, and want to download them all, how can I do it in an optimized way? Currently doing the following:
import pandas as pd
from binance import Client, ThreadedWebsocketManager, ThreadedDepthCacheManager
from datetime import datetime
client = Client(Binance_key, Binance_secret)
tickers = ['ADABTC', 'ADABUSD', 'ADAUSDT', 'DOGEUSDT', 'LUNABUSD', 'SOLBUSD', 'SOLUSDT',
'USTBUSD', 'XRPBTC', 'XRPBUSD', 'XRPUSDT']
adabtc_trades = client.get_my_trades(symbol=tickers[0])
adabtc_trades_df = pd.DataFrame(adabtc_trades)
Then after getting all dataframes, I'd join them all, however, I feel this is not a good practice, to download and put in dataframes one by one. Recommendations?
Additionally, is there any endpoint for deposits and withdrawals? couldn't find it , thanks
CodePudding user response:
This is how I learned Python -- extracting data from an API into pandas dataframes. Here is a slight improvement to what you have so far:
Iterate through your tickers and use the ticker value implicitly in your iteration (so you don't have to use the index). Use pd.concat
to concatenate your dataframes together automatically.
df = pd.DataFrame()
for ticker in tickers:
data = client.get_my_trades(symbol=ticker)
da = pd.DataFrame(data)
df = pd.concat([df, da], axis=0, ignore_index=True, sort=False)
df.set_index("id", inplace=True)
Overwrite SQL data
connection = os.environ.get('SQL_CONNECTION_STRING')
df.to_sql('StockDataTable', con=connection, if_exists='replace', index=True)
For more df.to_sql
options read here: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_sql.html
Happy to help with anything else you need!