| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import csv
- from binance.client import Client
- from datetime import datetime, timedelta
- # Replace with your Binance API key and secret
- api_key = 'WFIEaBuUafZ9ldAiMHLZ4Z1qHdVnpoDUVZM8MughMf6zmbSqGx5pEmQFBJysjwFp' # Optional for public data
- api_secret = 'C9HtmLk7fBCidyJI2lPtUbYhj4T0FdmJ0NE0LLipFiwUSR7euf1TEzJblEx1O6oA' # Optional for public data
- # Initialize the Binance client
- client = Client(api_key, api_secret)
- def get_top_traded_coins(limit=20):
- """Get the top traded coins by volume."""
- tickers = client.get_ticker()
- # Sort by quote volume (most traded)
- sorted_tickers = sorted(tickers, key=lambda x: float(x['quoteVolume']), reverse=True)
- # Extract the top 'limit' coins
- top_coins = [ticker['symbol'] for ticker in sorted_tickers[:limit]]
- return top_coins
- def get_historical_prices(symbol, days=30):
- """Get historical prices for a symbol over the last 'days' days."""
- end_time = datetime.now()
- start_time = end_time - timedelta(days=days)
- klines = client.get_historical_klines(symbol, Client.KLINE_INTERVAL_1DAY, start_time.strftime("%d %b, %Y"), end_time.strftime("%d %b, %Y"))
- # Extract closing prices
- prices = [float(kline[4]) for kline in klines]
- return prices
- def save_to_csv(data, days, filename='crypto_prices.csv'):
- """Save the data to a CSV file."""
- with open(filename, mode='w', newline='') as file:
- writer = csv.writer(file)
- writer.writerow(['Symbol'] + [f'Day {i+1}' for i in range(days)])
- for symbol, prices in data.items():
- writer.writerow([symbol] + prices)
- def main():
- # Get the top 20 traded coins
- top_coins = get_top_traded_coins(20)
-
- # Fetch historical prices for each coin
- crypto_prices = {}
- for coin in top_coins:
- print(f"Fetching prices for {coin}...")
- prices = get_historical_prices(coin, 60)
- crypto_prices[coin] = prices
-
- # Save the data to a CSV file
- save_to_csv(crypto_prices, 60)
- print("Data saved to crypto_prices.csv")
- if __name__ == "__main__":
- main()
|