|
|
|
|
|
from binance.client import Client |
|
from pymongo import MongoClient |
|
import time |
|
import pandas as pd |
|
|
|
|
|
api_key = "0jmNVvNZusoXKGkwnGLBghPh8Kmc0klh096VxNS9kn8P0nkAEslVUlsuOcRoGrtm" |
|
api_secret = "PbSWkno1meUckhmkLyz8jQ2RRG7KgmZyAWhIF0qPdCJrmDSFxoxGdMG5gZeYYCgy" |
|
|
|
|
|
client = MongoClient( |
|
"mongodb://wth000:wth000@43.159.47.250:27017/dbname?authSource=wth000") |
|
db = client["wth000"] |
|
|
|
name = "COIN" |
|
collection = db[f"{name}"] |
|
|
|
client = Client(api_key, api_secret) |
|
|
|
codes = client.get_exchange_info()["symbols"] |
|
usdt_codes = [ |
|
code for code in codes if code["quoteAsset"] == "USDT" and ("DOWN" not in code["symbol"]) and ("UP" not in code["symbol"])] |
|
print(f"当前币安现货USDT有{len(usdt_codes)}个交易对") |
|
|
|
|
|
for code in usdt_codes: |
|
symbol = code["symbol"] |
|
data_list = [] |
|
|
|
latest_data = collection.find_one( |
|
{"代码": symbol}, {"timestamp": 1}, sort=[("timestamp", -1)]) |
|
latest_timestamp = latest_data["timestamp"] if latest_data else 0 |
|
klines = client.get_klines( |
|
symbol=symbol, |
|
interval=Client.KLINE_INTERVAL_1DAY, |
|
limit=1000 |
|
) |
|
|
|
|
|
|
|
|
|
|
|
for kline in klines: |
|
timestamp = kline[0] / 1000 |
|
if timestamp < latest_timestamp: |
|
continue |
|
date = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(timestamp)) |
|
if timestamp == latest_timestamp: |
|
update_data = { |
|
"timestamp": timestamp, |
|
"代码": symbol, |
|
"日期": date, |
|
"开盘": float(kline[1]), |
|
"最高": float(kline[2]), |
|
"最低": float(kline[3]), |
|
"收盘": float(kline[4]), |
|
"成交量": float(kline[5]), |
|
"收盘timestamp": float(kline[6]/1000), |
|
"成交额": float(kline[7]), |
|
"成交笔数": float(kline[8]), |
|
"主动买入成交量": float(kline[9]), |
|
"主动买入成交额": float(kline[10]) |
|
} |
|
filter = {"代码": symbol, "timestamp": latest_timestamp} |
|
collection.update_one( |
|
filter, {"$set": update_data}) |
|
else: |
|
data_list.append({"timestamp": timestamp, |
|
"代码": symbol, |
|
"日期": date, |
|
"开盘": float(kline[1]), |
|
"最高": float(kline[2]), |
|
"最低": float(kline[3]), |
|
"收盘": float(kline[4]), |
|
"成交量": float(kline[5]), |
|
"收盘timestamp": float(kline[6]/1000), |
|
"成交额": float(kline[7]), |
|
"成交笔数": float(kline[8]), |
|
"主动买入成交量": float(kline[9]), |
|
"主动买入成交额": float(kline[10]) |
|
}) |
|
|
|
|
|
if len(data_list) > 0: |
|
collection.insert_many(data_list) |
|
print("原始数据获取完成") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|