39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
|
|
import requests
|
|||
|
|
import json
|
|||
|
|
from datetime import datetime
|
|||
|
|
|
|||
|
|
# API 端点:币安现货 K 线数据
|
|||
|
|
base_url = "https://api.binance.com"
|
|||
|
|
endpoint = "/api/v3/klines"
|
|||
|
|
|
|||
|
|
# 参数设置
|
|||
|
|
symbol = "ETHUSDT" # 交易对:ETH-USDT
|
|||
|
|
interval = "5m" # 时间间隔:5 分钟
|
|||
|
|
limit = 100 # 获取最近 100 条 K 线(可根据需要调整,最大 1000)
|
|||
|
|
|
|||
|
|
params = {
|
|||
|
|
"symbol": symbol,
|
|||
|
|
"interval": interval,
|
|||
|
|
"limit": limit
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 发送 GET 请求
|
|||
|
|
response = requests.get(base_url + endpoint, params=params)
|
|||
|
|
|
|||
|
|
# 检查响应状态
|
|||
|
|
if response.status_code == 200:
|
|||
|
|
data = response.json()
|
|||
|
|
|
|||
|
|
# 输出最近 5 条 K 线数据作为示例(每条数据格式:[开盘时间, 开盘价, 最高价, 最低价, 收盘价, 成交量, 收盘时间, 报价成交量, 成交笔数, 主动买入成交量, 主动买入报价成交量, 忽略])
|
|||
|
|
print("最近 5 条 5 分钟 K 线数据 (ETH-USDT):")
|
|||
|
|
print(json.dumps(data[-5:], indent=4, ensure_ascii=False))
|
|||
|
|
|
|||
|
|
# 可选:转换为更易读的格式
|
|||
|
|
print("\n转换为易读格式(时间为 UTC):")
|
|||
|
|
for kline in data[-5:]:
|
|||
|
|
open_time = datetime.fromtimestamp(kline[0] / 1000).strftime('%Y-%m-%d %H:%M:%S')
|
|||
|
|
close_time = datetime.fromtimestamp(kline[6] / 1000).strftime('%Y-%m-%d %H:%M:%S')
|
|||
|
|
print(f"时间: {open_time} - {close_time}, "
|
|||
|
|
f"开: {kline[1]}, 高: {kline[2]}, 低: {kline[3]}, 收: {kline[4]}, 量: {kline[5]}")
|
|||
|
|
else:
|
|||
|
|
print(f"请求失败,状态码: {response.status_code}, 错误信息: {response.text}")
|