0

我使用 binance-api 每 1 分钟从币安提取 BTCUSDT 的实时数据,我想计算当前蜡烛收盘价与上一个蜡烛之间的百分比变化,我尝试了以下操作:

def get_live_data(symbol):
    candles = pd.DataFrame(Client.get_klines(symbol=symbol, interval=Client.KLINE_INTERVAL_1MINUTE,
                                             limit=1,
                                             startTime=None,
                                             endTime=None))
    candles.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Close_Time',
                                       'Quote_Volume', 'Trades_Count', 'BUY_VOL', 'BUY_VOL_VAL', 'x']
    candles["Close_Time"] = pd.to_datetime(candles["Close_Time"], unit='ms')
    candles["Date"] = pd.to_datetime(candles["Date"], unit="ms")
    candles["pct_change1M"] = candles.Close

    candles["Open"] = pd.to_numeric(candles["Open"])
    candles["High"] = pd.to_numeric(candles["High"])
    candles["Low"] = pd.to_numeric(candles["Low"])
    candles["Close"] = pd.to_numeric(candles["Close"])
    candles["Volume"] = round(pd.to_numeric(candles["Volume"]))
    candles["Quote_Volume"] = round(pd.to_numeric(candles["Quote_Volume"]))

    candles['pchange1M'] = candles.Close.diff(1).fillna(0)
    candles['pchange1Mpct'] = round((candles['pchange1M']/candles["Close"]) * 100, 2)

    del(candles["Trades_Count"])
    del(candles["BUY_VOL"])
    del(candles["BUY_VOL_VAL"])
    del(candles["x"])

    return candles

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

但列pchange1Mpchange1Mpct始终为零如下:(我已删除不需要的列)

Date                  Close     pct_change1M  pchange1Mpct
2021-08-18 16:45:00   45775.01    0.0            0.0

Date                  Close     pct_change1M  pchange1Mpct
2021-08-18 16:46:00   45785.0      0.0             0.0

有人可以告诉我我错过了什么或我做错了什么吗?

4

1 回答 1

1

看起来你一次拉一排,因为你有limit=1。因此,当您进行比较时,没有什么可以比较的。使用fillna(0),您最终会得到 0 的差异。

于 2021-08-18T17:03:20.480 回答