You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas计算币安BTCUSDT 1分钟K线收盘价涨跌幅结果恒为0问题求助

问题根因

你代码的核心错误有2个:

  • 每次调用币安API拉取K线时设置了limit=1,每次返回的DataFrame仅包含1行最新K线数据。diff(1)是计算当前行与前1行的差值,单条数据无法计算差值,结果为NaN后被你用fillna(0)填充,所以始终为0
  • 涨跌幅计算公式错误:涨跌幅的计算基数是上一根K线的收盘价,你代码里用当前K线收盘价做分母,计算结果逻辑错误

修改方案

  1. 把get_klines的limit参数调整为2,每次拉取最近2根1分钟K线,获得上一根K线的收盘价做对比
  2. 修正涨跌幅计算公式,分母改为上一根K线的收盘价
  3. 若只需要输出最新一根K线的结果,取DataFrame最后一行即可

修改后参考代码

import time
import pandas as pd
from binance.client import Client

# 按需补充你自己的api_key和api_secret,仅拉取公开K线可以不用填写
client = Client()

def get_live_data(symbol):
    # limit改为2,拉取最近2根1分钟K线
    candles = pd.DataFrame(client.get_klines(symbol=symbol, interval=Client.KLINE_INTERVAL_1MINUTE,
                                             limit=2,
                                             startTime=None,
                                             endTime=None))
    candles.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Close_Time',
                       'Quote_Volume', 'Trades_Count', 'BUY_VOL', 'BUY_VOL_VAL', 'x']
    # 批量做类型转换
    numeric_cols = ['Open', 'High', 'Low', 'Close', 'Volume', 'Quote_Volume']
    candles[numeric_cols] = candles[numeric_cols].apply(pd.to_numeric)
    candles["Volume"] = round(candles["Volume"])
    candles["Quote_Volume"] = round(candles["Quote_Volume"])
    candles["Close_Time"] = pd.to_datetime(candles["Close_Time"], unit='ms')
    candles["Date"] = pd.to_datetime(candles["Date"], unit="ms")

    # 计算差值和涨跌幅,分母改为上一根收盘价
    candles['pchange1M'] = candles.Close.diff(1)
    candles['pchange1Mpct'] = round((candles['pchange1M'] / candles["Close"].shift(1)) * 100, 2)

    # 删除多余列
    candles = candles.drop(columns=["Trades_Count", "BUY_VOL", "BUY_VOL_VAL", "x"])
    # 只返回最新的那根K线数据,fillna仅兼容第一次返回的第一行数据
    return candles.iloc[-1].fillna(0)

symbol = "BTCUSDT"
while True:
    candles = get_live_data(symbol=symbol)
    print(candles)
    time.sleep(60)

补充说明

如果你需要计算的是已经完全收盘的K线的涨跌幅,可以把limit调整为3,取倒数第二根已完成的K线计算,避免当前还在走的未完成K线收盘价波动影响结果。

内容的提问来源于stack exchange,提问作者Mohamed Nagy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:15:03